diff --git a/lib/private/db.php b/lib/private/db.php index 59d61ffa29..9b904a1518 100644 --- a/lib/private/db.php +++ b/lib/private/db.php @@ -41,19 +41,6 @@ class DatabaseException extends Exception { * Doctrine with some adaptions. */ class OC_DB { - /** - * @var \OC\DB\Connection $connection - */ - static private $connection; //the preferred connection to use, only Doctrine - - /** - * The existing database connection is closed and connected again - */ - public static function reconnect() { - $connection = \OC::$server->getDatabaseConnection(); - $connection->close(); - $connection->connect(); - } /** * @return \OCP\IDBConnection @@ -69,7 +56,7 @@ class OC_DB { */ private static function getMDB2SchemaManager() { - return new \OC\DB\MDB2SchemaManager(self::getConnection()); + return new \OC\DB\MDB2SchemaManager(\OC::$server->getDatabaseConnection()); } /** @@ -282,17 +269,17 @@ class OC_DB { * @param string $tableName the table to drop */ public static function dropTable($tableName) { - + $connection = \OC::$server->getDatabaseConnection(); $tableName = OC_Config::getValue('dbtableprefix', 'oc_' ) . trim($tableName); - self::$connection->beginTransaction(); + $connection->beginTransaction(); - $platform = self::$connection->getDatabasePlatform(); + $platform = $connection->getDatabasePlatform(); $sql = $platform->getDropTableSQL($platform->quoteIdentifier($tableName)); - self::$connection->query($sql); + $connection->executeQuery($sql); - self::$connection->commit(); + $connection->commit(); } /** @@ -332,8 +319,8 @@ class OC_DB { } public static function getErrorCode($error) { - $code = self::$connection->errorCode(); - return $code; + $connection = \OC::$server->getDatabaseConnection(); + return $connection->errorCode(); } /** * returns the error code and message as a string for logging @@ -342,10 +329,8 @@ class OC_DB { * @return string */ public static function getErrorMessage($error) { - if (self::$connection) { - return self::$connection->getError(); - } - return ''; + $connection = \OC::$server->getDatabaseConnection(); + return $connection->getError(); } /** diff --git a/lib/private/db/mdb2schemamanager.php b/lib/private/db/mdb2schemamanager.php index a07c421b9b..fb3230e93a 100644 --- a/lib/private/db/mdb2schemamanager.php +++ b/lib/private/db/mdb2schemamanager.php @@ -21,7 +21,7 @@ class MDB2SchemaManager { protected $conn; /** - * @param \OC\DB\Connection $conn + * @param \OCP\IDBConnection $conn */ public function __construct($conn) { $this->conn = $conn; @@ -154,7 +154,8 @@ class MDB2SchemaManager { $this->conn->commit(); if ($this->conn->getDatabasePlatform() instanceof SqlitePlatform) { - \OC_DB::reconnect(); + $this->conn->close(); + $this->conn->connect(); } return true; } diff --git a/lib/public/idbconnection.php b/lib/public/idbconnection.php index d7cce2e818..ce17d293e8 100644 --- a/lib/public/idbconnection.php +++ b/lib/public/idbconnection.php @@ -150,4 +150,12 @@ interface IDBConnection { * @return string The quoted parameter. */ public function quote($input, $type = \PDO::PARAM_STR); + + /** + * Gets the DatabasePlatform instance that provides all the metadata about + * the platform this driver connects to. + * + * @return \Doctrine\DBAL\Platforms\AbstractPlatform The database platform. + */ + public function getDatabasePlatform(); }