postgresql/src/test/regress/sql
Robert Haas f49842d1ee Basic partition-wise join functionality.
Instead of joining two partitioned tables in their entirety we can, if
it is an equi-join on the partition keys, join the matching partitions
individually.  This involves teaching the planner about "other join"
rels, which are related to regular join rels in the same way that
other member rels are related to baserels.  This can use significantly
more CPU time and memory than regular join planning, because there may
now be a set of "other" rels not only for every base relation but also
for every join relation.  In most practical cases, this probably
shouldn't be a problem, because (1) it's probably unusual to join many
tables each with many partitions using the partition keys for all
joins and (2) if you do that scenario then you probably have a big
enough machine to handle the increased memory cost of planning and (3)
the resulting plan is highly likely to be better, so what you spend in
planning you'll make up on the execution side.  All the same, for now,
turn this feature off by default.

Currently, we can only perform joins between two tables whose
partitioning schemes are absolutely identical.  It would be nice to
cope with other scenarios, such as extra partitions on one side or the
other with no match on the other side, but that will have to wait for
a future patch.

Ashutosh Bapat, reviewed and tested by Rajkumar Raghuwanshi, Amit
Langote, Rafia Sabih, Thomas Munro, Dilip Kumar, Antonin Houska, Amit
Khandekar, and by me.  A few final adjustments by me.

Discussion: http://postgr.es/m/CAFjFpRfQ8GrQvzp3jA2wnLqrHmaXna-urjm_UY9BqXj=EaDTSA@mail.gmail.com
Discussion: http://postgr.es/m/CAFjFpRcitjfrULr5jfuKWRPsGUX0LQ0k8-yG0Qw2+1LBGNpMdw@mail.gmail.com
2017-10-06 11:11:10 -04:00
..
.gitignore
abstime.sql
advisory_lock.sql
aggregates.sql Fix sharing Agg transition state of DISTINCT or ordered aggs. 2016-12-20 09:20:17 +02:00
alter_generic.sql Suppress less info in regression tests using DROP CASCADE. 2017-08-01 16:49:23 -04:00
alter_operator.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
alter_table.sql On CREATE TABLE, consider skipping validation of subpartitions. 2017-10-05 13:23:28 -04:00
amutils.sql Add SQL-accessible functions for inspecting index AM properties. 2016-08-13 18:31:14 -04:00
arrays.sql Improve expression evaluation test coverage. 2017-03-11 15:41:34 -08:00
async.sql
bit.sql
bitmapops.sql
boolean.sql Improve expression evaluation test coverage. 2017-03-11 15:41:34 -08:00
box.sql Fix support for some operators (&<, &>, $<|, |&>) in box operator class 2017-03-21 16:23:10 +03:00
brin.sql Fix BRIN cost estimation 2017-04-06 17:51:53 -03:00
btree_index.sql
case.sql Faster expression evaluation and targetlist projection. 2017-03-25 14:52:06 -07:00
char.sql
circle.sql
cluster.sql Remove replacement selection sort. 2017-09-29 10:25:44 -04:00
collate.icu.utf8.sql Remove ICU tests from default run 2017-03-25 00:30:26 -04:00
collate.linux.utf8.sql ICU support 2017-03-23 15:28:48 -04:00
collate.sql Revert test case added by commit 1e165d05fe. 2017-08-01 20:15:10 -04:00
combocid.sql Fix locking a tuple updated by an aborted (sub)transaction 2016-09-09 15:54:29 -03:00
comments.sql
conversion.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
copy2.sql Support "COPY view FROM" for views with INSTEAD OF INSERT triggers. 2016-11-10 14:13:43 -05:00
copydml.sql
copyselect.sql
create_aggregate.sql Fix type-safety problem with parallel aggregate serial/deserialization. 2016-06-22 16:52:41 -04:00
create_am.sql Remove no-op GiST support functions in the core GiST opclasses. 2017-09-19 23:32:59 -04:00
create_cast.sql
create_function_3.sql Allow referring to functions without arguments when unique 2017-03-14 23:55:19 -04:00
create_index.sql Suppress less info in regression tests using DROP CASCADE. 2017-08-01 16:49:23 -04:00
create_misc.sql
create_operator.sql
create_table_like.sql Identity columns 2017-04-06 08:41:37 -04:00
create_table.sql After a MINVALUE/MAXVALUE bound, allow only more of the same. 2017-09-15 21:15:55 -04:00
create_type.sql Fix dependency, when changing a function's argument/return type. 2017-06-16 11:33:12 +03:00
create_view.sql Suppress less info in regression tests using DROP CASCADE. 2017-08-01 16:49:23 -04:00
date.sql Allow negative years in make_date to represent BC years 2017-01-19 09:45:38 -03:00
dbsize.sql Add pg_size_bytes() to parse human-readable size strings. 2016-02-20 09:57:27 +00:00
delete.sql
dependency.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
domain.sql Support arrays over domains. 2017-09-30 13:40:56 -04:00
drop_if_exists.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
drop_operator.sql Fix DROP OPERATOR to reset oprcom/oprnegate links to the dropped operator. 2016-03-25 12:33:16 -04:00
enum.sql Revert to 9.6 treatment of ALTER TYPE enumtype ADD VALUE. 2017-09-27 16:14:43 -04:00
equivclass.sql Improve RLS planning by marking individual quals with security levels. 2017-01-18 12:58:20 -05:00
errors.sql Spelling fixes in code comments 2017-03-14 12:58:39 -04:00
event_trigger.sql Remove objname/objargs split for referring to objects 2017-03-06 13:31:47 -05:00
expressions.sql Improve expression evaluation test coverage. 2017-03-11 15:41:34 -08:00
float4.sql
float8.sql Improve regression tests for degree-based trigonometric functions. 2016-04-19 16:47:21 -04:00
foreign_data.sql Test coverage for CREATE/ALTER FOREIGN DATA WRAPPER .. HANDLER. 2017-09-15 08:07:22 -04:00
foreign_key.sql Check for pending trigger events on far end when dropping an FK constraint. 2016-11-25 13:44:47 -05:00
functional_deps.sql
geometry.sql
gin.sql Make GIN regression test stable. 2016-02-08 23:41:46 +09:00
gist.sql Fix pfree-of-already-freed-tuple when rescanning a GiST index-only scan. 2017-05-04 13:59:39 -04:00
groupingsets.sql Attempt to stabilize grouping sets regression test plans. 2017-03-27 05:56:33 +01:00
guc.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
hash_func.sql Introduce 64-bit hash functions with a 64-bit seed. 2017-08-31 22:21:21 -04:00
hash_index.sql Speed up hash_index regression test. 2017-04-12 16:17:53 -04:00
horology.sql Make to_timestamp() and to_date() range-check fields of their input. 2016-09-28 14:36:17 -04:00
hs_primary_extremes.sql Remove all references to "xlog" from SQL-callable functions in pg_proc. 2017-02-09 15:10:09 -05:00
hs_primary_setup.sql Remove all references to "xlog" from SQL-callable functions in pg_proc. 2017-02-09 15:10:09 -05:00
hs_standby_allowed.sql Better fix for sequence access in hot standby test 2017-01-04 08:47:18 -05:00
hs_standby_check.sql
hs_standby_disallowed.sql
hs_standby_functions.sql Remove all references to "xlog" from SQL-callable functions in pg_proc. 2017-02-09 15:10:09 -05:00
identity.sql psql: Update \d sequence display 2017-09-29 13:37:30 -04:00
indirect_toast.sql Fix typos in comments. 2017-02-06 11:33:58 +02:00
inet.sql Create an SP-GiST opclass for inet/cidr. 2016-08-23 15:16:30 -04:00
inherit.sql After a MINVALUE/MAXVALUE bound, allow only more of the same. 2017-09-15 21:15:55 -04:00
init_privs.sql Fix typos in comments. 2017-02-06 11:33:58 +02:00
insert_conflict.sql Revert "Allow ON CONFLICT .. DO NOTHING on a partitioned table." 2017-03-31 16:48:21 -04:00
insert.sql After a MINVALUE/MAXVALUE bound, allow only more of the same. 2017-09-15 21:15:55 -04:00
int2.sql
int4.sql
int8.sql
interval.sql Fix integer-overflow problems in interval comparison. 2017-04-05 23:51:27 -04:00
join.sql Fix create_lateral_join_info to handle dead relations properly. 2017-09-20 10:20:10 -04:00
json_encoding.sql
json.sql Make json_populate_record and friends operate recursively 2017-04-06 22:22:13 -04:00
jsonb.sql Make json_populate_record and friends operate recursively 2017-04-06 22:22:13 -04:00
limit.sql Add regression tests exercising more code paths in nodeLimit.c. 2017-08-11 17:28:01 -04:00
line.sql
lock.sql
lseg.sql
macaddr8.sql Add support for EUI-64 MAC addresses as macaddr8 2017-03-15 11:16:25 -04:00
macaddr.sql
matview.sql Remove useless and rather expensive stanza in matview regression test. 2017-05-03 19:37:01 -04:00
misc_functions.sql Add num_nulls() and num_nonnulls() to count NULL arguments. 2016-02-04 23:03:37 -05:00
misc_sanity.sql Fix over-aggressive sanity check in misc_sanity.sql. 2017-08-28 10:14:46 -04:00
money.sql Fix precision and rounding issues in money multiplication and division. 2017-05-21 13:05:16 -04:00
name.sql Introduce parse_ident() 2016-03-18 18:16:14 +03:00
namespace.sql
numeric_big.sql Fix corner-case loss of precision in numeric pow() calculation 2016-05-05 11:16:17 +01:00
numeric.sql Fix behavior when converting a float infinity to numeric. 2017-09-27 17:05:53 -04:00
numerology.sql
object_address.sql Suppress less info in regression tests using DROP CASCADE. 2017-08-01 16:49:23 -04:00
oid.sql
oidjoins.sql Update oidjoins regression test for v10. 2017-05-15 14:04:11 -04:00
opr_sanity.sql Make opr_sanity test complain about built-in functions marked prosecdef. 2017-06-20 17:06:43 -04:00
partition_join.sql Basic partition-wise join functionality. 2017-10-06 11:11:10 -04:00
password.sql Don't allow logging in with empty password. 2017-08-07 17:03:42 +03:00
path.sql
pg_lsn.sql
plancache.sql Allow a partitioned table to have a default partition. 2017-09-08 17:28:04 -04:00
plpgsql.sql Prefer argument name over "$n" for the refname of a plpgsql argument. 2017-09-11 16:24:43 -04:00
point.sql
polygon.sql
polymorphism.sql Fix incorrect handling of polymorphic aggregates used as window functions. 2016-10-09 12:49:37 -04:00
portals_p2.sql
portals.sql Fix some interrelated planner issues with initPlans and Param munging. 2016-07-01 20:06:05 -04:00
prepare.sql
prepared_xacts.sql Remove unnecessary dependency on statement_timeout in prepared_xacts test. 2017-03-13 16:46:32 -04:00
privileges.sql Require update permission for the large object written by lo_put(). 2017-08-07 10:19:19 -04:00
psql_crosstab.sql Fix incorrect error reporting for duplicate data in \crosstabview. 2016-12-25 16:04:45 -05:00
psql.sql Provide a test for variable existence in psql 2017-09-21 19:02:23 -04:00
publication.sql psql: Improve display of "for all tables" publications 2017-06-15 10:46:41 -04:00
random.sql
rangefuncs.sql Disallow set-returning functions inside CASE or COALESCE. 2017-06-13 23:46:39 -04:00
rangetypes.sql Fix tqueue.c's range-remapping code. 2016-07-29 14:13:19 -04:00
regex.linux.utf8.sql Make locale-dependent regex character classes work for large char codes. 2016-09-05 17:06:29 -04:00
regex.sql Implement regexp_match(), a simplified alternative to regexp_matches(). 2016-08-17 18:33:01 -04:00
regproc.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
reltime.sql
replica_identity.sql Fix typos in comments. 2017-02-06 11:33:58 +02:00
returning.sql
roleattributes.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
rolenames.sql Fix typos in comments. 2017-02-06 11:33:58 +02:00
rowsecurity.sql Suppress less info in regression tests using DROP CASCADE. 2017-08-01 16:49:23 -04:00
rowtypes.sql Clean up after insufficiently-researched optimization of tuple conversions. 2017-04-06 21:10:20 -04:00
rules.sql Suppress less info in regression tests using DROP CASCADE. 2017-08-01 16:49:23 -04:00
sanity_check.sql Change the relkind for partitioned tables from 'P' to 'p'. 2017-03-10 13:15:47 -05:00
security_label.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
select_distinct_on.sql
select_distinct.sql Disable physical tlist if any Var would need multiple sortgroupref labels. 2016-05-26 14:52:30 -04:00
select_having.sql
select_implicit.sql
select_into.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
select_parallel.sql Improve code coverage of select_parallel test. 2017-08-31 13:15:54 -04:00
select_views.sql Avoid locale-dependent output in select_views regression test. 2017-05-28 14:52:18 -04:00
select.sql Expose explain's SUMMARY option 2017-03-08 15:14:03 -05:00
sequence.sql psql: Update \d sequence display 2017-09-29 13:37:30 -04:00
spgist.sql
stats_ext.sql Suppress less info in regression tests using DROP CASCADE. 2017-08-01 16:49:23 -04:00
stats.sql stats regression test's wait_for_stats() must check timestamp too. 2017-05-14 23:33:18 -04:00
strings.sql
subscription.sql Fix ALTER SUBSCRIPTION grammar ambiguity 2017-06-05 21:43:25 -04:00
subselect.sql Propagate sort instrumentation from workers back to leader. 2017-08-29 13:26:33 -04:00
sysviews.sql Invent pg_hba_file_rules view to show the content of pg_hba.conf. 2017-01-30 18:00:26 -05:00
tablesample.sql Make tablesample work with partitioned tables. 2017-02-24 12:23:28 +05:30
temp.sql
text.sql
tidscan.sql Improve regression test coverage for TID scanning. 2017-03-20 12:30:23 -04:00
time.sql
timestamp.sql Be more careful about out-of-range dates and timestamps. 2016-03-16 19:09:28 -04:00
timestamptz.sql Fix timestamptz regression test to still work with latest IANA zone data. 2017-03-09 17:20:33 -05:00
timetz.sql
tinterval.sql
transactions.sql Fix handling of savepoint commands within multi-statement Query strings. 2017-09-07 09:49:55 -04:00
triggers.sql Ensure that BEFORE STATEMENT triggers fire the right number of times. 2017-09-17 12:16:38 -04:00
truncate.sql Allow ALTER TABLE ONLY on partitioned tables 2017-04-25 16:57:43 -04:00
tsdicts.sql Spelling fixes 2017-03-14 12:58:39 -04:00
tsearch.sql Make construct_[md_]array return a valid empty array for zero-size input. 2017-09-25 11:55:24 -04:00
tsrf.sql Re-allow SRFs and window functions within sub-selects within aggregates. 2017-06-27 17:51:11 -04:00
tstypes.sql Ensure that a tsquery like '!foo' matches empty tsvectors. 2017-01-26 12:18:07 -05:00
txid.sql Add a txid_status function. 2017-03-24 12:00:53 -04:00
type_sanity.sql Implement multivariate n-distinct coefficients 2017-03-24 14:06:10 -03:00
typed_table.sql Suppress less info in regression tests using DROP CASCADE. 2017-08-01 16:49:23 -04:00
union.sql Add regression tests exercising the non-hashed code paths in nodeSetop.c. 2017-08-11 17:28:01 -04:00
updatable_views.sql Teach map_partition_varattnos to handle whole-row expressions. 2017-08-03 11:21:29 -04:00
update.sql Allow a partitioned table to have a default partition. 2017-09-08 17:28:04 -04:00
uuid.sql
vacuum.sql Allow multiple tables to be specified in one VACUUM or ANALYZE command. 2017-10-03 18:53:44 -04:00
varchar.sql
window.sql
with.sql Add infrastructure to support EphemeralNamedRelation references. 2017-03-31 23:17:18 -05:00
without_oid.sql
write_parallel.sql Allow DML commands that create tables to use parallel query. 2017-10-05 11:40:48 -04:00
xml.sql Support XMLTABLE query expression 2017-03-08 12:40:26 -03:00
xmlmap.sql Fix cursor_to_xml in tableforest false mode 2017-05-03 21:41:10 -04:00