]> granicus.if.org Git - postgresql/commit
Fix bogus variable-mangling in security_barrier_replace_vars().
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 24 Sep 2014 19:59:37 +0000 (15:59 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 24 Sep 2014 19:59:37 +0000 (15:59 -0400)
commit54b8ed6c24736d7ad55f56dbaa2696ae05c4bded
tree94356a8e0025457ce1d0056a1c91a54ca691336a
parent2c7946e4b8a623f7972fd87f8a1226e48f74ca7f
Fix bogus variable-mangling in security_barrier_replace_vars().

This function created new Vars with varno different from varnoold, which
is a condition that should never prevail before setrefs.c does the final
variable-renumbering pass.  The created Vars could not be seen as equal()
to normal Vars, which among other things broke equivalence-class processing
for them.  The consequences of this were indeed visible in the regression
tests, in the form of failure to propagate constants as one would expect.
I stumbled across it while poking at bug #11457 --- after intentionally
disabling join equivalence processing, the security-barrier regression
tests started falling over with fun errors like "could not find pathkey
item to sort", because of failure to match the corrupted Vars to normal
ones.
src/backend/optimizer/prep/prepsecurity.c
src/test/regress/expected/updatable_views.out