postgresql/src/include/utils
Tom Lane 6fcb337fa5 Redesign tablesample method API, and do extensive code review.
The original implementation of TABLESAMPLE modeled the tablesample method
API on index access methods, which wasn't a good choice because, without
specialized DDL commands, there's no way to build an extension that can
implement a TSM.  (Raw inserts into system catalogs are not an acceptable
thing to do, because we can't undo them during DROP EXTENSION, nor will
pg_upgrade behave sanely.)  Instead adopt an API more like procedural
language handlers or foreign data wrappers, wherein the only SQL-level
support object needed is a single handler function identified by having
a special return type.  This lets us get rid of the supporting catalog
altogether, so that no custom DDL support is needed for the feature.

Adjust the API so that it can support non-constant tablesample arguments
(the original coding assumed we could evaluate the argument expressions at
ExecInitSampleScan time, which is undesirable even if it weren't outright
unsafe), and discourage sampling methods from looking at invisible tuples.
Make sure that the BERNOULLI and SYSTEM methods are genuinely repeatable
within and across queries, as required by the SQL standard, and deal more
honestly with methods that can't support that requirement.

Make a full code-review pass over the tablesample additions, and fix
assorted bugs, omissions, infelicities, and cosmetic issues (such as
failure to put the added code stanzas in a consistent ordering).
Improve EXPLAIN's output of tablesample plans, too.

Back-patch to 9.5 so that we don't have to support the original API
in production.
2015-07-25 14:39:00 -04:00
..
.gitignore Avoid maintaining three separate copies of the error codes list. 2011-02-03 22:32:49 -05:00
acl.h pgindent run for 9.5 2015-05-23 21:35:49 -04:00
aclchk_internal.h pgindent run for 9.5 2015-05-23 21:35:49 -04:00
array.h Support "expanded" objects, particularly arrays, for better performance. 2015-05-14 12:08:49 -04:00
arrayaccess.h Support "expanded" objects, particularly arrays, for better performance. 2015-05-14 12:08:49 -04:00
ascii.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
attoptcache.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
builtins.h Redesign tablesample method API, and do extensive code review. 2015-07-25 14:39:00 -04:00
bytea.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
cash.h Add casts from int4 and int8 to numeric. 2011-04-05 09:35:43 -04:00
catcache.h Use FLEXIBLE_ARRAY_MEMBER in a bunch more places. 2015-02-20 00:11:42 -05:00
combocid.h Create an infrastructure for parallel computation in PostgreSQL. 2015-04-30 15:02:14 -04:00
date.h Define integer limits independently from the system definitions. 2015-04-02 17:43:35 +02:00
datetime.h Tweak __attribute__-wrapping macros for better pgindent results. 2015-03-26 14:03:25 -04:00
datum.h Support "expanded" objects, particularly arrays, for better performance. 2015-05-14 12:08:49 -04:00
dynahash.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
dynamic_loader.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
elog.h Tweak __attribute__-wrapping macros for better pgindent results. 2015-03-26 14:03:25 -04:00
evtcache.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
expandeddatum.h Support "expanded" objects, particularly arrays, for better performance. 2015-05-14 12:08:49 -04:00
fmgrtab.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
formatting.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
geo_decls.h Allow GiST distance function to return merely a lower-bound. 2015-05-15 14:26:51 +03:00
guc.h Improve design and implementation of pg_file_settings view. 2015-06-28 18:06:14 -04:00
guc_tables.h pgindent run for 9.5 2015-05-23 21:35:49 -04:00
help_config.h Tweak __attribute__-wrapping macros for better pgindent results. 2015-03-26 14:03:25 -04:00
hsearch.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
inet.h Add index-only scan support to inet GiST opclass. 2015-03-28 15:11:53 +02:00
int8.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
inval.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
json.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
jsonapi.h Support JSON negative array subscripts everywhere 2015-07-17 21:06:39 -04:00
jsonb.h Rename jsonb_replace to jsonb_set and allow it to add new values 2015-05-31 20:34:10 -04:00
logtape.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
lsyscache.h Redesign tablesample method API, and do extensive code review. 2015-07-25 14:39:00 -04:00
memdebug.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
memutils.h Move memory context callback declarations into palloc.h. 2015-03-01 12:31:32 -05:00
nabstime.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
numeric.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
palloc.h pgindent run for 9.5 2015-05-23 21:35:49 -04:00
pg_crc.h pgindent run for 9.5 2015-05-23 21:35:49 -04:00
pg_locale.h Revoke support for strxfrm() that write past the specified array length. 2015-07-08 20:44:25 -04:00
pg_lsn.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
pg_rusage.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
plancache.h pgindent run for 9.5 2015-05-23 21:35:49 -04:00
portal.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
ps_status.h Remove cvs keywords from all files. 2010-09-20 22:08:53 +02:00
rangetypes.h Move strategy numbers to include/access/stratnum.h 2015-05-15 17:03:16 -03:00
rel.h Fix more typos in comments. 2015-05-20 19:45:43 +03:00
relcache.h Fix the logic for putting relations into the relcache init file. 2015-06-25 14:39:05 -04:00
relfilenodemap.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
relmapper.h Use FLEXIBLE_ARRAY_MEMBER in a bunch more places. 2015-02-20 00:11:42 -05:00
reltrigger.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
resowner.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
resowner_private.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
rls.h pgindent run for 9.5 2015-05-23 21:35:49 -04:00
ruleutils.h pgindent run for 9.5 2015-05-23 21:35:49 -04:00
sampling.h pgindent run for 9.5 2015-05-23 21:35:49 -04:00
selfuncs.h pgindent run for 9.5 2015-05-23 21:35:49 -04:00
snapmgr.h Create an infrastructure for parallel computation in PostgreSQL. 2015-04-30 15:02:14 -04:00
snapshot.h pgindent run for 9.5 2015-05-23 21:35:49 -04:00
sortsupport.h pgindent run for 9.5 2015-05-23 21:35:49 -04:00
spccache.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
syscache.h Redesign tablesample method API, and do extensive code review. 2015-07-25 14:39:00 -04:00
timeout.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
timestamp.h Add transform functions for AT TIME ZONE. 2015-03-01 13:22:34 -05:00
tqual.h Add opaque declaration of HTAB to tqual.h. 2015-06-27 09:55:06 -05:00
tuplesort.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
tuplestore.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
typcache.h Use the typcache to cache constraints for domain types. 2015-03-01 14:06:55 -05:00
tzparser.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
uuid.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
varbit.h Use FLEXIBLE_ARRAY_MEMBER in a bunch more places. 2015-02-20 00:11:42 -05:00
xml.h Update copyright for 2015 2015-01-06 11:43:47 -05:00