]> 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:23 +0000 (23:54 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 14 Nov 2005 23:54:23 +0000 (23:54 +0000)
commit1bdf124b94af3c24d3c3083c820804274df8262b
tree580185c38a9903dd1bb390d099719e781044d2de
parente93fb885ebbf4ecbafe3e16813dc47397eda84ea
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