postgresql/src/include/nodes
Tom Lane c38b75947e Tweak ExecIndexEvalRuntimeKeys to forcibly detoast any toasted comparison
values before they get passed to the index access method.  This avoids
repeated detoastings that will otherwise ensue as the comparison value
is examined by various index support functions.  We have seen a couple of
reports of cases where repeated detoastings result in an order-of-magnitude
slowdown, so it seems worth adding a bit of extra logic to prevent this.

I had previously proposed trying to avoid duplicate detoastings in general,
but this fix takes care of what seems the most important case in practice
with very little effort or risk.

Back-patch to 8.4 so that the PostGIS folk won't have to wait a year to
have this fix in a production release.  (The issue exists further back,
of course, but the code's diverged enough to make backpatching further a
higher-risk action.  Also it appears that the possible gains may be limited
in prior releases because of different handling of lossy operators.)
2009-08-23 18:26:08 +00:00
..
bitmapset.h Update copyright for 2009. 2009-01-01 17:24:05 +00:00
execnodes.h Tweak ExecIndexEvalRuntimeKeys to forcibly detoast any toasted comparison 2009-08-23 18:26:08 +00:00
makefuncs.h Make backend header files C++ safe 2009-07-16 06:33:46 +00:00
memnodes.h Make backend header files C++ safe 2009-07-16 06:33:46 +00:00
nodeFuncs.h 8.4 pgindent run, with new combined Linux/FreeBSD/MinGW typedef list 2009-06-11 14:49:15 +00:00
nodes.h Merge the Constraint and FkConstraint node types into a single type. 2009-07-30 02:45:38 +00:00
params.h Update copyright for 2009. 2009-01-01 17:24:05 +00:00
parsenodes.h Add ALTER TABLE ... ALTER COLUMN ... SET STATISTICS DISTINCT 2009-08-02 22:14:53 +00:00
pg_list.h 8.4 pgindent run, with new combined Linux/FreeBSD/MinGW typedef list 2009-06-11 14:49:15 +00:00
plannodes.h 8.4 pgindent run, with new combined Linux/FreeBSD/MinGW typedef list 2009-06-11 14:49:15 +00:00
primnodes.h Make backend header files C++ safe 2009-07-16 06:33:46 +00:00
print.h Update copyright for 2009. 2009-01-01 17:24:05 +00:00
readfuncs.h Update copyright for 2009. 2009-01-01 17:24:05 +00:00
relation.h Make GEQO's planning deterministic by having it start from a predictable 2009-07-16 20:55:44 +00:00
tidbitmap.h 8.4 pgindent run, with new combined Linux/FreeBSD/MinGW typedef list 2009-06-11 14:49:15 +00:00
value.h Update copyright for 2009. 2009-01-01 17:24:05 +00:00