diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2005-06-28 05:09:14 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2005-06-28 05:09:14 +0000 |
commit | 7762619e95272974f90a38d8d85aafbe0e94add5 (patch) | |
tree | d7f756687beb883406489d59d13f722995fd7660 /src/backend/tcop/utility.c | |
parent | 977530d8da2683dff036c2994395ab518527b93e (diff) | |
download | postgresql-7762619e95272974f90a38d8d85aafbe0e94add5.tar.gz postgresql-7762619e95272974f90a38d8d85aafbe0e94add5.zip |
Replace pg_shadow and pg_group by new role-capable catalogs pg_authid
and pg_auth_members. There are still many loose ends to finish in this
patch (no documentation, no regression tests, no pg_dump support for
instance). But I'm going to commit it now anyway so that Alvaro can
make some progress on shared dependencies. The catalog changes should
be pretty much done.
Diffstat (limited to 'src/backend/tcop/utility.c')
-rw-r--r-- | src/backend/tcop/utility.c | 95 |
1 files changed, 38 insertions, 57 deletions
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c index 82bd8eafc11..40d5e7d7ce6 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.238 2005/06/22 21:14:30 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/tcop/utility.c,v 1.239 2005/06/28 05:09:00 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -20,7 +20,6 @@ #include "access/twophase.h" #include "catalog/catalog.h" #include "catalog/namespace.h" -#include "catalog/pg_shadow.h" #include "commands/alter.h" #include "commands/async.h" #include "commands/cluster.h" @@ -279,12 +278,11 @@ check_xact_readonly(Node *parsetree) case T_AlterDatabaseSetStmt: case T_AlterDomainStmt: case T_AlterFunctionStmt: - case T_AlterGroupStmt: + case T_AlterRoleStmt: + case T_AlterRoleSetStmt: case T_AlterOwnerStmt: case T_AlterSeqStmt: case T_AlterTableStmt: - case T_AlterUserStmt: - case T_AlterUserSetStmt: case T_RenameStmt: case T_CommentStmt: case T_DefineStmt: @@ -293,7 +291,7 @@ check_xact_readonly(Node *parsetree) case T_CreatedbStmt: case T_CreateDomainStmt: case T_CreateFunctionStmt: - case T_CreateGroupStmt: + case T_CreateRoleStmt: case T_IndexStmt: case T_CreatePLangStmt: case T_CreateOpClassStmt: @@ -304,7 +302,6 @@ check_xact_readonly(Node *parsetree) case T_CreateTableSpaceStmt: case T_CreateTrigStmt: case T_CompositeTypeStmt: - case T_CreateUserStmt: case T_ViewStmt: case T_RemoveAggrStmt: case T_DropCastStmt: @@ -312,13 +309,13 @@ check_xact_readonly(Node *parsetree) case T_DropdbStmt: case T_DropTableSpaceStmt: case T_RemoveFuncStmt: - case T_DropGroupStmt: + case T_DropRoleStmt: case T_DropPLangStmt: case T_RemoveOperStmt: case T_RemoveOpClassStmt: case T_DropPropertyStmt: - case T_DropUserStmt: case T_GrantStmt: + case T_GrantRoleStmt: case T_TruncateStmt: ereport(ERROR, (errcode(ERRCODE_READ_ONLY_SQL_TRANSACTION), @@ -679,11 +676,14 @@ ProcessUtility(Node *parsetree, } break; - case T_GrantStmt: ExecuteGrantStmt((GrantStmt *) parsetree); break; + case T_GrantRoleStmt: + GrantRole((GrantRoleStmt *) parsetree); + break; + /* * ******************************** object creation / * destruction ******************************** @@ -958,22 +958,22 @@ ProcessUtility(Node *parsetree, break; /* - * ******************************** USER statements **** + * ******************************** ROLE statements **** */ - case T_CreateUserStmt: - CreateUser((CreateUserStmt *) parsetree); + case T_CreateRoleStmt: + CreateRole((CreateRoleStmt *) parsetree); break; - case T_AlterUserStmt: - AlterUser((AlterUserStmt *) parsetree); + case T_AlterRoleStmt: + AlterRole((AlterRoleStmt *) parsetree); break; - case T_AlterUserSetStmt: - AlterUserSet((AlterUserSetStmt *) parsetree); + case T_AlterRoleSetStmt: + AlterRoleSet((AlterRoleSetStmt *) parsetree); break; - case T_DropUserStmt: - DropUser((DropUserStmt *) parsetree); + case T_DropRoleStmt: + DropRole((DropRoleStmt *) parsetree); break; case T_LockStmt: @@ -984,18 +984,6 @@ ProcessUtility(Node *parsetree, AfterTriggerSetState((ConstraintsSetStmt *) parsetree); break; - case T_CreateGroupStmt: - CreateGroup((CreateGroupStmt *) parsetree); - break; - - case T_AlterGroupStmt: - AlterGroup((AlterGroupStmt *) parsetree, "ALTER GROUP"); - break; - - case T_DropGroupStmt: - DropGroup((DropGroupStmt *) parsetree); - break; - case T_CheckPointStmt: if (!superuser()) ereport(ERROR, @@ -1350,9 +1338,6 @@ CreateCommandTag(Node *parsetree) case OBJECT_FUNCTION: tag = "ALTER FUNCTION"; break; - case OBJECT_GROUP: - tag = "ALTER GROUP"; - break; case OBJECT_INDEX: tag = "ALTER INDEX"; break; @@ -1362,6 +1347,9 @@ CreateCommandTag(Node *parsetree) case OBJECT_OPCLASS: tag = "ALTER OPERATOR CLASS"; break; + case OBJECT_ROLE: + tag = "ALTER ROLE"; + break; case OBJECT_SCHEMA: tag = "ALTER SCHEMA"; break; @@ -1371,9 +1359,6 @@ CreateCommandTag(Node *parsetree) case OBJECT_TRIGGER: tag = "ALTER TRIGGER"; break; - case OBJECT_USER: - tag = "ALTER USER"; - break; default: tag = "ALTER TABLE"; } @@ -1450,6 +1435,14 @@ CreateCommandTag(Node *parsetree) } break; + case T_GrantRoleStmt: + { + GrantRoleStmt *stmt = (GrantRoleStmt *) parsetree; + + tag = (stmt->is_grant) ? "GRANT ROLE" : "REVOKE ROLE"; + } + break; + case T_DefineStmt: switch (((DefineStmt *) parsetree)->kind) { @@ -1588,20 +1581,20 @@ CreateCommandTag(Node *parsetree) tag = "DROP LANGUAGE"; break; - case T_CreateUserStmt: - tag = "CREATE USER"; + case T_CreateRoleStmt: + tag = "CREATE ROLE"; break; - case T_AlterUserStmt: - tag = "ALTER USER"; + case T_AlterRoleStmt: + tag = "ALTER ROLE"; break; - case T_AlterUserSetStmt: - tag = "ALTER USER"; + case T_AlterRoleSetStmt: + tag = "ALTER ROLE"; break; - case T_DropUserStmt: - tag = "DROP USER"; + case T_DropRoleStmt: + tag = "DROP ROLE"; break; case T_LockStmt: @@ -1612,18 +1605,6 @@ CreateCommandTag(Node *parsetree) tag = "SET CONSTRAINTS"; break; - case T_CreateGroupStmt: - tag = "CREATE GROUP"; - break; - - case T_AlterGroupStmt: - tag = "ALTER GROUP"; - break; - - case T_DropGroupStmt: - tag = "DROP GROUP"; - break; - case T_CheckPointStmt: tag = "CHECKPOINT"; break; |