Cache: also check if the file id is already in the cache during upgrade

Should solve upgrade issues if only some of the configured storages were migrated previously
remotes/origin/stable5
Robin Appelman 12 years ago
parent 416607e559
commit 56ae4bb6e9
  1. 13
      lib/files/cache/upgrade.php

@ -64,7 +64,7 @@ class Upgrade {
* @param array $data the data for the new cache
*/
function insert($data) {
if (!$this->inCache($data['storage'], $data['path_hash'])) {
if (!$this->inCache($data['storage'], $data['path_hash'], $data['id'])) {
$insertQuery = \OC_DB::prepare('INSERT INTO `*PREFIX*filecache`
( `fileid`, `storage`, `path`, `path_hash`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `encrypted` )
VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)');
@ -78,12 +78,19 @@ class Upgrade {
/**
* @param string $storage
* @param string $pathHash
* @param string $id
* @return bool
*/
function inCache($storage, $pathHash) {
function inCache($storage, $pathHash, $id) {
$query = \OC_DB::prepare('SELECT `fileid` FROM `*PREFIX*filecache` WHERE `storage` = ? AND `path_hash` = ?');
$result = $query->execute(array($storage, $pathHash));
return (bool)$result->fetchRow();
if ($result->fetchRow()) {
return true;
} else {
$query = \OC_DB::prepare('SELECT `fileid` FROM `*PREFIX*filecache` WHERE `fileid` = ?');
$result = $query->execute(array($id));
return (bool)$result->fetchRow();
}
}
/**

Loading…
Cancel
Save