]> source.dussan.org Git - nextcloud-server.git/commitdiff
Remove implicit prepared statement cache and get the connection from the server conta...
authorRobin Appelman <icewind@owncloud.com>
Wed, 10 Sep 2014 11:11:04 +0000 (13:11 +0200)
committerRobin Appelman <icewind@owncloud.com>
Wed, 22 Oct 2014 10:26:43 +0000 (12:26 +0200)
core/command/maintenance/repair.php
lib/private/db.php
lib/private/db/connection.php
lib/private/db/connectionfactory.php
lib/private/preferences.php
lib/private/updater.php

index 9af5996b2e1899424475cf5af7dc66e7077cd842..7c0cf71d3b611af99a618259023e6db00d98903b 100644 (file)
@@ -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);
 
index ba069977d35b799cb327efb2882dc2a253678ea9..381ed93e81efcebef6d074bf83f204a48e9f2b88 100644 (file)
@@ -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();
        }
 
        /**
@@ -414,18 +409,6 @@ class OC_DB {
                return '';
        }
 
-       /**
-        * @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
         *
index f91175511b052348dbb5d383ca2340cefe47053c..a6cdf8588991d003014136718e4ab086fe6da343 100644 (file)
@@ -24,13 +24,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.
         *
@@ -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);
        }
 
        /**
index 589a1c0affd7ba061c0e76eacb2228ddaaccf30a..a5260c1a4c5517dec228646763122ddd59ac9b9f 100644 (file)
@@ -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;
        }
 
index a849cc23e1a695c3af76f6b3bacb4c2f3a0408d9..cdaa207449d8b2b186190d7cbbcc8190d8702c48 100644 (file)
@@ -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;
        }
 
index 38a281cd2f8aa4c75a5ae634b7fb25833faf7b90..c4c70a3cc4a6b75d86dfbc26b93ff71025ca3b25 100644 (file)
@@ -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');