]> granicus.if.org Git - postgresql/commit
Restore the former RestrictInfo field valid_everywhere (but invert the flag
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 14 Nov 2005 23:54:36 +0000 (23:54 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 14 Nov 2005 23:54:36 +0000 (23:54 +0000)
commit659d3b2b0ecda0726957c106522f9cbd477cf4ee
tree5b657add3a305c0e931021eb03c5d10ea42621c7
parentc42d63335211852d6253b4240cb69ed84d0f1d0f
Restore the former RestrictInfo field valid_everywhere (but invert the flag
sense and rename to "outerjoin_delayed" to more clearly reflect what it
means).  I had decided that it was redundant in 8.1, but the folly of this
is exposed by a bug report from Sebastian Böck.  The place where it's
needed is to prevent orindxpath.c from cherry-picking arms of an outer-join
OR clause to form a relation restriction that isn't actually legal to push
down to the relation scan level.  There may be some legal cases that this
forbids optimizing, but we'd need much closer analysis to determine it.
src/backend/nodes/copyfuncs.c
src/backend/nodes/equalfuncs.c
src/backend/nodes/outfuncs.c
src/backend/optimizer/path/indxpath.c
src/backend/optimizer/path/orindxpath.c
src/backend/optimizer/plan/initsplan.c
src/backend/optimizer/util/restrictinfo.c
src/include/nodes/relation.h
src/include/optimizer/restrictinfo.h