postgresql/src/include/utils
Tom Lane c66e4f138b Improve GiST range-contained-by searches by adding a flag for empty ranges.
In the original implementation, a range-contained-by search had to scan
the entire index because an empty range could be lurking anywhere.
Improve that by adding a flag to upper GiST entries that says whether the
represented subtree contains any empty ranges.

Also, make a simple mod to the penalty function to discourage empty ranges
from getting pushed into subtrees without any.  This needs more work, and
the picksplit function should be taught about it too, but that code can be
improved without causing an on-disk compatibility break; so we'll leave it
for another day.

Since we're breaking on-disk compatibility of range values anyway, I took
the opportunity to reorganize the range flags bits; the unused
RANGE_xB_NULL bits are now adjacent, which might open the door for using
them in some other way later.

In passing, remove the GiST range opclass entry for <>, which doesn't seem
like it can really be indexed usefully.

Alexander Korotkov, with some editorializing by Tom
2011-11-27 16:51:29 -05:00
..
.gitignore Avoid maintaining three separate copies of the error codes list. 2011-02-03 22:32:49 -05:00
acl.h Remove partial and undocumented GRANT .. FOREIGN TABLE support. 2011-04-25 16:39:18 -04:00
array.h Add FOREACH IN ARRAY looping to plpgsql. 2011-02-16 01:53:03 -05:00
ascii.h Code review for pgstat_get_crashed_backend_activity patch. 2011-10-21 16:36:04 -04:00
attoptcache.h Stamp copyrights for year 2011. 2011-01-01 13:18:15 -05:00
builtins.h Further code review for range types patch. 2011-11-20 23:50:27 -05:00
bytea.h pgindent run before PG 9.1 beta 1. 2011-04-10 11:42:00 -04:00
cash.h Add casts from int4 and int8 to numeric. 2011-04-05 09:35:43 -04:00
catcache.h Revise sinval code to remove no-longer-used tuple TID from inval messages. 2011-08-16 19:27:46 -04:00
combocid.h Stamp copyrights for year 2011. 2011-01-01 13:18:15 -05:00
date.h Stamp copyrights for year 2011. 2011-01-01 13:18:15 -05:00
datetime.h Move Timestamp/Interval typedefs and basic macros into datatype/timestamp.h. 2011-09-09 13:23:41 -04:00
datum.h Stamp copyrights for year 2011. 2011-01-01 13:18:15 -05:00
dynahash.h Stamp copyrights for year 2011. 2011-01-01 13:18:15 -05:00
dynamic_loader.h Stamp copyrights for year 2011. 2011-01-01 13:18:15 -05:00
elog.h Add an errdetail_internal() ereport auxiliary routine. 2011-07-16 14:22:15 -04:00
fmgrtab.h Stamp copyrights for year 2011. 2011-01-01 13:18:15 -05:00
formatting.h Per-column collation support 2011-02-08 23:04:18 +02:00
geo_decls.h Stamp copyrights for year 2011. 2011-01-01 13:18:15 -05:00
guc.h Improve and simplify CREATE EXTENSION's management of GUC variables. 2011-10-05 20:44:16 -04:00
guc_tables.h Remember the source GucContext for each GUC parameter. 2011-10-04 16:13:50 -04:00
help_config.h Stamp copyrights for year 2011. 2011-01-01 13:18:15 -05:00
hsearch.h Pgindent run before 9.1 beta2. 2011-06-09 14:32:50 -04:00
inet.h Make DatumGetInetP() unpack inet datums with a 1-byte header, and add 2011-11-08 22:39:43 +02:00
int8.h Stamp copyrights for year 2011. 2011-01-01 13:18:15 -05:00
inval.h Remove unnecessary #include references, per pgrminclude script. 2011-09-01 10:04:27 -04:00
logtape.h Stamp copyrights for year 2011. 2011-01-01 13:18:15 -05:00
lsyscache.h Support range data types. 2011-11-03 13:42:15 +02:00
memutils.h Redesign the plancache mechanism for more flexibility and efficiency. 2011-09-16 00:43:52 -04:00
nabstime.h Move Timestamp/Interval typedefs and basic macros into datatype/timestamp.h. 2011-09-09 13:23:41 -04:00
numeric.h pgindent run before PG 9.1 beta 1. 2011-04-10 11:42:00 -04:00
palloc.h Stamp copyrights for year 2011. 2011-01-01 13:18:15 -05:00
pg_crc.h Stamp copyrights for year 2011. 2011-01-01 13:18:15 -05:00
pg_locale.h Fix char2wchar/wchar2char to support collations properly. 2011-04-23 12:35:41 -04:00
pg_lzcompress.h Remove cvs keywords from all files. 2010-09-20 22:08:53 +02:00
pg_rusage.h Stamp copyrights for year 2011. 2011-01-01 13:18:15 -05:00
plancache.h Redesign the plancache mechanism for more flexibility and efficiency. 2011-09-16 00:43:52 -04:00
portal.h Move Timestamp/Interval typedefs and basic macros into datatype/timestamp.h. 2011-09-09 13:23:41 -04:00
ps_status.h Remove cvs keywords from all files. 2010-09-20 22:08:53 +02:00
rangetypes.h Improve GiST range-contained-by searches by adding a flag for empty ranges. 2011-11-27 16:51:29 -05:00
rbtree.h pgindent run before PG 9.1 beta 1. 2011-04-10 11:42:00 -04:00
rel.h Move Trigger and TriggerDesc structs out of rel.h into a new reltrigger.h 2011-07-04 14:35:58 -04:00
relcache.h Remove unnecessary #include references, per pgrminclude script. 2011-09-01 10:04:27 -04:00
relmapper.h Stamp copyrights for year 2011. 2011-01-01 13:18:15 -05:00
reltrigger.h Move Trigger and TriggerDesc structs out of rel.h into a new reltrigger.h 2011-07-04 14:35:58 -04:00
resowner.h Remove unnecessary #include references, per pgrminclude script. 2011-09-01 10:04:27 -04:00
selfuncs.h Change get_variable_numdistinct's API to flag default estimates explicitly. 2011-09-04 15:41:49 -04:00
snapmgr.h Support synchronization of snapshots through an export/import procedure. 2011-10-22 18:23:30 -04:00
snapshot.h Stamp copyrights for year 2011. 2011-01-01 13:18:15 -05:00
spccache.h Stamp copyrights for year 2011. 2011-01-01 13:18:15 -05:00
syscache.h Support range data types. 2011-11-03 13:42:15 +02:00
timestamp.h Move Timestamp/Interval typedefs and basic macros into datatype/timestamp.h. 2011-09-09 13:23:41 -04:00
tqual.h Stamp copyrights for year 2011. 2011-01-01 13:18:15 -05:00
tuplesort.h Pass collations to functions in FunctionCallInfoData, not FmgrInfo. 2011-04-12 19:19:24 -04:00
tuplestore.h Stamp copyrights for year 2011. 2011-01-01 13:18:15 -05:00
typcache.h Restructure function-internal caching in the range type code. 2011-11-15 13:05:45 -05:00
tzparser.h Revise the API for GUC variable assign hooks. 2011-04-07 00:12:02 -04:00
uuid.h Stamp copyrights for year 2011. 2011-01-01 13:18:15 -05:00
varbit.h pgindent run before PG 9.1 beta 1. 2011-04-10 11:42:00 -04:00
xml.h Rewrite libxml error handling to be more robust. 2011-07-20 13:03:49 -04:00