summaryrefslogtreecommitdiff
path: root/src/backend
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend')
-rw-r--r--src/backend/catalog/aclchk.c10
-rw-r--r--src/backend/catalog/indexing.c76
-rw-r--r--src/backend/commands/comment.c2
-rw-r--r--src/backend/commands/dbcommands.c4
-rw-r--r--src/backend/commands/user.c6
-rw-r--r--src/backend/rewrite/locks.c4
-rw-r--r--src/backend/utils/adt/acl.c6
-rw-r--r--src/backend/utils/adt/ruleutils.c4
-rw-r--r--src/backend/utils/cache/syscache.c60
-rw-r--r--src/backend/utils/init/miscinit.c4
-rw-r--r--src/backend/utils/misc/superuser.c4
11 files changed, 114 insertions, 66 deletions
diff --git a/src/backend/catalog/aclchk.c b/src/backend/catalog/aclchk.c
index 701cb4df14..ad767e7424 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 1dfd531d34..0815fce3c4 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 4d58eb3ccc..1b046a5f57 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 0fd64a10ca..26f7bcf71b 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 b7bfff8710..27a11cbcaf 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 aea4ee5820..4f6434d924 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 15db9b3041..ee3c41ace6 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 a342daba8b..a4f182770b 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 e14f27da8c..d3e0648695 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 0f6c376e8a..18eed64195 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 cffaacdd7f..c1f0a3231d 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);