diff options
Diffstat (limited to 'src/backend/utils/adt/selfuncs.c')
-rw-r--r-- | src/backend/utils/adt/selfuncs.c | 18 |
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); } |