From 89be55a672afe0e09a33d4997ec10c0e833d4885 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Mon, 9 Mar 2015 22:12:31 +0100 Subject: [PATCH] let insertIfNotExist() throw the native DBALException - no need to hide the real exception --- lib/private/db.php | 17 ++--------------- lib/private/db/adapter.php | 17 ++--------------- lib/private/db/adaptersqlite.php | 22 ++++++++-------------- lib/private/db/connection.php | 10 +++++----- lib/private/db/mdb2schemamanager.php | 2 +- lib/public/db.php | 2 +- lib/public/idbconnection.php | 2 +- tests/lib/db.php | 10 +++++----- 8 files changed, 25 insertions(+), 57 deletions(-) diff --git a/lib/private/db.php b/lib/private/db.php index 3993ae2774..c265492669 100644 --- a/lib/private/db.php +++ b/lib/private/db.php @@ -20,8 +20,6 @@ * */ -define('MDB2_SCHEMA_DUMP_STRUCTURE', '1'); - /** * This class manages the access to the database. It basically is a wrapper for * Doctrine with some adaptions. @@ -40,8 +38,7 @@ class OC_DB { * * @return \OC\DB\MDB2SchemaManager */ - private static function getMDB2SchemaManager() - { + private static function getMDB2SchemaManager() { return new \OC\DB\MDB2SchemaManager(\OC::$server->getDatabaseConnection()); } @@ -166,16 +163,6 @@ class OC_DB { return \OC::$server->getDatabaseConnection()->lastInsertId($table); } - /** - * Insert a row if a matching row doesn't exists. - * @param string $table The table to insert into in the form '*PREFIX*tableName' - * @param array $input An array of fieldname/value pairs - * @return boolean number of updated rows - */ - public static function insertIfNotExist($table, $input, $compare = null) { - return \OC::$server->getDatabaseConnection()->insertIfNotExist($table, $input, $compare); - } - /** * Start a transaction */ @@ -205,7 +192,7 @@ class OC_DB { * * TODO: write more documentation */ - public static function getDbStructure( $file, $mode = 0) { + public static function getDbStructure($file) { $schemaManager = self::getMDB2SchemaManager(); return $schemaManager->getDbStructure($file); } diff --git a/lib/private/db/adapter.php b/lib/private/db/adapter.php index ee6898dde8..bd1604caf2 100644 --- a/lib/private/db/adapter.php +++ b/lib/private/db/adapter.php @@ -43,7 +43,7 @@ class Adapter { * insert the @input values when they do not exist yet * @param string $table name * @param array $input key->value pair, key has to be sanitized properly - * @throws \OC\HintException + * @throws \Doctrine\DBAL\DBALException * @return int count of inserted rows */ public function insertIfNotExist($table, $input, $compare = null) { @@ -68,19 +68,6 @@ class Adapter { $query = substr($query, 0, strlen($query) - 5); $query .= ' HAVING COUNT(*) = 0'; - try { - return $this->conn->executeUpdate($query, $inserts); - } catch(\Doctrine\DBAL\DBALException $e) { - $entry = 'DB Error: "'.$e->getMessage() . '"
'; - $entry .= 'Offending command was: ' . $query.'
'; - \OC_Log::write('core', $entry, \OC_Log::FATAL); - $l = \OC::$server->getL10N('lib'); - throw new \OC\HintException( - $l->t('Database Error'), - $l->t('Please contact your system administrator.'), - 0, - $e - ); - } + return $this->conn->executeUpdate($query, $inserts); } } diff --git a/lib/private/db/adaptersqlite.php b/lib/private/db/adaptersqlite.php index 8b3c4ebc83..f93183bee9 100644 --- a/lib/private/db/adaptersqlite.php +++ b/lib/private/db/adaptersqlite.php @@ -18,6 +18,13 @@ class AdapterSqlite extends Adapter { return $statement; } + /** + * @param string $table + * @param array $input + * @param null $compare + * @return int + * @throws \Doctrine\DBAL\DBALException + */ public function insertIfNotExist($table, $input, $compare = null) { if ($compare === null) { $compare = array_keys($input); @@ -40,19 +47,6 @@ class AdapterSqlite extends Adapter { $query = substr($query, 0, strlen($query) - 5); $query .= ')'; - try { - return $this->conn->executeUpdate($query, $inserts); - } catch(\Doctrine\DBAL\DBALException $e) { - $entry = 'DB Error: "'.$e->getMessage() . '"
'; - $entry .= 'Offending command was: ' . $query.'
'; - \OC_Log::write('core', $entry, \OC_Log::FATAL); - $l = \OC::$server->getL10N('lib'); - throw new \OC\HintException( - $l->t('Database Error'), - $l->t('Please contact your system administrator.'), - 0, - $e - ); - } + return $this->conn->executeUpdate($query, $inserts); } } diff --git a/lib/private/db/connection.php b/lib/private/db/connection.php index cc94c862b8..cdbfc94a03 100644 --- a/lib/private/db/connection.php +++ b/lib/private/db/connection.php @@ -152,16 +152,16 @@ class Connection extends \Doctrine\DBAL\Connection implements IDBConnection { } // internal use - public function realLastInsertId($seqName = null) - { + public function realLastInsertId($seqName = null) { return parent::lastInsertId($seqName); } /** - * Insert a row if a matching row doesn't exists. + * Insert a row if a matching row does not exists. * @param string $table. The table to insert into in the form '*PREFIX*tableName' - * @param array $input. An array of fieldname/value pairs - * @throws \OC\HintException + * @param array $input. An array of field name/value pairs + * @param array $compare + * @throws \Doctrine\DBAL\DBALException * @return bool The return value from execute() */ public function insertIfNotExist($table, $input, $compare = null) { diff --git a/lib/private/db/mdb2schemamanager.php b/lib/private/db/mdb2schemamanager.php index 358360d0b4..66c97f9e3b 100644 --- a/lib/private/db/mdb2schemamanager.php +++ b/lib/private/db/mdb2schemamanager.php @@ -35,7 +35,7 @@ class MDB2SchemaManager { * * TODO: write more documentation */ - public function getDbStructure($file, $mode = MDB2_SCHEMA_DUMP_STRUCTURE) { + public function getDbStructure($file) { return \OC_DB_MDB2SchemaWriter::saveSchemaToFile($file, $this->conn); } diff --git a/lib/public/db.php b/lib/public/db.php index 50e519bbe9..d8d81f239b 100644 --- a/lib/public/db.php +++ b/lib/public/db.php @@ -65,7 +65,7 @@ class DB { * */ public static function insertIfNotExist($table, $input, $compare = null) { - return(\OC_DB::insertIfNotExist($table, $input, $compare)); + return \OC::$server->getDatabaseConnection()->insertIfNotExist($table, $input, $compare); } /** diff --git a/lib/public/idbconnection.php b/lib/public/idbconnection.php index 3cc7ff3248..c8a2c5796b 100644 --- a/lib/public/idbconnection.php +++ b/lib/public/idbconnection.php @@ -80,7 +80,7 @@ interface IDBConnection { * Insert a row if a matching row doesn't exists. * @param string $table The table name (will replace *PREFIX*) to perform the replace on. * @param array $input - * @throws \OC\HintException + * @throws \Doctrine\DBAL\DBALException * * The input array if in the form: * diff --git a/tests/lib/db.php b/tests/lib/db.php index 73eef3a4d0..056ce53543 100644 --- a/tests/lib/db.php +++ b/tests/lib/db.php @@ -125,7 +125,7 @@ class Test_DB extends \Test\TestCase { ); foreach($categoryEntries as $entry) { - $result = OC_DB::insertIfNotExist('*PREFIX*'.$this->table3, + $result = \OCP\DB::insertIfNotExist('*PREFIX*'.$this->table3, array( 'uid' => $entry['user'], 'type' => $entry['type'], @@ -148,7 +148,7 @@ class Test_DB extends \Test\TestCase { ); foreach($categoryEntries as $entry) { - $result = OC_DB::insertIfNotExist('*PREFIX*'.$this->table2, + $result = \OCP\DB::insertIfNotExist('*PREFIX*'.$this->table2, array( 'addressbookid' => $entry['addressbookid'], 'fullname' => $entry['fullname'], @@ -180,7 +180,7 @@ class Test_DB extends \Test\TestCase { $this->assertEquals($carddata, $rowset[0]['carddata']); // Try to insert a new row - $result = OC_DB::insertIfNotExist('*PREFIX*'.$this->table2, + $result = \OCP\DB::insertIfNotExist('*PREFIX*'.$this->table2, array( 'fullname' => $fullName, 'uri' => $uri, @@ -199,7 +199,7 @@ class Test_DB extends \Test\TestCase { } public function testInsertIfNotExistsViolating() { - $result = OC_DB::insertIfNotExist('*PREFIX*'.$this->table5, + $result = \OCP\DB::insertIfNotExist('*PREFIX*'.$this->table5, array( 'storage' => 1, 'path_hash' => md5('welcome.txt'), @@ -207,7 +207,7 @@ class Test_DB extends \Test\TestCase { )); $this->assertEquals(1, $result); - $result = OC_DB::insertIfNotExist('*PREFIX*'.$this->table5, + $result = \OCP\DB::insertIfNotExist('*PREFIX*'.$this->table5, array( 'storage' => 1, 'path_hash' => md5('welcome.txt'),