summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2009-12-15 08:30:53 +0000
committerDries Buytaert <dries@buytaert.net>2009-12-15 08:30:53 +0000
commit8b0fc579113af6be4357f881b2d12cd885af3d46 (patch)
treed71521372e49b1418e17298c24e0ecc599f4a9a4 /includes
parentc3080a04019a7c15ad5bb47634be15aae97240d7 (diff)
downloadbrdo-8b0fc579113af6be4357f881b2d12cd885af3d46.tar.gz
brdo-8b0fc579113af6be4357f881b2d12cd885af3d46.tar.bz2
- Patch #360854 by sammys, Crell: added missing db_index_exists(), required to provide proper upgrade path from Drupal 6 to Drupal 7.
Diffstat (limited to 'includes')
-rw-r--r--includes/database/database.inc12
-rw-r--r--includes/database/mysql/schema.inc24
-rw-r--r--includes/database/pgsql/schema.inc24
-rw-r--r--includes/database/schema.inc12
-rw-r--r--includes/database/sqlite/schema.inc16
5 files changed, 62 insertions, 26 deletions
diff --git a/includes/database/database.inc b/includes/database/database.inc
index fb324eded..e972258ed 100644
--- a/includes/database/database.inc
+++ b/includes/database/database.inc
@@ -2373,6 +2373,18 @@ function db_field_names($fields) {
}
/**
+ * Check if an index exists.
+ *
+ * @param $name
+ * Index name.
+ * @return
+ * TRUE if the given index exists, otherwise FALSE.
+ */
+function db_index_exists($name) {
+ return Database::getConnection()->schema()->indexExists($name);
+}
+
+/**
* Check if a table exists.
*/
function db_table_exists($table) {
diff --git a/includes/database/mysql/schema.inc b/includes/database/mysql/schema.inc
index 4fa20abf8..b87bb16d3 100644
--- a/includes/database/mysql/schema.inc
+++ b/includes/database/mysql/schema.inc
@@ -269,11 +269,11 @@ class DatabaseSchema_mysql extends DatabaseSchema {
}
public function renameTable($table, $new_name) {
- $this->connection->query('ALTER TABLE {' . $table . '} RENAME TO {' . $new_name . '}');
+ $this->connection->query('ALTER TABLE {' . $table . '} RENAME TO {' . $new_name . '}');
}
public function dropTable($table) {
- $this->connection->query('DROP TABLE {' . $table . '}');
+ $this->connection->query('DROP TABLE {' . $table . '}');
}
public function addField($table, $field, $spec, $keys_new = array()) {
@@ -300,7 +300,7 @@ class DatabaseSchema_mysql extends DatabaseSchema {
}
public function dropField($table, $field) {
- $this->connection->query('ALTER TABLE {' . $table . '} DROP `' . $field . '`');
+ $this->connection->query('ALTER TABLE {' . $table . '} DROP `' . $field . '`');
}
public function fieldSetDefault($table, $field, $default) {
@@ -315,31 +315,35 @@ class DatabaseSchema_mysql extends DatabaseSchema {
}
public function fieldSetNoDefault($table, $field) {
- $this->connection->query('ALTER TABLE {' . $table . '} ALTER COLUMN `' . $field . '` DROP DEFAULT');
+ $this->connection->query('ALTER TABLE {' . $table . '} ALTER COLUMN `' . $field . '` DROP DEFAULT');
+ }
+
+ public function indexExists($table, $name) {
+ return $this->connection->query('SHOW INDEX FROM {' . $table . "} WHERE key_name = '$name'")->fetchField();
}
public function addPrimaryKey($table, $fields) {
- $this->connection->query('ALTER TABLE {' . $table . '} ADD PRIMARY KEY (' . $this->createKeySql($fields) . ')');
+ $this->connection->query('ALTER TABLE {' . $table . '} ADD PRIMARY KEY (' . $this->createKeySql($fields) . ')');
}
public function dropPrimaryKey($table) {
- $this->connection->query('ALTER TABLE {' . $table . '} DROP PRIMARY KEY');
+ $this->connection->query('ALTER TABLE {' . $table . '} DROP PRIMARY KEY');
}
public function addUniqueKey($table, $name, $fields) {
- $this->connection->query('ALTER TABLE {' . $table . '} ADD UNIQUE KEY `' . $name . '` (' . $this->createKeySql($fields) . ')');
+ $this->connection->query('ALTER TABLE {' . $table . '} ADD UNIQUE KEY `' . $name . '` (' . $this->createKeySql($fields) . ')');
}
public function dropUniqueKey($table, $name) {
- $this->connection->query('ALTER TABLE {' . $table . '} DROP KEY `' . $name . '`');
+ $this->connection->query('ALTER TABLE {' . $table . '} DROP KEY `' . $name . '`');
}
public function addIndex($table, $name, $fields) {
- $this->connection->query('ALTER TABLE {' . $table . '} ADD INDEX `' . $name . '` (' . $this->createKeySql($fields) . ')');
+ $this->connection->query('ALTER TABLE {' . $table . '} ADD INDEX `' . $name . '` (' . $this->createKeySql($fields) . ')');
}
public function dropIndex($table, $name) {
- $this->connection->query('ALTER TABLE {' . $table . '} DROP INDEX `' . $name . '`');
+ $this->connection->query('ALTER TABLE {' . $table . '} DROP INDEX `' . $name . '`');
}
public function changeField($table, $field, $field_new, $spec, $keys_new = array()) {
diff --git a/includes/database/pgsql/schema.inc b/includes/database/pgsql/schema.inc
index e2aefe108..578c074bb 100644
--- a/includes/database/pgsql/schema.inc
+++ b/includes/database/pgsql/schema.inc
@@ -275,11 +275,11 @@ class DatabaseSchema_pgsql extends DatabaseSchema {
}
function renameTable($table, $new_name) {
- $this->connection->query('ALTER TABLE {' . $table . '} RENAME TO {' . $new_name . '}');
+ $this->connection->query('ALTER TABLE {' . $table . '} RENAME TO {' . $new_name . '}');
}
public function dropTable($table) {
- $this->connection->query('DROP TABLE {' . $table . '}');
+ $this->connection->query('DROP TABLE {' . $table . '}');
}
/**
@@ -320,14 +320,14 @@ class DatabaseSchema_pgsql extends DatabaseSchema {
->execute();
}
if ($fixnull) {
- $this->connection->query("ALTER TABLE {" . $table . "} ALTER $field SET NOT NULL");
+ $this->connection->query("ALTER TABLE {" . $table . "} ALTER $field SET NOT NULL");
}
if (isset($new_keys)) {
$this->_createKeys($table, $new_keys);
}
// Add column comment.
if (!empty($spec['description'])) {
- $this->connection->query('COMMENT ON COLUMN {' . $table . '}.' . $field . ' IS ' . $this->prepareComment($spec['description']));
+ $this->connection->query('COMMENT ON COLUMN {' . $table . '}.' . $field . ' IS ' . $this->prepareComment($spec['description']));
}
}
@@ -340,7 +340,7 @@ class DatabaseSchema_pgsql extends DatabaseSchema {
* The field to be dropped.
*/
public function dropField($table, $field) {
- $this->connection->query('ALTER TABLE {' . $table . '} DROP COLUMN "' . $field . '"');
+ $this->connection->query('ALTER TABLE {' . $table . '} DROP COLUMN "' . $field . '"');
}
/**
@@ -373,7 +373,11 @@ class DatabaseSchema_pgsql extends DatabaseSchema {
* The field to be altered.
*/
public function fieldSetNoDefault($table, $field) {
- $this->connection->query('ALTER TABLE {' . $table . '} ALTER COLUMN "' . $field . '" DROP DEFAULT');
+ $this->connection->query('ALTER TABLE {' . $table . '} ALTER COLUMN "' . $field . '" DROP DEFAULT');
+ }
+
+ public function indexExists($table, $name) {
+ return $this->connection->query("SELECT COUNT(indexname) FROM pg_indexes WHERE indexname = '$name'")->fetchField();
}
/**
@@ -385,7 +389,7 @@ class DatabaseSchema_pgsql extends DatabaseSchema {
* Fields for the primary key.
*/
public function addPrimaryKey($table, $fields) {
- $this->connection->query('ALTER TABLE {' . $table . '} ADD PRIMARY KEY (' . implode(',', $fields) . ')');
+ $this->connection->query('ALTER TABLE {' . $table . '} ADD PRIMARY KEY (' . implode(',', $fields) . ')');
}
/**
@@ -395,7 +399,7 @@ class DatabaseSchema_pgsql extends DatabaseSchema {
* The table to be altered.
*/
public function dropPrimaryKey($table) {
- $this->connection->query('ALTER TABLE {' . $table . '} DROP CONSTRAINT {' . $table . '}_pkey');
+ $this->connection->query('ALTER TABLE {' . $table . '} DROP CONSTRAINT {' . $table . '}_pkey');
}
/**
@@ -437,7 +441,7 @@ class DatabaseSchema_pgsql extends DatabaseSchema {
* An array of field names.
*/
public function addIndex($table, $name, $fields) {
- $this->connection->query($this->_createIndexSql($table, $name, $fields));
+ $this->connection->query($this->_createIndexSql($table, $name, $fields));
}
/**
@@ -534,7 +538,7 @@ class DatabaseSchema_pgsql extends DatabaseSchema {
$this->connection->query("UPDATE {" . $table . "} SET $field_new = CAST(" . $field . "_old as " . $typecast . ")");
if ($not_null) {
- $this->connection->query("ALTER TABLE {" . $table . "} ALTER $field_new SET NOT NULL");
+ $this->connection->query("ALTER TABLE {" . $table . "} ALTER $field_new SET NOT NULL");
}
$this->dropField($table, $field . '_old');
diff --git a/includes/database/schema.inc b/includes/database/schema.inc
index 61f698685..af7ed4dbe 100644
--- a/includes/database/schema.inc
+++ b/includes/database/schema.inc
@@ -338,6 +338,18 @@ abstract class DatabaseSchema implements QueryPlaceholderInterface {
abstract public function fieldSetNoDefault($table, $field);
/**
+ * Checks if an index exists.
+ *
+ * @param $table
+ * Name of the table.
+ * @param $name
+ * Name of the index.
+ * @return
+ * Index name if the table exists. Otherwise FALSE.
+ */
+ abstract public function indexExists($table, $name);
+
+ /**
* Add a primary key.
*
* @param $table
diff --git a/includes/database/sqlite/schema.inc b/includes/database/sqlite/schema.inc
index 893f54be7..ff3f35c68 100644
--- a/includes/database/sqlite/schema.inc
+++ b/includes/database/sqlite/schema.inc
@@ -220,7 +220,7 @@ class DatabaseSchema_sqlite extends DatabaseSchema {
* The new name for the table.
*/
public function renameTable($table, $new_name) {
- $this->connection->query('ALTER TABLE {' . $table . '} RENAME TO {' . $new_name . '}');
+ $this->connection->query('ALTER TABLE {' . $table . '} RENAME TO {' . $new_name . '}');
}
/**
@@ -230,7 +230,7 @@ class DatabaseSchema_sqlite extends DatabaseSchema {
* The table to be dropped.
*/
public function dropTable($table) {
- $this->connection->query('DROP TABLE {' . $table . '}');
+ $this->connection->query('DROP TABLE {' . $table . '}');
}
/**
@@ -429,10 +429,14 @@ class DatabaseSchema_sqlite extends DatabaseSchema {
$schema['indexes'][$name] = $fields;
$statements = $this->createIndexSql($table, $schema);
foreach ($statements as $statement) {
- $this->connection->query($statement);
+ $this->connection->query($statement);
}
}
+ public function indexExists($table, $name) {
+ return ($this->connection->query("PRAGMA index_info($name)")->fetchField() != '');
+ }
+
/**
* Drop an index.
*
@@ -442,7 +446,7 @@ class DatabaseSchema_sqlite extends DatabaseSchema {
* The name of the index.
*/
public function dropIndex($table, $name) {
- $this->connection->query('DROP INDEX ' . '{' . $table . '}_' . $name);
+ $this->connection->query('DROP INDEX ' . '{' . $table . '}_' . $name);
}
/**
@@ -459,7 +463,7 @@ class DatabaseSchema_sqlite extends DatabaseSchema {
$schema['unique keys'][$name] = $fields;
$statements = $this->createIndexSql($table, $schema);
foreach ($statements as $statement) {
- $this->connection->query($statement);
+ $this->connection->query($statement);
}
}
@@ -472,7 +476,7 @@ class DatabaseSchema_sqlite extends DatabaseSchema {
* The name of the key.
*/
public function dropUniqueKey($table, $name) {
- $this->connection->query('DROP INDEX ' . '{' . $table . '}_' . $name);
+ $this->connection->query('DROP INDEX ' . '{' . $table . '}_' . $name);
}
/**