diff options
Diffstat (limited to 'src/backend/utils')
-rw-r--r-- | src/backend/utils/cache/syscache.c | 13 | ||||
-rw-r--r-- | src/backend/utils/init/postinit.c | 17 |
2 files changed, 19 insertions, 11 deletions
diff --git a/src/backend/utils/cache/syscache.c b/src/backend/utils/cache/syscache.c index 90b9c4cb053..ffcb26e3c55 100644 --- a/src/backend/utils/cache/syscache.c +++ b/src/backend/utils/cache/syscache.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/cache/syscache.c,v 1.102 2006/03/05 15:58:45 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/cache/syscache.c,v 1.103 2006/05/03 22:45:26 tgl Exp $ * * NOTES * These routines allow the parser/planner/executor to perform @@ -31,6 +31,7 @@ #include "catalog/pg_auth_members.h" #include "catalog/pg_cast.h" #include "catalog/pg_conversion.h" +#include "catalog/pg_database.h" #include "catalog/pg_index.h" #include "catalog/pg_inherits.h" #include "catalog/pg_language.h" @@ -273,6 +274,16 @@ static const struct cachedesc cacheinfo[] = { 0, 0 }}, + {DatabaseRelationId, /* DATABASEOID */ + DatabaseOidIndexId, + 0, + 1, + { + ObjectIdAttributeNumber, + 0, + 0, + 0 + }}, {IndexRelationId, /* INDEXRELID */ IndexRelidIndexId, Anum_pg_index_indrelid, diff --git a/src/backend/utils/init/postinit.c b/src/backend/utils/init/postinit.c index e89df5bb3af..4ddc7f712af 100644 --- a/src/backend/utils/init/postinit.c +++ b/src/backend/utils/init/postinit.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/init/postinit.c,v 1.164 2006/04/30 21:15:33 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/init/postinit.c,v 1.165 2006/05/03 22:45:26 tgl Exp $ * * *------------------------------------------------------------------------- @@ -195,19 +195,16 @@ ReverifyMyDatabase(const char *name, bool am_superuser) name))); /* - * Check privilege to connect to the database. To avoid making - * a whole extra search of pg_database here, we don't go through - * pg_database_aclcheck, but instead use a lower-level routine - * that we can pass the pg_database tuple to. + * Check privilege to connect to the database. (The am_superuser + * test is redundant, but since we have the flag, might as well + * check it and save a few cycles.) */ if (!am_superuser && - pg_database_tuple_aclmask(tup, RelationGetDescr(pgdbrel), - GetUserId(), - ACL_CONNECT, ACLMASK_ANY) == 0) + pg_database_aclcheck(MyDatabaseId, GetUserId(), + ACL_CONNECT) != ACLCHECK_OK) ereport(FATAL, (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), - errmsg("permission denied for database %s", - NameStr(dbform->datname)), + errmsg("permission denied for database \"%s\"", name), errdetail("User does not have CONNECT privilege."))); /* |