summaryrefslogtreecommitdiff
path: root/src/backend/catalog/aclchk.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/catalog/aclchk.c')
-rw-r--r--src/backend/catalog/aclchk.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/backend/catalog/aclchk.c b/src/backend/catalog/aclchk.c
index 2225dc3a14..bead0959d9 100644
--- a/src/backend/catalog/aclchk.c
+++ b/src/backend/catalog/aclchk.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/catalog/aclchk.c,v 1.58 2002/03/21 23:27:19 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/catalog/aclchk.c,v 1.59 2002/03/26 19:15:22 tgl Exp $
*
* NOTES
* See acl.h.
@@ -22,6 +22,7 @@
#include "catalog/catalog.h"
#include "catalog/catname.h"
#include "catalog/indexing.h"
+#include "catalog/namespace.h"
#include "catalog/pg_aggregate.h"
#include "catalog/pg_group.h"
#include "catalog/pg_language.h"
@@ -200,7 +201,8 @@ ExecuteGrantStmt_Table(GrantStmt *stmt)
foreach(i, stmt->objects)
{
- char *relname = ((RangeVar *) lfirst(i))->relname;
+ RangeVar *relvar = (RangeVar *) lfirst(i);
+ Oid relOid;
Relation relation;
HeapTuple tuple;
Form_pg_class pg_class_tuple;
@@ -216,27 +218,27 @@ ExecuteGrantStmt_Table(GrantStmt *stmt)
/* open pg_class */
relation = heap_openr(RelationRelationName, RowExclusiveLock);
- tuple = SearchSysCache(RELNAME,
- PointerGetDatum(relname),
+ relOid = RangeVarGetRelid(relvar, false);
+ tuple = SearchSysCache(RELOID,
+ ObjectIdGetDatum(relOid),
0, 0, 0);
if (!HeapTupleIsValid(tuple))
- elog(ERROR, "relation \"%s\" not found",
- relname);
+ elog(ERROR, "relation %u not found", relOid);
pg_class_tuple = (Form_pg_class) GETSTRUCT(tuple);
- if (!pg_class_ownercheck(tuple->t_data->t_oid, GetUserId()))
+ if (!pg_class_ownercheck(relOid, GetUserId()))
elog(ERROR, "%s: permission denied",
- relname);
+ relvar->relname);
if (pg_class_tuple->relkind == RELKIND_INDEX)
elog(ERROR, "\"%s\" is an index",
- relname);
+ relvar->relname);
/*
* If there's no ACL, create a default using the pg_class.relowner
* field.
*/
- aclDatum = SysCacheGetAttr(RELNAME, tuple, Anum_pg_class_relacl,
+ aclDatum = SysCacheGetAttr(RELOID, tuple, Anum_pg_class_relacl,
&isNull);
if (isNull)
old_acl = acldefault(pg_class_tuple->relowner);