summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobin Appelman <icewind@owncloud.com>2014-09-10 13:11:04 +0200
committerRobin Appelman <icewind@owncloud.com>2014-10-22 12:26:43 +0200
commitd4e929c37a70291e33c9a686e6e5576bd2a3dd86 (patch)
tree80d628f8f3bd231bd0dcefd1b71529f28311f9e0
parent97a6f5c46b508cca2c6b55c062945fee5da7f834 (diff)
downloadnextcloud-server-d4e929c37a70291e33c9a686e6e5576bd2a3dd86.tar.gz
nextcloud-server-d4e929c37a70291e33c9a686e6e5576bd2a3dd86.zip
Remove implicit prepared statement cache and get the connection from the server container in \OC_DB
-rw-r--r--core/command/maintenance/repair.php4
-rw-r--r--lib/private/db.php35
-rw-r--r--lib/private/db/connection.php16
-rw-r--r--lib/private/db/connectionfactory.php13
-rw-r--r--lib/private/preferences.php6
-rw-r--r--lib/private/updater.php1
6 files changed, 13 insertions, 62 deletions
diff --git a/core/command/maintenance/repair.php b/core/command/maintenance/repair.php
index 9af5996b2e1..7c0cf71d3b6 100644
--- a/core/command/maintenance/repair.php
+++ b/core/command/maintenance/repair.php
@@ -35,10 +35,6 @@ class Repair extends Command {
}
protected function execute(InputInterface $input, OutputInterface $output) {
- // TODO: inject DB connection/factory when possible
- $connection = \OC_DB::getConnection();
- $connection->disableQueryStatementCaching();
-
$maintenanceMode = $this->config->getValue('maintenance', false);
$this->config->setValue('maintenance', true);
diff --git a/lib/private/db.php b/lib/private/db.php
index ba069977d35..381ed93e81e 100644
--- a/lib/private/db.php
+++ b/lib/private/db.php
@@ -110,10 +110,9 @@ class OC_DB {
* The existing database connection is closed and connected again
*/
public static function reconnect() {
- if(self::$connection) {
- self::$connection->close();
- self::$connection->connect();
- }
+ $connection = \OC::$server->getDatabaseConnection();
+ $connection->close();
+ $connection->connect();
}
/**
@@ -146,7 +145,7 @@ class OC_DB {
* SQL query via Doctrine prepare(), needs to be execute()'d!
*/
static public function prepare( $query , $limit = null, $offset = null, $isManipulation = null) {
- self::connect();
+ $connection = \OC::$server->getDatabaseConnection();
if ($isManipulation === null) {
//try to guess, so we return the number of rows on manipulations
@@ -155,7 +154,7 @@ class OC_DB {
// return the result
try {
- $result = self::$connection->prepare($query, $limit, $offset);
+ $result =$connection->prepare($query, $limit, $offset);
} catch (\Doctrine\DBAL\DBALException $e) {
throw new \DatabaseException($e->getMessage(), $query);
}
@@ -252,8 +251,7 @@ class OC_DB {
* cause trouble!
*/
public static function insertid($table=null) {
- self::connect();
- return self::$connection->lastInsertId($table);
+ return \OC::$server->getDatabaseConnection()->lastInsertId($table);
}
/**
@@ -263,24 +261,21 @@ class OC_DB {
* @return boolean number of updated rows
*/
public static function insertIfNotExist($table, $input) {
- self::connect();
- return self::$connection->insertIfNotExist($table, $input);
+ return \OC::$server->getDatabaseConnection()->insertIfNotExist($table, $input);
}
/**
* Start a transaction
*/
public static function beginTransaction() {
- self::connect();
- self::$connection->beginTransaction();
+ return \OC::$server->getDatabaseConnection()->beginTransaction();
}
/**
* Commit the database changes done during a transaction that is in progress
*/
public static function commit() {
- self::connect();
- self::$connection->commit();
+ return \OC::$server->getDatabaseConnection()->commit();
}
/**
@@ -415,18 +410,6 @@ class OC_DB {
}
/**
- * @param bool $enabled
- */
- static public function enableCaching($enabled) {
- self::connect();
- if ($enabled) {
- self::$connection->enableQueryStatementCaching();
- } else {
- self::$connection->disableQueryStatementCaching();
- }
- }
-
- /**
* Checks if a table exists in the database - the database prefix will be prepended
*
* @param string $table
diff --git a/lib/private/db/connection.php b/lib/private/db/connection.php
index f91175511b0..a6cdf858899 100644
--- a/lib/private/db/connection.php
+++ b/lib/private/db/connection.php
@@ -25,13 +25,6 @@ class Connection extends \Doctrine\DBAL\Connection implements IDBConnection {
protected $adapter;
/**
- * @var \Doctrine\DBAL\Driver\Statement[] $preparedQueries
- */
- protected $preparedQueries = array();
-
- protected $cachingQueryStatementEnabled = true;
-
- /**
* Initializes a new instance of the Connection class.
*
* @param array $params The connection parameters.
@@ -70,9 +63,6 @@ class Connection extends \Doctrine\DBAL\Connection implements IDBConnection {
$platform = $this->getDatabasePlatform();
$statement = $platform->modifyLimitQuery($statement, $limit, $offset);
} else {
- if (isset($this->preparedQueries[$statement]) && $this->cachingQueryStatementEnabled) {
- return $this->preparedQueries[$statement];
- }
$origStatement = $statement;
}
$statement = $this->replaceTablePrefix($statement);
@@ -81,11 +71,7 @@ class Connection extends \Doctrine\DBAL\Connection implements IDBConnection {
if(\OC_Config::getValue( 'log_query', false)) {
\OC_Log::write('core', 'DB prepare : '.$statement, \OC_Log::DEBUG);
}
- $result = parent::prepare($statement);
- if (is_null($limit) && $this->cachingQueryStatementEnabled) {
- $this->preparedQueries[$origStatement] = $result;
- }
- return $result;
+ return parent::prepare($statement);
}
/**
diff --git a/lib/private/db/connectionfactory.php b/lib/private/db/connectionfactory.php
index 589a1c0affd..a5260c1a4c5 100644
--- a/lib/private/db/connectionfactory.php
+++ b/lib/private/db/connectionfactory.php
@@ -98,19 +98,6 @@ class ConnectionFactory {
new \Doctrine\DBAL\Configuration(),
$eventManager
);
- switch ($normalizedType) {
- case 'sqlite3':
- // Sqlite doesn't handle query caching and schema changes
- // TODO: find a better way to handle this
- /** @var $connection \OC\DB\Connection */
- $connection->disableQueryStatementCaching();
- break;
- case 'oci':
- // oracle seems to have issues with cached statements which have been closed
- /** @var $connection \OC\DB\Connection */
- $connection->disableQueryStatementCaching();
- break;
- }
return $connection;
}
diff --git a/lib/private/preferences.php b/lib/private/preferences.php
index a849cc23e1a..cdaa207449d 100644
--- a/lib/private/preferences.php
+++ b/lib/private/preferences.php
@@ -36,7 +36,7 @@
namespace OC;
-use \OC\DB\Connection;
+use OCP\IDBConnection;
/**
@@ -61,9 +61,9 @@ class Preferences {
protected $cache = array();
/**
- * @param \OC\DB\Connection $conn
+ * @param \OCP\IDBConnection $conn
*/
- public function __construct(Connection $conn) {
+ public function __construct(IDBConnection $conn) {
$this->conn = $conn;
}
diff --git a/lib/private/updater.php b/lib/private/updater.php
index 38a281cd2f8..c4c70a3cc4a 100644
--- a/lib/private/updater.php
+++ b/lib/private/updater.php
@@ -129,7 +129,6 @@ class Updater extends BasicEmitter {
* @return bool true if the operation succeeded, false otherwise
*/
public function upgrade() {
- \OC_DB::enableCaching(false);
\OC_Config::setValue('maintenance', true);
$installedVersion = \OC_Config::getValue('version', '0.0.0');