]> granicus.if.org Git - postgresql/commit
Fix gincostestimate to handle ScalarArrayOpExpr reasonably.
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 21 Dec 2011 00:57:40 +0000 (19:57 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 21 Dec 2011 00:57:40 +0000 (19:57 -0500)
commit5d7d12de56be2c746bfc30214d3300644e8dc0f3
treedb175e7b521a444d5f7bb863a74aca40ace9fa40
parenta63a7a5b091f8b833169476e8de18100fb1cb73d
Fix gincostestimate to handle ScalarArrayOpExpr reasonably.

The original coding of this function overlooked the possibility that
it could be passed anything except simple OpExpr indexquals.  But
ScalarArrayOpExpr is possible too, and the code would probably crash
(and surely give ridiculous answers) in such a case.  Add logic to try
to estimate sanely for such cases.

In passing, fix the treatment of inner-indexscan cost estimation: it was
failing to scale up properly for multiple iterations of a nestloop.
(I think somebody might've thought that index_pages_fetched() is linear,
but of course it's not.)

Report, diagnosis, and preliminary patch by Marti Raudsepp; I refactored
it a bit and fixed the cost estimation.

Back-patch into 9.1 where the bogus code was introduced.
src/backend/utils/adt/selfuncs.c
src/test/regress/expected/tsearch.out
src/test/regress/sql/tsearch.sql