From: | Tomas Vondra <tv(at)fuzzy(dot)cz> |
---|---|
To: | pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | FDW / list of needed columns, WHERE conditions (in PlanForeignScan) |
Date: | 2012-05-28 20:46:41 |
Message-ID: | 4FC3E431.20704@fuzzy.cz |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi,
I'm writing my first FDW, and I need to get the list of columns I
actually need to fetch when planning the query. I do want to fetch only
the columns that are actually needed, not all of them.
Initially I've used RelOptInfo->reltargetlist but it seems it does not
cover cases like
SELECT 1 FROM FDW WHERE column_a = 1
and so on. Even RelOptInfo->attr_needed seems not to work as this
returns "not needed" for all columns:
for (i = baserel->min_attr; i <= baserel->max_attr; i++) {
if (baserel->attr_needed[i-baserel->min_attr] != NULL)
elog(WARNING, "attr %d needed", i);
else
elog(WARNING, "attr %d not needed", i);
}
Where to get this info?
Also, I'd like to apply as much restrictions as possible when executing
the plan. I see there's PlanState->qual, described as "implicitly-ANDed
qual conditions", which I assume is what I need. But this seems to be
available only in BeginForeignScan (as ss.ps.qual in ForeignScanState),
not in planning which is the place where I need to compute estimates
etc. Where do I get this, when planning the query?
kind regards
Tomas
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2012-05-28 21:20:37 | Re: FDW / list of needed columns, WHERE conditions (in PlanForeignScan) |
Previous Message | Magnus Hagander | 2012-05-28 20:38:24 | Re: pg_basebackup --xlog compatibility break |