diff options
Diffstat (limited to 'src/backend/tcop/utility.c')
-rw-r--r-- | src/backend/tcop/utility.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c index 962c5311500..68c02c5f62d 100644 --- a/src/backend/tcop/utility.c +++ b/src/backend/tcop/utility.c @@ -10,7 +10,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.187 2002/12/30 18:42:16 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.188 2003/01/06 00:31:44 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -439,11 +439,11 @@ ProcessUtility(Node *parsetree, stmt->newname); /* new att name */ break; case RENAME_RULE: - elog(ERROR, "ProcessUtility: Invalid target for RENAME: %d", + elog(ERROR, "ProcessUtility: Invalid type for RENAME: %d", stmt->renameType); break; default: - elog(ERROR, "ProcessUtility: Invalid target for RENAME: %d", + elog(ERROR, "ProcessUtility: Invalid type for RENAME: %d", stmt->renameType); } } @@ -553,7 +553,8 @@ ProcessUtility(Node *parsetree, get_usesysid(stmt->name)); break; default: /* oops */ - elog(ERROR, "T_AlterTableStmt: unknown subtype"); + elog(ERROR, "ProcessUtility: Invalid type for AlterTableStmt: %d", + stmt->subtype); break; } } @@ -595,8 +596,17 @@ ProcessUtility(Node *parsetree, stmt->name, stmt->behavior); break; + case 'U': /* OWNER TO */ + /* check that we are the superuser */ + if (!superuser()) + elog(ERROR, "ALTER DOMAIN: permission denied"); + /* get_usesysid raises an error if no such user */ + AlterTypeOwner(stmt->typename, + get_usesysid(stmt->name)); + break; default: /* oops */ - elog(ERROR, "T_AlterDomainStmt: unknown subtype"); + elog(ERROR, "ProcessUtility: Invalid type for AlterDomainStmt: %d", + stmt->subtype); break; } } |