]> granicus.if.org Git - postgresql/commit
Fix best_inner_indexscan to return both the cheapest-total-cost and
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 22 May 2007 01:40:33 +0000 (01:40 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 22 May 2007 01:40:33 +0000 (01:40 +0000)
commitd7153c5fadca610248775ef9c22ede85f08fd26a
tree989a2483def7d8b8805353a8341a4607c54aec29
parent2415ad983174164ff30ce487c0e6b4b53321b83a
Fix best_inner_indexscan to return both the cheapest-total-cost and
cheapest-startup-cost innerjoin indexscans, and make joinpath.c consider
both of these (when different) as the inside of a nestloop join.  The
original design was based on the assumption that indexscan paths always
have negligible startup cost, and so total cost is the only important
figure of merit; an assumption that's obviously broken by bitmap
indexscans.  This oversight could lead to choosing poor plans in cases
where fast-start behavior is more important than total cost, such as
LIMIT and IN queries.  8.1-vintage brain fade exposed by an example from
Chuck D.
src/backend/nodes/outfuncs.c
src/backend/optimizer/path/indxpath.c
src/backend/optimizer/path/joinpath.c
src/include/nodes/relation.h
src/include/optimizer/paths.h