postgresql/src/include
Tom Lane 336c1d7a51 Avoid assuming that index-only scan data matches the index's rowtype.
In general the data returned by an index-only scan should have the
datatypes originally computed by FormIndexDatum.  If the index opclasses
use "storage" datatypes different from their input datatypes, the scan
tuple will not have the same rowtype attributed to the index; but we had
a hard-wired assumption that that was true in nodeIndexonlyscan.c.  We'd
already hacked around the issue for the one case where the types are
different in btree indexes (btree name_ops), but this would definitely
come back to bite us if we ever implement index-only scans in GiST.

To fix, require the index AM to explicitly provide the tupdesc for the
tuple it is returning.  btree can just pass back the index's tupdesc, but
GiST will have to work harder when and if it supports index-only scans.

I had previously proposed fixing this by allowing the index AM to fill the
scan tuple slot directly; but on reflection that seemed like a module
layering violation, since TupleTableSlots are creatures of the executor.
At least in the btree case, it would also be less efficient, since the
tuple deconstruction work would occur even for rows later found to be
invisible to the scan's snapshot.
2011-10-16 19:15:04 -04:00
..
access Avoid assuming that index-only scan data matches the index's rowtype. 2011-10-16 19:15:04 -04:00
bootstrap Stamp copyrights for year 2011. 2011-01-01 13:18:15 -05:00
catalog Teach btree to handle ScalarArrayOpExpr quals natively. 2011-10-16 15:39:24 -04:00
commands Measure the number of all-visible pages for use in index-only scan costing. 2011-10-14 17:23:46 -04:00
datatype Move Timestamp/Interval typedefs and basic macros into datatype/timestamp.h. 2011-09-09 13:23:41 -04:00
executor Rearrange the implementation of index-only scans. 2011-10-11 14:21:30 -04:00
foreign pgindent run before PG 9.1 beta 1. 2011-04-10 11:42:00 -04:00
lib Add missing format attributes 2011-09-10 23:12:46 +03:00
libpq Move Timestamp/Interval typedefs and basic macros into datatype/timestamp.h. 2011-09-09 13:23:41 -04:00
mb Fix char2wchar/wchar2char to support collations properly. 2011-04-23 12:35:41 -04:00
nodes Teach btree to handle ScalarArrayOpExpr quals natively. 2011-10-16 15:39:24 -04:00
optimizer Measure the number of all-visible pages for use in index-only scan costing. 2011-10-14 17:23:46 -04:00
parser Add notion of a "transform function" that can simplify function calls. 2011-06-21 22:21:24 -04:00
port Revert "Force use of "%I64d" format for 64 bit ints on MinGW." 2011-04-27 14:55:18 -04:00
portability Stamp copyrights for year 2011. 2011-01-01 13:18:15 -05:00
postmaster Remove unnecessary #include references, per pgrminclude script. 2011-09-01 10:04:27 -04:00
regex Teach regular expression operators to honor collations. 2011-04-10 18:03:09 -04:00
replication Split walsender.h in public/private headers 2011-09-13 21:42:49 -03:00
rewrite Try to acquire relation locks in RangeVarGetRelid. 2011-07-08 22:19:30 -04:00
snowball Add markers for skips. 2011-08-26 18:15:13 -04:00
storage Remove all "traces" of trace_userlocks, because userlocks were removed 2011-10-13 19:59:57 -04:00
tcop Clean up the #include mess a little. 2011-09-04 01:13:16 -04:00
tsearch Remove unnecessary #include references, per pgrminclude script. 2011-09-01 10:04:27 -04:00
utils Improve and simplify CREATE EXTENSION's management of GUC variables. 2011-10-05 20:44:16 -04:00
.gitignore Convert cvsignore to gitignore, and add .gitignore for build targets. 2010-09-22 12:57:04 +02:00
c.h Use a macro variable PG_PRINTF_ATTRIBUTE for the style used for checking printf type functions. 2011-04-28 10:56:14 -04:00
fmgr.h Pgindent run before 9.1 beta2. 2011-06-09 14:32:50 -04:00
funcapi.h Stamp copyrights for year 2011. 2011-01-01 13:18:15 -05:00
getaddrinfo.h Stamp copyrights for year 2011. 2011-01-01 13:18:15 -05:00
getopt_long.h Stamp copyrights for year 2011. 2011-01-01 13:18:15 -05:00
Makefile Add datatype directory to SUBDIRS. 2011-09-11 04:07:12 +09:00
miscadmin.h Add postmaster/postgres undocumented -b option for binary upgrades. 2011-04-25 12:00:21 -04:00
pg_config_manual.h Revert accidental change to pg_config_manual.h. 2011-10-09 22:20:44 -04:00
pg_config.h.in Make pgbench use erand48() rather than random(). 2011-08-03 16:26:40 -04:00
pg_config.h.win32 Correct the lie in pg_config.h.win32 about having inttypes.h. 2011-08-08 08:52:05 -04:00
pg_trace.h Add markers. 2011-08-26 18:15:14 -04:00
pgstat.h Move Timestamp/Interval typedefs and basic macros into datatype/timestamp.h. 2011-09-09 13:23:41 -04:00
pgtime.h Simplify handling of the timezone GUC by making initdb choose the default. 2011-09-09 17:59:11 -04:00
port.h setlocale() on Windows doesn't work correctly if the locale name contains 2011-09-01 11:08:32 +03:00
postgres_ext.h Remove cvs keywords from all files. 2010-09-20 22:08:53 +02:00
postgres_fe.h Stamp copyrights for year 2011. 2011-01-01 13:18:15 -05:00
postgres.h Stamp copyrights for year 2011. 2011-01-01 13:18:15 -05:00
rusagestub.h Stamp copyrights for year 2011. 2011-01-01 13:18:15 -05:00
windowapi.h Stamp copyrights for year 2011. 2011-01-01 13:18:15 -05:00