aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/selfuncs.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/utils/adt/selfuncs.c')
-rw-r--r--src/backend/utils/adt/selfuncs.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/backend/utils/adt/selfuncs.c b/src/backend/utils/adt/selfuncs.c
index 082089b9f11..5f830ef0cd3 100644
--- a/src/backend/utils/adt/selfuncs.c
+++ b/src/backend/utils/adt/selfuncs.c
@@ -15,7 +15,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/utils/adt/selfuncs.c,v 1.203 2006/04/27 17:52:40 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/adt/selfuncs.c,v 1.204 2006/05/02 04:34:18 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -3265,19 +3265,27 @@ examine_variable(PlannerInfo *root, Node *node, int varRelid,
(varRelid == 0 || varRelid == ((Var *) basenode)->varno))
{
Var *var = (Var *) basenode;
- Oid relid;
+ RangeTblEntry *rte;
vardata->var = basenode; /* return Var without relabeling */
vardata->rel = find_base_rel(root, var->varno);
vardata->atttype = var->vartype;
vardata->atttypmod = var->vartypmod;
- relid = getrelid(var->varno, root->parse->rtable);
+ rte = rt_fetch(var->varno, root->parse->rtable);
- if (OidIsValid(relid))
+ if (rte->inh)
+ {
+ /*
+ * XXX This means the Var represents a column of an append relation.
+ * Later add code to look at the member relations and try to derive
+ * some kind of combined statistics?
+ */
+ }
+ else if (rte->rtekind == RTE_RELATION)
{
vardata->statsTuple = SearchSysCache(STATRELATT,
- ObjectIdGetDatum(relid),
+ ObjectIdGetDatum(rte->relid),
Int16GetDatum(var->varattno),
0, 0);
}