diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2004-06-25 21:55:59 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2004-06-25 21:55:59 +0000 |
commit | 0adfa2c39d567394f423c69bfaf467d0d00ee3df (patch) | |
tree | 215559f976b4e28454fcf7abaa8c96c748ec7fef /src/backend/tcop/utility.c | |
parent | 1621192b11369a7f0c47aaff1c8ec16bad29ab69 (diff) | |
download | postgresql-0adfa2c39d567394f423c69bfaf467d0d00ee3df.tar.gz postgresql-0adfa2c39d567394f423c69bfaf467d0d00ee3df.zip |
Support renaming of tablespaces, and changing the owners of
aggregates, conversions, functions, operators, operator classes,
schemas, types, and tablespaces. Fold the existing implementations
of alter domain owner and alter database owner in with these.
Christopher Kings-Lynne
Diffstat (limited to 'src/backend/tcop/utility.c')
-rw-r--r-- | src/backend/tcop/utility.c | 69 |
1 files changed, 45 insertions, 24 deletions
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c index d12cf0d750f..a3e727472ab 100644 --- a/src/backend/tcop/utility.c +++ b/src/backend/tcop/utility.c @@ -10,7 +10,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/tcop/utility.c,v 1.219 2004/06/18 06:13:38 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/tcop/utility.c,v 1.220 2004/06/25 21:55:57 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -236,14 +236,14 @@ check_xact_readonly(Node *parsetree) switch (nodeTag(parsetree)) { case T_AlterDatabaseSetStmt: - case T_AlterDbOwnerStmt: case T_AlterDomainStmt: case T_AlterGroupStmt: + case T_AlterOwnerStmt: case T_AlterSeqStmt: case T_AlterTableStmt: - case T_RenameStmt: case T_AlterUserStmt: case T_AlterUserSetStmt: + case T_RenameStmt: case T_CommentStmt: case T_DefineStmt: case T_CreateCastStmt: @@ -527,6 +527,10 @@ ProcessUtility(Node *parsetree, ExecRenameStmt((RenameStmt *) parsetree); break; + case T_AlterOwnerStmt: + ExecAlterOwnerStmt((AlterOwnerStmt *) parsetree); + break; + case T_AlterTableStmt: AlterTable((AlterTableStmt *) parsetree); break; @@ -567,16 +571,6 @@ ProcessUtility(Node *parsetree, stmt->name, stmt->behavior); break; - case 'U': /* OWNER TO */ - /* check that we are the superuser */ - if (!superuser()) - ereport(ERROR, - (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), - errmsg("must be superuser to alter owner"))); - /* get_usesysid raises an error if no such user */ - AlterTypeOwner(stmt->typename, - get_usesysid(stmt->name)); - break; default: /* oops */ elog(ERROR, "unrecognized alter domain type: %d", (int) stmt->subtype); @@ -689,13 +683,6 @@ ProcessUtility(Node *parsetree, createdb((CreatedbStmt *) parsetree); break; - case T_AlterDbOwnerStmt: - { - AlterDbOwnerStmt *stmt = (AlterDbOwnerStmt *) parsetree; - AlterDatabaseOwner(stmt->dbname, stmt->uname); - } - break; - case T_AlterDatabaseSetStmt: AlterDatabaseSet((AlterDatabaseSetStmt *) parsetree); break; @@ -1258,6 +1245,44 @@ CreateCommandTag(Node *parsetree) } break; + case T_AlterOwnerStmt: + switch (((AlterOwnerStmt *) parsetree)->objectType) + { + case OBJECT_AGGREGATE: + tag = "ALTER AGGREGATE"; + break; + case OBJECT_CONVERSION: + tag = "ALTER CONVERSION"; + break; + case OBJECT_DATABASE: + tag = "ALTER DATABASE"; + break; + case OBJECT_DOMAIN: + tag = "ALTER DOMAIN"; + break; + case OBJECT_FUNCTION: + tag = "ALTER FUNCTION"; + break; + case OBJECT_OPERATOR: + tag = "ALTER OPERATOR"; + break; + case OBJECT_OPCLASS: + tag = "ALTER OPERATOR CLASS"; + break; + case OBJECT_SCHEMA: + tag = "ALTER SCHEMA"; + break; + case OBJECT_TABLESPACE: + tag = "ALTER TABLESPACE"; + break; + case OBJECT_TYPE: + tag = "ALTER TYPE"; + break; + default: + tag = "ALTER TABLE"; + } + break; + case T_AlterTableStmt: tag = "ALTER TABLE"; break; @@ -1335,10 +1360,6 @@ CreateCommandTag(Node *parsetree) tag = "CREATE DATABASE"; break; - case T_AlterDbOwnerStmt: - tag = "ALTER DATABASE"; - break; - case T_AlterDatabaseSetStmt: tag = "ALTER DATABASE"; break; |