diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2016-11-02 14:32:13 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2016-11-02 14:32:13 -0400 |
commit | da8f3ebf30bef9c950595dc0d1f03bce2b1b8563 (patch) | |
tree | b0bddd740f9230e69fbaf62627aca312b287be46 /contrib/postgres_fdw/postgres_fdw.c | |
parent | 00a86856c1195f3f653672d3b06aa9e4a4aeab82 (diff) | |
download | postgresql-da8f3ebf30bef9c950595dc0d1f03bce2b1b8563.tar.gz postgresql-da8f3ebf30bef9c950595dc0d1f03bce2b1b8563.zip |
Don't convert Consts into Vars during setrefs.c processing.
While converting expressions in an upper-level plan node so that they
reference Vars and expressions provided by the input plan node(s),
don't convert plain Const items, even if there happens to be a matching
Const in the input. It's silly to do so because a Var is more expensive to
execute than a Const. Moreover, converting can fool ExecCheckPlanOutput's
check that an insert or update query inserts nulls into dropped columns,
leading to "query provides a value for a dropped column" errors during
INSERT or UPDATE on a table with a dropped column. We could solve this
by making that check more complicated, but I don't see the point; this fix
should save a marginal number of cycles, and it also makes for less messy
EXPLAIN output, as shown by the ensuing regression test result changes.
Per report from Pavel HanĂ¡k. I have not incorporated a test case based
on that example, as there doesn't seem to be a simple way of checking
this in isolation without making a bunch of assumptions about other
planner and SQL-function behavior.
Back-patch to 9.6. This setrefs.c behavior exists much further back,
but there is not currently reason to think that it causes problems
before 9.6.
Discussion: <83shraampf.fsf@is-it.eu>
Diffstat (limited to 'contrib/postgres_fdw/postgres_fdw.c')
0 files changed, 0 insertions, 0 deletions