Fix bogus variable-mangling in security_barrier_replace_vars().

Tom Lane <tgl@sss.pgh.pa.us>

Commit: 3f6f9260e308a331e6809d5309b17d1613ff900f
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: 2014-09-24T19:59:34Z
Releases: 9.5.0
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.

Files