aboutsummaryrefslogtreecommitdiff
path: root/src/backend/catalog/indexing.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/catalog/indexing.c')
-rw-r--r--src/backend/catalog/indexing.c113
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)