Disable prepared query caching while doing an upgrade

This commit is contained in:
Robin Appelman 2013-02-26 22:41:48 +01:00
parent f3a8bf9260
commit 47b899e0c8
2 changed files with 15 additions and 3 deletions

View file

@ -4,6 +4,7 @@ $RUNTIME_NOAPPS = true;
require_once '../../lib/base.php'; require_once '../../lib/base.php';
if (OC::checkUpgrade(false)) { if (OC::checkUpgrade(false)) {
\OC_DB::enableCaching(false);
$updateEventSource = new OC_EventSource(); $updateEventSource = new OC_EventSource();
$watcher = new UpdateWatcher($updateEventSource); $watcher = new UpdateWatcher($updateEventSource);
OC_Hook::connect('update', 'success', $watcher, 'success'); OC_Hook::connect('update', 'success', $watcher, 'success');

View file

@ -42,6 +42,7 @@ class OC_DB {
const BACKEND_MDB2=1; const BACKEND_MDB2=1;
static private $preparedQueries = array(); static private $preparedQueries = array();
static private $cachingEnabled = true;
/** /**
* @var MDB2_Driver_Common * @var MDB2_Driver_Common
@ -356,7 +357,7 @@ class OC_DB {
} }
} }
} else { } else {
if (isset(self::$preparedQueries[$query])) { if (isset(self::$preparedQueries[$query]) and self::$cachingEnabled) {
return self::$preparedQueries[$query]; return self::$preparedQueries[$query];
} }
} }
@ -382,7 +383,7 @@ class OC_DB {
} }
$result=new PDOStatementWrapper($result); $result=new PDOStatementWrapper($result);
} }
if (is_null($limit) || $limit == -1) { if ((is_null($limit) || $limit == -1) and self::$cachingEnabled ) {
self::$preparedQueries[$rawQuery] = $result; self::$preparedQueries[$rawQuery] = $result;
} }
return $result; return $result;
@ -915,6 +916,16 @@ class OC_DB {
} }
return $msg; return $msg;
} }
/**
* @param bool $enabled
*/
static public function enableCaching($enabled) {
if (!$enabled) {
self::$preparedQueries = array();
}
self::$cachingEnabled = $enabled;
}
} }
/** /**