Commit 32273990 authored by webchick's avatar webchick

Issue #2061879 by Palashvijay4O, chx: Remove Schema::copyTable

parent 7ef51657
......@@ -739,23 +739,6 @@ function db_rename_table($table, $new_name) {
return Database::getConnection()->schema()->renameTable($table, $new_name);
}
/**
* Copies the structure of a table.
*
* @param string $source
* The name of the table to be copied.
* @param string $destination
* The name for the new table.
*
* @return \Drupal\Core\Database\StatementInterface
* The result of the executed query.
*
* @see \Drupal\Core\Database\Schema::copyTable()
*/
function db_copy_table_schema($source, $destination) {
return Database::getConnection()->schema()->copyTable($source, $destination);
}
/**
* Drops a table.
*
......
......@@ -102,13 +102,6 @@ public function __clone() {
throw new \Exception(sprintf('Unsupported method "%s"', __METHOD__));
}
/**
* {@inheritdoc}
*/
public function copyTable($source, $destination) {
throw new \Exception(sprintf('Unsupported method "%s"', __METHOD__));
}
/**
* {@inheritdoc}
*/
......
......@@ -308,21 +308,6 @@ public function dropTable($table) {
return TRUE;
}
/**
* {@inheritdoc}
*/
public function copyTable($source, $destination) {
if (!$this->tableExists($source)) {
throw new SchemaObjectDoesNotExistException(String::format("Cannot copy @source to @destination: table @source doesn't exist.", array('@source' => $source, '@destination' => $destination)));
}
if ($this->tableExists($destination)) {
throw new SchemaObjectExistsException(String::format("Cannot copy @source to @destination: table @destination already exists.", array('@source' => $source, '@destination' => $destination)));
}
$info = $this->getPrefixInfo($destination);
return $this->connection->query('CREATE TABLE `' . $info['table'] . '` LIKE {' . $source . '}');
}
public function addField($table, $field, $spec, $keys_new = array()) {
if (!$this->tableExists($table)) {
throw new SchemaObjectDoesNotExistException(t("Cannot add field @table.@field: table doesn't exist.", array('@field' => $field, '@table' => $table)));
......
......@@ -433,16 +433,6 @@ function renameTable($table, $new_name) {
$this->connection->query('ALTER TABLE {' . $table . '} RENAME TO ' . $prefixInfo['table']);
}
/**
* {@inheritdoc}
*/
public function copyTable($source, $destination) {
// @TODO The server is likely going to rename indexes and constraints
// during the copy process, and it will not match our
// table_name + constraint name convention anymore.
throw new \Exception('Not implemented, see https://drupal.org/node/2061879');
}
public function dropTable($table) {
if (!$this->tableExists($table)) {
return FALSE;
......
......@@ -273,20 +273,6 @@ public function renameTable($table, $new_name) {
}
}
/**
* {@inheritdoc}
*/
public function copyTable($source, $destination) {
if (!$this->tableExists($source)) {
throw new SchemaObjectDoesNotExistException(String::format("Cannot copy @source to @destination: table @source doesn't exist.", array('@source' => $source, '@destination' => $destination)));
}
if ($this->tableExists($destination)) {
throw new SchemaObjectExistsException(String::format("Cannot copy @source to @destination: table @destination already exists.", array('@source' => $source, '@destination' => $destination)));
}
$this->createTable($destination, $this->introspectSchema($source));
}
public function dropTable($table) {
if (!$this->tableExists($table)) {
return FALSE;
......
......@@ -405,24 +405,6 @@ public function fieldExists($table, $column) {
*/
abstract public function dropTable($table);
/**
* Copies the table schema.
*
* @param string $source
* The name of the table to be used as source.
* @param string $destination
* The name of the table to be used as destination.
*
* @return \Drupal\Core\Database\StatementInterface
* The result of the executed query.
*
* @throws \Drupal\Core\Database\SchemaObjectExistsException
* Thrown when the source table does not exist.
* @throws \Drupal\Core\Database\SchemaObjectDoesNotExistException
* Thrown when the destination table already exists.
*/
abstract public function copyTable($source, $destination);
/**
* Add a new field to a table.
*
......
......@@ -91,38 +91,6 @@ function testSchema() {
$index_exists = Database::getConnection()->schema()->indexExists('test_table2', 'test_field');
$this->assertTrue($index_exists, 'Index was renamed.');
// Copy the schema of the table.
db_copy_table_schema('test_table2', 'test_table3');
// Index should be copied.
$index_exists = Database::getConnection()->schema()->indexExists('test_table3', 'test_field');
$this->assertTrue($index_exists, 'Index was copied.');
// Data should still exist on the old table but not on the new one.
$count = db_select('test_table2')->countQuery()->execute()->fetchField();
$this->assertEqual($count, 1, 'The old table still has its content.');
$count = db_select('test_table3')->countQuery()->execute()->fetchField();
$this->assertEqual($count, 0, 'The new table has no content.');
// Ensure that the proper exceptions are thrown for db_copy_table_schema().
$fail = FALSE;
try {
db_copy_table_schema('test_table4', 'test_table5');
}
catch (SchemaObjectDoesNotExistException $e) {
$fail = TRUE;
}
$this->assertTrue($fail, 'Ensure that db_copy_table_schema() throws an exception when the source table does not exist.');
$fail = FALSE;
try {
db_copy_table_schema('test_table2', 'test_table3');
}
catch (SchemaObjectExistsException $e) {
$fail = TRUE;
}
$this->assertTrue($fail, 'Ensure that db_copy_table_schema() throws an exception when the destination table already exists.');
// We need the default so that we can insert after the rename.
db_field_set_default('test_table2', 'test_field', 0);
$this->assertFalse($this->tryInsert(), 'Insert into the old table failed.');
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment