Skip to content
Snippets Groups Projects
Commit c7558b3b authored by Peter Eisentraut's avatar Peter Eisentraut
Browse files

Relaxed pickiness about user and group commands in transaction blocks.

parent 3fb8c9d1
No related branches found
No related tags found
No related merge requests found
......@@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Header: /cvsroot/pgsql/src/backend/commands/user.c,v 1.60 2000/06/12 03:40:29 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/commands/user.c,v 1.61 2000/06/25 14:24:59 petere Exp $
*
*-------------------------------------------------------------------------
*/
......@@ -201,15 +201,6 @@ CreateUser(CreateUserStmt *stmt)
if (!superuser())
elog(ERROR, "CREATE USER: permission denied");
/*
* The reason for the following is this: If you start a transaction
* block, create a user, then roll back the transaction, the pg_pwd
* won't get rolled back due to a bug in the Unix file system ( :}).
* Hence this is in the interest of security.
*/
if (IsTransactionBlock())
elog(ERROR, "CREATE USER: may not be called in a transaction block");
/*
* Scan the pg_shadow relation to be certain the user or id doesn't
* already exist. Note we secure exclusive lock, because we also need
......@@ -356,9 +347,9 @@ AlterUser(AlterUserStmt *stmt)
&& stmt->password && strcmp(GetPgUserName(), stmt->user) == 0))
elog(ERROR, "ALTER USER: permission denied");
/* see comments in create user */
if (IsTransactionBlock())
elog(ERROR, "ALTER USER: may not be called in a transaction block");
/* changes to the flat password file cannot be rolled back */
if (IsTransactionBlock() && stmt->password)
elog(NOTICE, "ALTER USER: password changes cannot be rolled back");
/*
* Scan the pg_shadow relation to be certain the user exists. Note we
......@@ -503,7 +494,7 @@ DropUser(DropUserStmt *stmt)
elog(ERROR, "DROP USER: permission denied");
if (IsTransactionBlock())
elog(ERROR, "DROP USER: may not be called in a transaction block");
elog(NOTICE, "DROP USER cannot be rolled back completely");
/*
* Scan the pg_shadow relation to find the usesysid of the user to be
......@@ -675,14 +666,6 @@ CreateGroup(CreateGroupStmt *stmt)
if (!superuser())
elog(ERROR, "CREATE GROUP: permission denied");
/*
* There is not real reason for this, but it makes it consistent with
* create user, and it seems like a good idea anyway.
*/
if (IsTransactionBlock())
elog(ERROR, "CREATE GROUP: may not be called in a transaction block");
pg_group_rel = heap_openr(GroupRelationName, AccessExclusiveLock);
pg_group_dsc = RelationGetDescr(pg_group_rel);
......@@ -816,14 +799,6 @@ AlterGroup(AlterGroupStmt *stmt, const char *tag)
if (!superuser())
elog(ERROR, "%s: permission denied", tag);
/*
* There is not real reason for this, but it makes it consistent with
* alter user, and it seems like a good idea anyway.
*/
if (IsTransactionBlock())
elog(ERROR, "%s: may not be called in a transaction block", tag);
pg_group_rel = heap_openr(GroupRelationName, AccessExclusiveLock);
pg_group_dsc = RelationGetDescr(pg_group_rel);
......@@ -1092,13 +1067,6 @@ DropGroup(DropGroupStmt *stmt)
if (!superuser())
elog(ERROR, "DROP GROUP: permission denied");
/*
* There is not real reason for this, but it makes it consistent with
* drop user, and it seems like a good idea anyway.
*/
if (IsTransactionBlock())
elog(ERROR, "DROP GROUP: may not be called in a transaction block");
/*
* Scan the pg_group table and delete all matching groups.
*/
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment