aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/numeric.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2016-11-02 14:32:13 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2016-11-02 14:32:13 -0400
commitf4d865f22d0f6fab1525786a8b98051d29214f30 (patch)
tree5f1ad9697349c6a4fcef8c58e3b004f071d71a2e /src/backend/utils/adt/numeric.c
parent2a8783e440b5ede18e16b48c37be65ce7caedd52 (diff)
downloadpostgresql-f4d865f22d0f6fab1525786a8b98051d29214f30.tar.gz
postgresql-f4d865f22d0f6fab1525786a8b98051d29214f30.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 'src/backend/utils/adt/numeric.c')
0 files changed, 0 insertions, 0 deletions