aboutsummaryrefslogtreecommitdiff
path: root/src/backend/optimizer/util/plancat.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/optimizer/util/plancat.c')
-rw-r--r--src/backend/optimizer/util/plancat.c79
1 files changed, 1 insertions, 78 deletions
diff --git a/src/backend/optimizer/util/plancat.c b/src/backend/optimizer/util/plancat.c
index 6225bc14fff..0479e93ec82 100644
--- a/src/backend/optimizer/util/plancat.c
+++ b/src/backend/optimizer/util/plancat.c
@@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/optimizer/util/plancat.c,v 1.156 2009/03/05 23:06:45 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/optimizer/util/plancat.c,v 1.157 2009/05/12 00:56:05 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -22,7 +22,6 @@
#include "access/sysattr.h"
#include "access/transam.h"
#include "catalog/catalog.h"
-#include "catalog/pg_inherits.h"
#include "miscadmin.h"
#include "nodes/makefuncs.h"
#include "nodes/nodeFuncs.h"
@@ -35,12 +34,9 @@
#include "parser/parsetree.h"
#include "rewrite/rewriteManip.h"
#include "storage/bufmgr.h"
-#include "utils/fmgroids.h"
#include "utils/lsyscache.h"
#include "utils/rel.h"
#include "utils/snapmgr.h"
-#include "utils/syscache.h"
-#include "utils/tqual.h"
/* GUC parameter */
@@ -851,79 +847,6 @@ join_selectivity(PlannerInfo *root,
}
/*
- * find_inheritance_children
- *
- * Returns a list containing the OIDs of all relations which
- * inherit *directly* from the relation with OID 'inhparent'.
- *
- * XXX might be a good idea to create an index on pg_inherits' inhparent
- * field, so that we can use an indexscan instead of sequential scan here.
- * However, in typical databases pg_inherits won't have enough entries to
- * justify an indexscan...
- */
-List *
-find_inheritance_children(Oid inhparent)
-{
- List *list = NIL;
- Relation relation;
- HeapScanDesc scan;
- HeapTuple inheritsTuple;
- Oid inhrelid;
- ScanKeyData key[1];
-
- /*
- * Can skip the scan if pg_class shows the relation has never had a
- * subclass.
- */
- if (!has_subclass(inhparent))
- return NIL;
-
- ScanKeyInit(&key[0],
- Anum_pg_inherits_inhparent,
- BTEqualStrategyNumber, F_OIDEQ,
- ObjectIdGetDatum(inhparent));
- relation = heap_open(InheritsRelationId, AccessShareLock);
- scan = heap_beginscan(relation, SnapshotNow, 1, key);
- while ((inheritsTuple = heap_getnext(scan, ForwardScanDirection)) != NULL)
- {
- inhrelid = ((Form_pg_inherits) GETSTRUCT(inheritsTuple))->inhrelid;
- list = lappend_oid(list, inhrelid);
- }
- heap_endscan(scan);
- heap_close(relation, AccessShareLock);
- return list;
-}
-
-/*
- * has_subclass
- *
- * In the current implementation, has_subclass returns whether a
- * particular class *might* have a subclass. It will not return the
- * correct result if a class had a subclass which was later dropped.
- * This is because relhassubclass in pg_class is not updated when a
- * subclass is dropped, primarily because of concurrency concerns.
- *
- * Currently has_subclass is only used as an efficiency hack to skip
- * unnecessary inheritance searches, so this is OK.
- */
-bool
-has_subclass(Oid relationId)
-{
- HeapTuple tuple;
- bool result;
-
- tuple = SearchSysCache(RELOID,
- ObjectIdGetDatum(relationId),
- 0, 0, 0);
- if (!HeapTupleIsValid(tuple))
- elog(ERROR, "cache lookup failed for relation %u", relationId);
-
- result = ((Form_pg_class) GETSTRUCT(tuple))->relhassubclass;
- ReleaseSysCache(tuple);
- return result;
-}
-
-/*
* has_unique_index
*
* Detect whether there is a unique index on the specified attribute