From 358458f61b147fe76ea9d5d57dab4ab7e5deeacb Mon Sep 17 00:00:00 2001 From: "Guillaume (ioguix) de Rorthais" Date: Tue, 28 Oct 2008 23:54:09 -0400 Subject: [PATCH] Fix for alterSchema - 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 | 15 ++++++++------- classes/database/Postgres73.php | 1 + schemas.php | 4 ++++ 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/classes/database/Postgres.php b/classes/database/Postgres.php index be3bfd88..797d144d 100755 --- a/classes/database/Postgres.php +++ b/classes/database/Postgres.php @@ -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; } diff --git a/classes/database/Postgres73.php b/classes/database/Postgres73.php index d72ad8bf..e32de899 100644 --- a/classes/database/Postgres73.php +++ b/classes/database/Postgres73.php @@ -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; } diff --git a/schemas.php b/schemas.php index ad22fd5d..ff3914f6 100755 --- a/schemas.php +++ b/schemas.php @@ -70,6 +70,8 @@ ), ); + if (!$data->hasAlterSchema()) unset($actions['alter']); + $misc->printTable($schemas, $columns, $actions, $lang['strnoschemas']); echo "

href}\">{$lang['strcreateschema']}

\n"; @@ -190,6 +192,8 @@ } echo "\n"; } + else + echo ""; echo "\t\n"; echo "\t\t{$lang['strcomment']}\n"; -- 2.39.5