|
15 | 15 | *
|
16 | 16 | *
|
17 | 17 | * IDENTIFICATION
|
18 |
| - * $PostgreSQL: pgsql/src/backend/commands/dbcommands.c,v 1.152 2005/03/04 20:21:05 tgl Exp $ |
| 18 | + * $PostgreSQL: pgsql/src/backend/commands/dbcommands.c,v 1.153 2005/03/1221:11:50 tgl Exp $ |
19 | 19 | *
|
20 | 20 | *-------------------------------------------------------------------------
|
21 | 21 | */
|
@@ -722,8 +722,8 @@ RenameDatabase(const char *oldname, const char *newname)
|
722 | 722 | aclcheck_error(ACLCHECK_NOT_OWNER,ACL_KIND_DATABASE,
|
723 | 723 | oldname);
|
724 | 724 |
|
725 |
| -/* must have createdb */ |
726 |
| -if (!have_createdb_privilege()) |
| 725 | +/* must have createdbrights*/ |
| 726 | +if (!superuser()&& !have_createdb_privilege()) |
727 | 727 | ereport(ERROR,
|
728 | 728 | (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
|
729 | 729 | errmsg("permission denied to rename database")));
|
@@ -883,8 +883,7 @@ AlterDatabaseOwner(const char *dbname, AclId newOwnerSysId)
|
883 | 883 | boolisNull;
|
884 | 884 | HeapTuplenewtuple;
|
885 | 885 |
|
886 |
| -/* changing owner's database for someone else: must be superuser */ |
887 |
| -/* note that the someone else need not have any permissions */ |
| 886 | +/* must be superuser to change ownership */ |
888 | 887 | if (!superuser())
|
889 | 888 | ereport(ERROR,
|
890 | 889 | (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
|
@@ -999,24 +998,22 @@ get_db_info(const char *name, Oid *dbIdP, int4 *ownerIdP,
|
999 | 998 | returngottuple;
|
1000 | 999 | }
|
1001 | 1000 |
|
| 1001 | +/* Check if current user has createdb privileges */ |
1002 | 1002 | staticbool
|
1003 | 1003 | have_createdb_privilege(void)
|
1004 | 1004 | {
|
| 1005 | +boolresult= false; |
1005 | 1006 | HeapTupleutup;
|
1006 |
| -boolretval; |
1007 | 1007 |
|
1008 | 1008 | utup=SearchSysCache(SHADOWSYSID,
|
1009 | 1009 | Int32GetDatum(GetUserId()),
|
1010 | 1010 | 0,0,0);
|
1011 |
| - |
1012 |
| -if (!HeapTupleIsValid(utup)) |
1013 |
| -retval= false; |
1014 |
| -else |
1015 |
| -retval= ((Form_pg_shadow)GETSTRUCT(utup))->usecreatedb; |
1016 |
| - |
1017 |
| -ReleaseSysCache(utup); |
1018 |
| - |
1019 |
| -returnretval; |
| 1011 | +if (HeapTupleIsValid(utup)) |
| 1012 | +{ |
| 1013 | +result= ((Form_pg_shadow)GETSTRUCT(utup))->usecreatedb; |
| 1014 | +ReleaseSysCache(utup); |
| 1015 | +} |
| 1016 | +returnresult; |
1020 | 1017 | }
|
1021 | 1018 |
|
1022 | 1019 | /*
|
|