diff options
Diffstat (limited to 'src/backend/catalog/indexing.c')
-rw-r--r-- | src/backend/catalog/indexing.c | 113 |
1 files changed, 107 insertions, 6 deletions
diff --git a/src/backend/catalog/indexing.c b/src/backend/catalog/indexing.c index 2caffcbcf5c..c8d1bf05535 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.48 1999/10/15 01:49:39 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/catalog/indexing.c,v 1.49 1999/11/01 02:29:25 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -38,15 +38,17 @@ * pg_trigger */ +char *Name_pg_amop_indices[Num_pg_amop_indices] = {AccessMethodOpidIndex, + AccessMethodStrategyIndex}; char *Name_pg_attr_indices[Num_pg_attr_indices] = {AttributeNameIndex, - AttributeNumIndex, -AttributeRelidIndex}; + AttributeNumIndex, AttributeRelidIndex}; +char *Name_pg_index_indices[Num_pg_index_indices] = {IndexRelidIndex}; char *Name_pg_proc_indices[Num_pg_proc_indices] = {ProcedureNameIndex, - ProcedureOidIndex}; + ProcedureOidIndex}; char *Name_pg_type_indices[Num_pg_type_indices] = {TypeNameIndex, -TypeOidIndex}; + TypeOidIndex}; char *Name_pg_class_indices[Num_pg_class_indices] = {ClassNameIndex, -ClassOidIndex}; + ClassOidIndex}; char *Name_pg_attrdef_indices[Num_pg_attrdef_indices] = {AttrDefaultIndex}; char *Name_pg_relcheck_indices[Num_pg_relcheck_indices] = {RelCheckIndex}; @@ -255,6 +257,11 @@ CatalogIndexFetchTuple(Relation heapRelation, } +/*--------------------------------------------------------------------- + * Class-specific index lookups + *--------------------------------------------------------------------- + */ + /* * The remainder of the file is for individual index scan routines. Each * index should be scanned according to how it was defined during bootstrap @@ -262,6 +269,78 @@ CatalogIndexFetchTuple(Relation heapRelation, * requires. Each routine returns the heap tuple that qualifies. */ HeapTuple +AccessMethodOpidIndexScan(Relation heapRelation, + Oid claid, + Oid opopr, + Oid opid) +{ + Relation idesc; + ScanKeyData skey[3]; + HeapTuple tuple; + + ScanKeyEntryInitialize(&skey[0], + (bits16) 0x0, + (AttrNumber) 1, + (RegProcedure) F_OIDEQ, + ObjectIdGetDatum(claid)); + + ScanKeyEntryInitialize(&skey[1], + (bits16) 0x0, + (AttrNumber) 2, + (RegProcedure) F_OIDEQ, + ObjectIdGetDatum(opopr)); + + ScanKeyEntryInitialize(&skey[2], + (bits16) 0x0, + (AttrNumber) 3, + (RegProcedure) F_OIDEQ, + ObjectIdGetDatum(opid)); + + idesc = index_openr(AccessMethodOpidIndex); + tuple = CatalogIndexFetchTuple(heapRelation, idesc, skey, 3); + + index_close(idesc); + + return tuple; +} + +HeapTuple +AccessMethodStrategyIndexScan(Relation heapRelation, + Oid opid, + Oid claid, + int2 opstrategy) +{ + Relation idesc; + ScanKeyData skey[3]; + HeapTuple tuple; + + ScanKeyEntryInitialize(&skey[0], + (bits16) 0x0, + (AttrNumber) 1, + (RegProcedure) F_OIDEQ, + ObjectIdGetDatum(opid)); + + ScanKeyEntryInitialize(&skey[1], + (bits16) 0x0, + (AttrNumber) 2, + (RegProcedure) F_OIDEQ, + ObjectIdGetDatum(claid)); + + ScanKeyEntryInitialize(&skey[2], + (bits16) 0x0, + (AttrNumber) 3, + (RegProcedure) F_INT2EQ, + Int16GetDatum(opstrategy)); + + idesc = index_openr(AccessMethodStrategyIndex); + tuple = CatalogIndexFetchTuple(heapRelation, idesc, skey, 3); + + index_close(idesc); + + return tuple; +} + +HeapTuple AttributeNameIndexScan(Relation heapRelation, Oid relid, char *attname) @@ -320,6 +399,28 @@ AttributeNumIndexScan(Relation heapRelation, return tuple; } +HeapTuple +IndexRelidIndexScan(Relation heapRelation, Oid relid) +{ + Relation idesc; + ScanKeyData skey[1]; + HeapTuple tuple; + + ScanKeyEntryInitialize(&skey[0], + (bits16) 0x0, + (AttrNumber) 1, + (RegProcedure) F_OIDEQ, + ObjectIdGetDatum(relid)); + + idesc = index_openr(IndexRelidIndex); + tuple = CatalogIndexFetchTuple(heapRelation, idesc, skey, 1); + + index_close(idesc); + + return tuple; +} + + HeapTuple ProcedureOidIndexScan(Relation heapRelation, Oid procId) |