postgresql/src
Tom Lane 6d2c8c0e2a Drop cheap-startup-cost paths during add_path() if we don't need them.
We can detect whether the planner top level is going to care at all about
cheap startup cost (it will only do so if query_planner's tuple_fraction
argument is greater than zero).  If it isn't, we might as well discard
paths immediately whose only advantage over others is cheap startup cost.
This turns out to get rid of quite a lot of paths in complex queries ---
I saw planner runtime reduction of more than a third on one large query.

Since add_path isn't currently passed the PlannerInfo "root", the easiest
way to tell it whether to do this was to add a bool flag to RelOptInfo.
That's a bit redundant, since all relations in a given query level will
have the same setting.  But in the future it's possible that we'd refine
the control decision to work on a per-relation basis, so this seems like
a good arrangement anyway.

Per my suggestion of a few months ago.
2012-09-01 18:16:24 -04:00
..
backend Drop cheap-startup-cost paths during add_path() if we don't need them. 2012-09-01 18:16:24 -04:00
bin psql: Reduce compatibility warning 2012-08-31 23:28:14 -04:00
include Drop cheap-startup-cost paths during add_path() if we don't need them. 2012-09-01 18:16:24 -04:00
interfaces libpq: Fix memory leak in URI parser 2012-08-23 22:33:04 -04:00
makefiles Remove BSD/OS (BSDi) port. There are no known users upgrading to 2012-05-03 10:58:44 -04:00
pl Split tuple struct defs from htup.h to htup_details.h 2012-08-30 16:52:35 -04:00
port Add strerror() string to chdir() error message 2012-08-28 23:01:23 -04:00
template Remove BSD/OS (BSDi) port. There are no known users upgrading to 2012-05-03 10:58:44 -04:00
test Drop cheap-startup-cost paths during add_path() if we don't need them. 2012-09-01 18:16:24 -04:00
timezone Update time zone data files to tzdata release 2012e. 2012-08-14 10:54:24 -04:00
tools Restore setting of _USE_32BIT_TIME_T to 32 bit MSVC builds. 2012-08-31 20:38:37 -04:00
tutorial Update copyright notices for year 2012. 2012-01-01 18:01:58 -05:00
.gitignore Convert cvsignore to gitignore, and add .gitignore for build targets. 2010-09-22 12:57:04 +02:00
bcc32.mak Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
DEVELOPERS Replace a couple of references to files that no longer exist in the source 2009-05-04 08:08:47 +00:00
Makefile Fix some oversights in distprep and maintainer-clean targets. 2011-03-10 00:04:05 -05:00
Makefile.global.in Remove configure flag --disable-shared, as it is no longer used by any 2012-08-30 16:26:53 -04:00
Makefile.shlib Remove configure flag --disable-shared, as it is no longer used by any 2012-08-30 16:26:53 -04:00
nls-global.mk Lots of doc corrections. 2012-04-23 22:43:09 -04:00
win32.mak Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00