]> 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:34 +0000 (15:59 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 24 Sep 2014 19:59:34 +0000 (15:59 -0400)
commit3f6f9260e308a331e6809d5309b17d1613ff900f
treea48acb98fda0995927381412866e9342e24bf675
parentb1a52872ae68ce7fe9558a75295200a0d10d1f56
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