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.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/src/backend/optimizer/util/plancat.c b/src/backend/optimizer/util/plancat.c
index 029ddae189c..943e5752faa 100644
--- a/src/backend/optimizer/util/plancat.c
+++ b/src/backend/optimizer/util/plancat.c
@@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/util/plancat.c,v 1.79 2003/02/09 06:56:27 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/util/plancat.c,v 1.80 2003/05/11 15:03:52 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -62,8 +62,15 @@ get_relation_info(Oid relationObjectId, RelOptInfo *rel)
relation = heap_open(relationObjectId, AccessShareLock);
/*
- * Make list of physical Vars. Note we do NOT ignore dropped columns;
- * the intent is to model the physical tuples of the relation.
+ * Make list of physical Vars. But if there are any dropped columns,
+ * punt and set varlist to NIL. (XXX Ideally we would like to include
+ * dropped columns so that the varlist models the physical tuples
+ * of the relation. However this creates problems for ExecTypeFromTL,
+ * which may be asked to build a tupdesc for a tlist that includes vars
+ * of no-longer-existent types. In theory we could dig out the required
+ * info from the pg_attribute entries of the relation, but that data is
+ * not readily available to ExecTypeFromTL. For now, punt and don't
+ * apply the physical-tlist optimization when there are dropped cols.)
*/
numattrs = RelationGetNumberOfAttributes(relation);
@@ -71,6 +78,13 @@ get_relation_info(Oid relationObjectId, RelOptInfo *rel)
{
Form_pg_attribute att_tup = relation->rd_att->attrs[attrno - 1];
+ if (att_tup->attisdropped)
+ {
+ /* found a dropped col, so punt */
+ varlist = NIL;
+ break;
+ }
+
varlist = lappend(varlist,
makeVar(varno,
attrno,