Permalink
Browse files

Create rename field statements in postgres

Refs #3622
  • Loading branch information...
1 parent 1b22d48 commit fbb1a812dda97f77d59ca012bffa2e0f4e5a4eee @nojimage nojimage committed with markstory Feb 13, 2013
@@ -526,6 +526,12 @@ public function alterSchema($compare, $table = null) {
$default = isset($col['default']) ? $col['default'] : null;
$nullable = isset($col['null']) ? $col['null'] : null;
unset($col['default'], $col['null']);
+ if ($field !== $col['name']) {
+ $newName = $this->name($col['name']);
+ $out .= "\tRENAME {$fieldName} TO {$newName};\n";
+ $out .= 'ALTER TABLE ' . $this->fullTableName($curTable) . " \n";
+ $fieldName = $newName;
+ }
$colList[] = 'ALTER COLUMN ' . $fieldName . ' TYPE ' . str_replace(array($fieldName, 'NOT NULL'), '', $this->buildColumn($col));
if (isset($nullable)) {
$nullable = ($nullable) ? 'DROP NOT NULL' : 'SET NOT NULL';
@@ -740,6 +740,21 @@ public function testAlterIndexes() {
}
/**
+ * Test the alterSchema RENAME statements
+ *
+ * @return void
+ */
+ public function testAlterSchemaRenameTo() {
+ $query = $this->Dbo->alterSchema(array(
+ 'posts' => array('change' => array('title' => array('name' => 'subject', 'type' => 'string', 'null' => false)))
+ ));
+ $this->assertRegExp('/RENAME "title" TO "subject";/i', $query);
+ $this->assertRegExp('/ALTER COLUMN "subject" TYPE /i', $query);
+ $this->assertNotRegExp('/;\n\tALTER COLUMN "subject" TYPE /i', $query);
+ $this->assertNotRegExp('/ALTER COLUMN "title" TYPE "subject"/i', $query);
+ }
+
+/**
* Test it is possible to use virtual field with postgresql
*
* @return void

1 comment on commit fbb1a81

Contributor

kaz29 commented on fbb1a81 Apr 27, 2013

👍

Please sign in to comment.