Fix for alterSchema
authorGuillaume (ioguix) de Rorthais <ioguix@free.fr>
Wed, 29 Oct 2008 03:54:09 +0000 (23:54 -0400)
committerGuillaume (ioguix) de Rorthais <ioguix@free.fr>
Wed, 29 Oct 2008 03:54:09 +0000 (23:54 -0400)
- pg 7.3 can not alter a schema !
- fix a bug on alter schema owner when alter schema name in the same time

classes/database/Postgres.php
classes/database/Postgres73.php
schemas.php

index be3bfd885ed5e81d55cb1d3fa3431958dfc5674e..797d144d21cc211f35d740c60d53ab551b8b6e01 100755 (executable)
@@ -1004,9 +1004,10 @@ class Postgres extends ADODB_base {
                        return -1;
                }
 
-               // Only if the name has changed
-               if ($name != $schemaname) {
-                       $sql = "ALTER SCHEMA \"{$schemaname}\" RENAME TO \"{$name}\"";
+               $schema_rs = $this->getSchemaByName($schemaname);
+               /* Only if the owner change */
+               if ($schema_rs->fields['ownername'] != $owner) {
+                       $sql = "ALTER SCHEMA \"{$schemaname}\" OWNER TO \"{$owner}\"";
                        $status = $this->execute($sql);
                        if ($status != 0) {
                                $this->rollbackTransaction();
@@ -1014,10 +1015,9 @@ class Postgres extends ADODB_base {
                        }
                }
 
-               $schema_rs = $this->getSchemaByName($schemaname);
-               /* Only if the owner change */
-               if ($schema_rs->fields['ownername'] != $owner) {
-                       $sql = "ALTER SCHEMA \"{$schemaname}\" OWNER TO \"{$owner}\"";
+               // Only if the name has changed
+               if ($name != $schemaname) {
+                       $sql = "ALTER SCHEMA \"{$schemaname}\" RENAME TO \"{$name}\"";
                        $status = $this->execute($sql);
                        if ($status != 0) {
                                $this->rollbackTransaction();
@@ -7398,6 +7398,7 @@ class Postgres extends ADODB_base {
        function hasAlterColumnType() { return true; }
        function hasAlterDatabaseOwner() { return true; }
        function hasAlterDatabaseRename() { return true; }
+       function hasAlterSchema() { return true; }
        function hasAlterSchemaOwner() { return true; }
        function hasAlterSequenceOwner() { return true; }
        function hasAlterSequenceProps() { return true; }
index d72ad8bfe11bf179e63aa56dea84ac3a2642407e..e32de899cadec99148bd32edc8cae2755fe5e457 100644 (file)
@@ -529,6 +529,7 @@ class Postgres73 extends Postgres74 {
 
        function hasAlterAggregate() { return false; }
        function hasAlterDatabaseRename() { return false; }
+       function hasAlterSchema() { return false; }
        function hasAlterSequenceProps() { return false; }
        function hasCreateTableLike() {return false;}
        function hasDomainConstraints() { return false; }
index ad22fd5dfac1f1e0763adf91594c9d23a7db4c55..ff3914f6afb33526a31e72ccf3edc993351a332f 100755 (executable)
@@ -70,6 +70,8 @@
                                ),
                        );
 
+                       if (!$data->hasAlterSchema()) unset($actions['alter']);
+
                        $misc->printTable($schemas, $columns, $actions, $lang['strnoschemas']);
 
                        echo "<p><a class=\"navlink\" href=\"schemas.php?action=create&amp;{$misc->href}\">{$lang['strcreateschema']}</a></p>\n";
                                        }
                                        echo "</select></td></tr>\n";
                        }
+                       else 
+                               echo "<input name=\"owner\" value=\"{$_POST['owner']}\" type=\"hidden\" />";
 
                        echo "\t<tr>\n";
                        echo "\t\t<th class=\"data\">{$lang['strcomment']}</th>\n";