diff options
Diffstat (limited to 'src/backend')
-rw-r--r-- | src/backend/catalog/aclchk.c | 10 | ||||
-rw-r--r-- | src/backend/catalog/indexing.c | 76 | ||||
-rw-r--r-- | src/backend/commands/comment.c | 2 | ||||
-rw-r--r-- | src/backend/commands/dbcommands.c | 4 | ||||
-rw-r--r-- | src/backend/commands/user.c | 6 | ||||
-rw-r--r-- | src/backend/rewrite/locks.c | 4 | ||||
-rw-r--r-- | src/backend/utils/adt/acl.c | 6 | ||||
-rw-r--r-- | src/backend/utils/adt/ruleutils.c | 4 | ||||
-rw-r--r-- | src/backend/utils/cache/syscache.c | 60 | ||||
-rw-r--r-- | src/backend/utils/init/miscinit.c | 4 | ||||
-rw-r--r-- | src/backend/utils/misc/superuser.c | 4 |
11 files changed, 114 insertions, 66 deletions
diff --git a/src/backend/catalog/aclchk.c b/src/backend/catalog/aclchk.c index 701cb4df149..ad767e74240 100644 --- a/src/backend/catalog/aclchk.c +++ b/src/backend/catalog/aclchk.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/catalog/aclchk.c,v 1.31 1999/11/24 00:44:28 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/catalog/aclchk.c,v 1.32 1999/11/24 16:52:31 momjian Exp $ * * NOTES * See acl.h. @@ -350,7 +350,7 @@ pg_aclcheck(char *relname, char *usename, AclMode mode) int32 result; Relation relation; - tuple = SearchSysCacheTuple(USERNAME, + tuple = SearchSysCacheTuple(SHADOWNAME, PointerGetDatum(usename), 0, 0, 0); if (!HeapTupleIsValid(tuple)) @@ -469,7 +469,7 @@ pg_ownercheck(char *usename, AclId user_id, owner_id = 0; - tuple = SearchSysCacheTuple(USERNAME, + tuple = SearchSysCacheTuple(SHADOWNAME, PointerGetDatum(usename), 0, 0, 0); if (!HeapTupleIsValid(tuple)) @@ -535,7 +535,7 @@ pg_func_ownercheck(char *usename, AclId user_id, owner_id; - tuple = SearchSysCacheTuple(USERNAME, + tuple = SearchSysCacheTuple(SHADOWNAME, PointerGetDatum(usename), 0, 0, 0); if (!HeapTupleIsValid(tuple)) @@ -577,7 +577,7 @@ pg_aggr_ownercheck(char *usename, AclId user_id, owner_id; - tuple = SearchSysCacheTuple(USERNAME, + tuple = SearchSysCacheTuple(SHADOWNAME, PointerGetDatum(usename), 0, 0, 0); if (!HeapTupleIsValid(tuple)) diff --git a/src/backend/catalog/indexing.c b/src/backend/catalog/indexing.c index 1dfd531d345..0815fce3c4b 100644 --- a/src/backend/catalog/indexing.c +++ b/src/backend/catalog/indexing.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/catalog/indexing.c,v 1.51 1999/11/22 17:55:57 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/catalog/indexing.c,v 1.52 1999/11/24 16:52:31 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -881,42 +881,77 @@ RewriteOidIndexScan(Relation heapRelation, Oid rewriteId) HeapTuple -TypeNameIndexScan(Relation heapRelation, char *typeName) +ShadowNameIndexScan(Relation heapRelation, char *useName) { Relation idesc; ScanKeyData skey[1]; HeapTuple tuple; - + ScanKeyEntryInitialize(&skey[0], (bits16) 0x0, (AttrNumber) 1, (RegProcedure) F_NAMEEQ, - PointerGetDatum(typeName)); + PointerGetDatum(useName)); - idesc = index_openr(TypeNameIndex); + idesc = index_openr(ShadowNameIndex); tuple = CatalogIndexFetchTuple(heapRelation, idesc, skey, 1); index_close(idesc); - return tuple; } HeapTuple -TypeOidIndexScan(Relation heapRelation, Oid typeId) +ShadowSysidIndexScan(Relation heapRelation, int4 sysId) { Relation idesc; ScanKeyData skey[1]; HeapTuple tuple; + + ScanKeyEntryInitialize(&skey[0], + (bits16) 0x0, + (AttrNumber) 1, + (RegProcedure) F_INT4EQ, + Int32GetDatum(sysId)); + + idesc = index_openr(ShadowSysidIndex); + tuple = CatalogIndexFetchTuple(heapRelation, idesc, skey, 1); + + index_close(idesc); + return tuple; +} + + +HeapTuple +StatisticRelidAttnumOpIndexScan(Relation heapRelation, + Oid relId, + AttrNumber attNum, + Oid op) +{ + Relation idesc; + ScanKeyData skey[3]; + HeapTuple tuple; ScanKeyEntryInitialize(&skey[0], (bits16) 0x0, (AttrNumber) 1, (RegProcedure) F_OIDEQ, - ObjectIdGetDatum(typeId)); + ObjectIdGetDatum(relId)); - idesc = index_openr(TypeOidIndex); - tuple = CatalogIndexFetchTuple(heapRelation, idesc, skey, 1); + ScanKeyEntryInitialize(&skey[1], + (bits16) 0x0, + (AttrNumber) 2, + (RegProcedure) F_INT2EQ, + Int16GetDatum(attNum)); + + ScanKeyEntryInitialize(&skey[2], + (bits16) 0x0, + (AttrNumber) 3, + (RegProcedure) F_OIDEQ, + ObjectIdGetDatum(op)); + + idesc = index_openr(StatisticRelidAttnumOpIndex); + tuple = CatalogIndexFetchTuple(heapRelation, idesc, skey, 3); index_close(idesc); @@ -925,44 +960,45 @@ TypeOidIndexScan(Relation heapRelation, Oid typeId) HeapTuple -ShadowNameIndexScan(Relation heapRelation, char *useName) +TypeNameIndexScan(Relation heapRelation, char *typeName) { Relation idesc; ScanKeyData skey[1]; HeapTuple tuple; - + ScanKeyEntryInitialize(&skey[0], (bits16) 0x0, (AttrNumber) 1, (RegProcedure) F_NAMEEQ, - PointerGetDatum(useName)); + PointerGetDatum(typeName)); - idesc = index_openr(ShadowNameIndex); + idesc = index_openr(TypeNameIndex); tuple = CatalogIndexFetchTuple(heapRelation, idesc, skey, 1); index_close(idesc); + return tuple; } HeapTuple -ShadowSysidIndexScan(Relation heapRelation, int4 sysId) +TypeOidIndexScan(Relation heapRelation, Oid typeId) { Relation idesc; ScanKeyData skey[1]; HeapTuple tuple; - + ScanKeyEntryInitialize(&skey[0], (bits16) 0x0, (AttrNumber) 1, - (RegProcedure) F_INT4EQ, - Int32GetDatum(sysId)); + (RegProcedure) F_OIDEQ, + ObjectIdGetDatum(typeId)); - idesc = index_openr(ShadowSysidIndex); + idesc = index_openr(TypeOidIndex); tuple = CatalogIndexFetchTuple(heapRelation, idesc, skey, 1); index_close(idesc); + return tuple; } - diff --git a/src/backend/commands/comment.c b/src/backend/commands/comment.c index 4d58eb3ccc1..1b046a5f57a 100644 --- a/src/backend/commands/comment.c +++ b/src/backend/commands/comment.c @@ -395,7 +395,7 @@ void CommentDatabase(char *database, char *comment) { /*** Now, fetch user information ***/ username = GetPgUserName(); - usertuple = SearchSysCacheTuple(USERNAME, PointerGetDatum(username), + usertuple = SearchSysCacheTuple(SHADOWNAME, PointerGetDatum(username), 0, 0, 0); if (!HeapTupleIsValid(usertuple)) { elog(ERROR, "current user '%s' does not exist", username); diff --git a/src/backend/commands/dbcommands.c b/src/backend/commands/dbcommands.c index 0fd64a10caf..26f7bcf71b8 100644 --- a/src/backend/commands/dbcommands.c +++ b/src/backend/commands/dbcommands.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/dbcommands.c,v 1.44 1999/11/22 17:56:01 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/dbcommands.c,v 1.45 1999/11/24 16:52:32 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -241,7 +241,7 @@ check_permissions(char *command, char path[MAXPGPATH]; userName = GetPgUserName(); - utup = SearchSysCacheTuple(USERNAME, + utup = SearchSysCacheTuple(SHADOWNAME, PointerGetDatum(userName), 0, 0, 0); Assert(utup); diff --git a/src/backend/commands/user.c b/src/backend/commands/user.c index b7bfff87102..27a11cbcaf1 100644 --- a/src/backend/commands/user.c +++ b/src/backend/commands/user.c @@ -5,7 +5,7 @@ * * Copyright (c) 1994, Regents of the University of California * - * $Id: user.c,v 1.37 1999/11/22 17:56:02 momjian Exp $ + * $Id: user.c,v 1.38 1999/11/24 16:52:32 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -261,7 +261,7 @@ AlterUser(AlterUserStmt *stmt, CommandDest dest) pg_shadow_rel = heap_openr(ShadowRelationName, AccessExclusiveLock); pg_shadow_dsc = RelationGetDescr(pg_shadow_rel); - tuple = SearchSysCacheTuple(USERNAME, + tuple = SearchSysCacheTuple(SHADOWNAME, PointerGetDatum(stmt->user), 0, 0, 0); if (!HeapTupleIsValid(tuple)) @@ -374,7 +374,7 @@ RemoveUser(char *user, CommandDest dest) pg_shadow_rel = heap_openr(ShadowRelationName, AccessExclusiveLock); pg_dsc = RelationGetDescr(pg_shadow_rel); - tuple = SearchSysCacheTuple(USERNAME, + tuple = SearchSysCacheTuple(SHADOWNAME, PointerGetDatum(user), 0, 0, 0); if (!HeapTupleIsValid(tuple)) diff --git a/src/backend/rewrite/locks.c b/src/backend/rewrite/locks.c index aea4ee58208..4f6434d9245 100644 --- a/src/backend/rewrite/locks.c +++ b/src/backend/rewrite/locks.c @@ -6,7 +6,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/rewrite/Attic/locks.c,v 1.25 1999/11/22 17:56:23 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/rewrite/Attic/locks.c,v 1.26 1999/11/24 16:52:33 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -170,7 +170,7 @@ checkLockPerms(List *locks, Query *parsetree, int rt_index) */ rte = (RangeTblEntry *) nth(rt_index - 1, parsetree->rtable); ev_rel = heap_openr(rte->relname, AccessShareLock); - usertup = SearchSysCacheTuple(USERSYSID, + usertup = SearchSysCacheTuple(SHADOWSYSID, ObjectIdGetDatum(ev_rel->rd_rel->relowner), 0, 0, 0); if (!HeapTupleIsValid(usertup)) diff --git a/src/backend/utils/adt/acl.c b/src/backend/utils/adt/acl.c index 15db9b30416..ee3c41ace6c 100644 --- a/src/backend/utils/adt/acl.c +++ b/src/backend/utils/adt/acl.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/acl.c,v 1.42 1999/11/22 17:56:28 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/acl.c,v 1.43 1999/11/24 16:52:37 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -170,7 +170,7 @@ aclparse(char *s, AclItem *aip, unsigned *modechg) switch (aip->ai_idtype) { case ACL_IDTYPE_UID: - htup = SearchSysCacheTuple(USERNAME, + htup = SearchSysCacheTuple(SHADOWNAME, PointerGetDatum(name), 0, 0, 0); if (!HeapTupleIsValid(htup)) @@ -281,7 +281,7 @@ aclitemout(AclItem *aip) switch (aip->ai_idtype) { case ACL_IDTYPE_UID: - htup = SearchSysCacheTuple(USERSYSID, + htup = SearchSysCacheTuple(SHADOWSYSID, ObjectIdGetDatum(aip->ai_id), 0, 0, 0); if (!HeapTupleIsValid(htup)) diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c index a342daba8ba..a4f182770b9 100644 --- a/src/backend/utils/adt/ruleutils.c +++ b/src/backend/utils/adt/ruleutils.c @@ -3,7 +3,7 @@ * out of it's tuple * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/ruleutils.c,v 1.32 1999/11/22 17:56:30 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/ruleutils.c,v 1.33 1999/11/24 16:52:37 momjian Exp $ * * This software is copyrighted by Jan Wieck - Hamburg. * @@ -567,7 +567,7 @@ pg_get_userbyid(int32 uid) * Get the pg_shadow entry and print the result * ---------- */ - usertup = SearchSysCacheTuple(USERSYSID, + usertup = SearchSysCacheTuple(SHADOWSYSID, ObjectIdGetDatum(uid), 0, 0, 0); if (HeapTupleIsValid(usertup)) { diff --git a/src/backend/utils/cache/syscache.c b/src/backend/utils/cache/syscache.c index e14f27da8c9..d3e0648695d 100644 --- a/src/backend/utils/cache/syscache.c +++ b/src/backend/utils/cache/syscache.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/cache/syscache.c,v 1.42 1999/11/24 00:58:48 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/cache/syscache.c,v 1.43 1999/11/24 16:52:38 momjian Exp $ * * NOTES * These routines allow the parser/planner/executor to perform @@ -66,7 +66,8 @@ typedef HeapTuple (*ScanFunc) (); lookups return only one row, so the index should be unique. In backend/catalog/indexing.c, initialize the relation array with - the index names for the relation, and create the index lookup function. + the index names for the relation, fixed size of relation (or marking + first non-fixed length field), and create the index lookup function. Pick one that takes similar arguments and use that one, but keep the function names in the same order as the cache list for clarity. @@ -333,52 +334,63 @@ static struct cachedesc cacheinfo[] = { offsetof(FormData_pg_rewrite, ev_qual), RewriteOidIndex, RewriteOidIndexScan}, - {TypeRelationName, /* TYPENAME */ + {ShadowRelationName, /* SHADOWNAME */ 1, { - Anum_pg_type_typname, + Anum_pg_shadow_usename, 0, 0, 0 }, - offsetof(FormData_pg_type, typalign) +sizeof(char), - TypeNameIndex, - TypeNameIndexScan}, - {TypeRelationName, /* TYPEOID */ + sizeof(FormData_pg_shadow), +NULL,NULL +/* ShadowNameIndex, + ShadowNameIndexScan*/}, + {ShadowRelationName, /* SHADOWSYSID */ 1, { - ObjectIdAttributeNumber, + Anum_pg_shadow_usesysid, 0, 0, 0 }, - offsetof(FormData_pg_type, typalign) +sizeof(char), - TypeOidIndex, - TypeOidIndexScan}, - {ShadowRelationName, /* USERNAME */ + sizeof(FormData_pg_shadow), +NULL,NULL +/* ShadowSysidIndex, + ShadowSysidIndexScan*/}, + {StatisticRelationName, /* STATRELID */ + 3, + { + Anum_pg_statistic_starelid, + Anum_pg_statistic_staattnum, + Anum_pg_statistic_staop, + 0 + }, + offsetof(FormData_pg_statistic, stacommonval), + StatisticRelidAttnumOpIndex, + StatisticRelidAttnumOpIndexScan}, + {TypeRelationName, /* TYPENAME */ 1, { - Anum_pg_shadow_usename, + Anum_pg_type_typname, 0, 0, 0 }, - sizeof(FormData_pg_shadow), -NULL,NULL -/* ShadowNameIndex, - ShadowNameIndexScan*/}, - {ShadowRelationName, /* USERSYSID */ + offsetof(FormData_pg_type, typalign) +sizeof(char), + TypeNameIndex, + TypeNameIndexScan}, + {TypeRelationName, /* TYPEOID */ 1, { - Anum_pg_shadow_usesysid, + ObjectIdAttributeNumber, 0, 0, 0 }, - sizeof(FormData_pg_shadow), -NULL,NULL -/* ShadowSysidIndex, - ShadowSysidIndexScan*/} + offsetof(FormData_pg_type, typalign) +sizeof(char), + TypeOidIndex, + TypeOidIndexScan} }; static struct catcache *SysCache[lengthof(cacheinfo)]; diff --git a/src/backend/utils/init/miscinit.c b/src/backend/utils/init/miscinit.c index 0f6c376e8a0..18eed64195f 100644 --- a/src/backend/utils/init/miscinit.c +++ b/src/backend/utils/init/miscinit.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/init/miscinit.c,v 1.36 1999/11/22 17:56:34 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/init/miscinit.c,v 1.37 1999/11/24 16:52:42 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -453,7 +453,7 @@ SetUserId() } userName = GetPgUserName(); - userTup = SearchSysCacheTuple(USERNAME, + userTup = SearchSysCacheTuple(SHADOWNAME, PointerGetDatum(userName), 0, 0, 0); if (!HeapTupleIsValid(userTup)) diff --git a/src/backend/utils/misc/superuser.c b/src/backend/utils/misc/superuser.c index cffaacdd7fa..c1f0a3231db 100644 --- a/src/backend/utils/misc/superuser.c +++ b/src/backend/utils/misc/superuser.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/misc/superuser.c,v 1.11 1999/11/22 17:56:35 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/misc/superuser.c,v 1.12 1999/11/24 16:52:45 momjian Exp $ * * DESCRIPTION * See superuser(). @@ -30,7 +30,7 @@ superuser(void) HeapTuple utup; - utup = SearchSysCacheTuple(USERNAME, + utup = SearchSysCacheTuple(SHADOWNAME, PointerGetDatum(UserName), 0, 0, 0); Assert(utup != NULL); |