postgresql/src/test/regress/sql
Tom Lane 959d00e9db Use Append rather than MergeAppend for scanning ordered partitions.
If we need ordered output from a scan of a partitioned table, but
the ordering matches the partition ordering, then we don't need to
use a MergeAppend to combine the pre-ordered per-partition scan
results: a plain Append will produce the same results.  This
both saves useless comparison work inside the MergeAppend proper,
and allows us to start returning tuples after istarting up just
the first child node not all of them.

However, all is not peaches and cream, because if some of the
child nodes have high startup costs then there will be big
discontinuities in the tuples-returned-versus-elapsed-time curve.
The planner's cost model cannot handle that (yet, anyway).
If we model the Append's startup cost as being just the first
child's startup cost, we may drastically underestimate the cost
of fetching slightly more tuples than are available from the first
child.  Since we've had bad experiences with over-optimistic choices
of "fast start" plans for ORDER BY LIMIT queries, that seems scary.
As a klugy workaround, set the startup cost estimate for an ordered
Append to be the sum of its children's startup costs (as MergeAppend
would).  This doesn't really describe reality, but it's less likely
to cause a bad plan choice than an underestimated startup cost would.
In practice, the cases where we really care about this optimization
will have child plans that are IndexScans with zero startup cost,
so that the overly conservative estimate is still just zero.

David Rowley, reviewed by Julien Rouhaud and Antonin Houska

Discussion: https://postgr.es/m/CAKJS1f-hAqhPLRk_RaSFTgYxd=Tz5hA7kQ2h4-DhJufQk8TGuw@mail.gmail.com
2019-04-05 19:20:43 -04:00
..
.gitignore Add a SECURITY LABEL command. 2010-09-27 20:55:27 -04:00
advisory_lock.sql Add transaction-level advisory locks. 2011-02-18 14:05:12 +09:00
aggregates.sql Change floating-point output format for improved performance. 2019-02-13 15:20:33 +00:00
alter_generic.sql Un-hide most cascaded-drop details in regression test results. 2019-03-24 19:15:37 -04:00
alter_operator.sql Avoid unnecessary use of pg_strcasecmp for already-downcased identifiers. 2018-01-26 18:25:14 -05:00
alter_table.sql Revert setting client_min_messages to 'debug1' in new tests. 2019-03-13 13:18:25 -04:00
amutils.sql Add support for nearest-neighbor (KNN) searches to SP-GiST 2018-09-19 01:54:10 +03:00
arrays.sql Improve expression evaluation test coverage. 2017-03-11 15:41:34 -08:00
async.sql Add new function pg_notification_queue_usage. 2015-07-17 09:12:03 -04:00
bit.sql Remove ruleutils.c's special case for BIT [VARYING] literals. 2018-09-11 16:32:25 -04:00
bitmapops.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
boolean.sql Expand AND/OR regression tests around NULL handling. 2018-03-13 16:12:31 -07:00
box.sql Improve test coverage of geometric types 2018-09-26 10:45:21 +02:00
brin.sql Fix BRIN cost estimation 2017-04-06 17:51:53 -03:00
btree_index.sql Make heap TID a tiebreaker nbtree index column. 2019-03-20 10:04:01 -07:00
case.sql Fix interaction of CASE and ArrayCoerceExpr. 2018-10-30 15:26:11 -04:00
char.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
circle.sql Change floating-point output format for improved performance. 2019-02-13 15:20:33 +00:00
cluster.sql Ignore partitioned indexes where appropriate 2018-01-25 16:12:15 -03:00
collate.icu.utf8.sql Add ORDER BY to more ICU regression test cases. 2019-03-26 17:46:04 -04:00
collate.linux.utf8.sql Collations with nondeterministic comparison 2019-03-22 12:12:43 +01:00
collate.sql Un-hide most cascaded-drop details in regression test results. 2019-03-24 19:15:37 -04:00
combocid.sql Fix locking a tuple updated by an aborted (sub)transaction 2016-09-09 15:54:29 -03:00
comments.sql Implement nested block comments in the backend and in psql. 2000-07-14 15:43:57 +00:00
conversion.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
copy2.sql Allow COPY FROM to filter data using WHERE conditions 2019-01-20 00:22:14 +01:00
copydml.sql COPY (INSERT/UPDATE/DELETE .. RETURNING ..) 2015-11-27 19:11:22 +03:00
copyselect.sql Have \copy go through SendQuery 2012-01-25 18:22:00 -03:00
create_aggregate.sql Implement OR REPLACE option for CREATE AGGREGATE. 2019-03-19 01:16:50 +00:00
create_am.sql Harden tableam against nonexistant / wrong kind of AMs. 2019-04-04 17:39:39 -07:00
create_cast.sql Make CREATE TYPE print warnings if a datatype's I/O functions are volatile. 2014-11-05 11:44:06 -05:00
create_function_3.sql Un-hide most cascaded-drop details in regression test results. 2019-03-24 19:15:37 -04:00
create_index.sql Add test coverage for rootdescend verification. 2019-04-04 17:25:35 -07:00
create_misc.sql Improve regression test coverage of regress.c. 2018-02-27 12:13:14 -05:00
create_operator.sql Fix lexing of standard multi-character operators in edge cases. 2018-08-23 21:42:40 +01:00
create_procedure.sql Add collation assignment to CALL statement 2019-02-07 08:25:47 +01:00
create_table.sql Improve error handling of column references in expression transformation 2019-03-27 21:04:25 +09:00
create_table_like.sql Generated columns 2019-03-30 08:15:57 +01:00
create_type.sql Fix format_type() to restore its old behavior. 2018-03-01 11:37:46 -05:00
create_view.sql Un-hide most cascaded-drop details in regression test results. 2019-03-24 19:15:37 -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 Regression tests for TOAST. 2011-04-25 09:48:10 -04:00
dependency.sql Un-hide most cascaded-drop details in regression test results. 2019-03-24 19:15:37 -04:00
domain.sql Drop no-op CoerceToDomain nodes from expressions at planning time. 2018-12-13 13:24:43 -05:00
drop_if_exists.sql Improve error reporting for DROP FUNCTION/PROCEDURE/AGGREGATE/ROUTINE. 2019-03-21 11:52:08 -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 Relax transactional restrictions on ALTER TYPE ... ADD VALUE (redux). 2018-10-09 12:51:01 +13:00
equivclass.sql Reduce "X = X" to "X IS NOT NULL", if it's easy to do so. 2017-10-08 12:23:32 -04:00
errors.sql Remove WITH OIDS support, change oid catalog column visibility. 2018-11-20 16:00:17 -08:00
event_trigger.sql Un-hide most cascaded-drop details in regression test results. 2019-03-24 19:15:37 -04:00
expressions.sql Improve expression evaluation test coverage. 2017-03-11 15:41:34 -08:00
fast_default.sql Fix heap_getattr() handling of fast defaults. 2019-02-06 01:09:32 -08:00
float4.sql Un-hide most cascaded-drop details in regression test results. 2019-03-24 19:15:37 -04:00
float8.sql Un-hide most cascaded-drop details in regression test results. 2019-03-24 19:15:37 -04:00
foreign_data.sql Un-hide most cascaded-drop details in regression test results. 2019-03-24 19:15:37 -04:00
foreign_key.sql Support foreign keys that reference partitioned tables 2019-04-03 14:40:21 -03:00
fsm.sql Add more tests for FSM. 2019-03-12 08:14:28 +05:30
functional_deps.sql Recognize functional dependency on primary keys. This allows a table's 2010-08-07 02:44:09 +00:00
generated.sql Catch syntax error in generated column definition 2019-04-01 10:46:37 +02:00
geometry.sql Improve test coverage of geometric types 2018-09-26 10:45:21 +02:00
gin.sql Make GIN regression test stable. 2016-02-08 23:41:46 +09:00
gist.sql Delete empty pages during GiST VACUUM. 2019-03-22 13:21:45 +02:00
groupingsets.sql Postpone aggregate checks until after collation is assigned. 2019-01-17 06:46:10 +00:00
guc.sql Give up on testing guc.c's behavior for "infinity" inputs. 2019-03-11 17:53:09 -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 Add more tests for reloptions 2017-10-19 14:22:05 +02:00
hash_part.sql Use custom hash opclass for hash partition pruning 2018-04-13 12:27:22 -03:00
horology.sql Remove deprecated abstime, reltime, tinterval datatypes. 2018-10-11 11:59:15 -07: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 Allow UNLISTEN in hot-standby mode. 2019-01-25 21:14:49 -05:00
hs_standby_check.sql Allow read only connections during recovery, known as Hot Standby. 2009-12-19 01:32:45 +00:00
hs_standby_disallowed.sql Allow UNLISTEN in hot-standby mode. 2019-01-25 21:14:49 -05:00
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 Reorder identity regression test 2019-03-15 00:21:30 +01:00
index_including.sql Fix nbtree high key "continuescan" row compare bug. 2019-03-31 17:24:04 -07:00
index_including_gist.sql Support for INCLUDE attributes in GiST indexes 2019-03-10 11:37:17 +03:00
indexing.sql Fix partitioned index creation bug with dropped columns 2019-03-26 20:19:28 -03:00
indirect_toast.sql Clean up duplicate table and function names in regression tests. 2018-03-15 17:09:02 -04:00
inet.sql Allow extensions to generate lossy index conditions. 2019-02-11 21:26:14 -05:00
inherit.sql Use Append rather than MergeAppend for scanning ordered partitions. 2019-04-05 19:20:43 -04:00
init_privs.sql Fix typos in comments. 2017-02-06 11:33:58 +02:00
insert.sql Use custom hash opclass for hash partition pruning 2018-04-13 12:27:22 -03:00
insert_conflict.sql Don't mark partitioned indexes invalid unnecessarily 2018-12-05 13:31:51 -03:00
int2.sql Add documentation and regression tests concerning rounding of numerics. 2015-07-03 17:04:39 -04:00
int4.sql Add documentation and regression tests concerning rounding of numerics. 2015-07-03 17:04:39 -04:00
int8.sql Add documentation and regression tests concerning rounding of numerics. 2015-07-03 17:04:39 -04:00
interval.sql Fix integer-overflow problems in interval comparison. 2017-04-05 23:51:27 -04:00
join.sql Ensure dummy paths have correct required_outer if rel is parameterized. 2019-03-14 12:16:36 -04:00
json.sql Fix typo related to to_tsvector() in tests of json and jsonb 2019-03-15 16:20:11 +09:00
json_encoding.sql Fix whitespace 2015-10-11 21:44:27 -04:00
jsonb.sql GIN support for @@ and @? jsonpath operators 2019-04-01 18:08:52 +03:00
jsonb_jsonpath.sql Throw error in jsonb_path_match() when result is not single boolean 2019-04-01 18:09:20 +03:00
jsonpath.sql Get rid of backtracking in jsonpath_scan.l 2019-03-25 15:43:56 +03:00
jsonpath_encoding.sql Get rid of backtracking in jsonpath_scan.l 2019-03-25 15:43:56 +03:00
limit.sql Add regression tests exercising more code paths in nodeLimit.c. 2017-08-11 17:28:01 -04:00
line.sql Improve test coverage of geometric types 2018-09-26 10:45:21 +02:00
lock.sql Add more infinite recursion detection while locking a view. 2018-04-17 16:59:17 +09:00
lseg.sql Improve test coverage of geometric types 2018-09-26 10:45:21 +02:00
macaddr.sql Allow input format xxxx-xxxx-xxxx for macaddr type 2014-10-21 16:16:39 -04:00
macaddr8.sql Add support for EUI-64 MAC addresses as macaddr8 2017-03-15 11:16:25 -04:00
matview.sql Remove useless and rather expensive stanza in matview regression test. 2017-05-03 19:37:01 -04:00
misc_functions.sql Build out the planner support function infrastructure. 2019-02-09 18:32:23 -05:00
misc_sanity.sql Remove WITH OIDS support, change oid catalog column visibility. 2018-11-20 16:00:17 -08: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 Clean up duplicate role and schema names in regression tests. 2018-03-15 14:00:31 -04:00
numeric.sql Make numeric power() handle NaNs according to the modern POSIX spec. 2018-05-17 11:10:50 -04:00
numeric_big.sql Fix corner-case loss of precision in numeric pow() calculation 2016-05-05 11:16:17 +01:00
numerology.sql Remove extra newlines at end and beginning of files, add missing newlines 2010-08-19 05:57:36 +00:00
object_address.sql Un-hide most cascaded-drop details in regression test results. 2019-03-24 19:15:37 -04:00
oid.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
oidjoins.sql Create the infrastructure for planner support functions. 2019-02-09 18:08:48 -05:00
opr_sanity.sql tableam: introduce table AM infrastructure. 2019-03-06 09:54:38 -08:00
partition_aggregate.sql Avoid crash in partitionwise join planning under GEQO. 2019-03-30 12:48:32 -04:00
partition_info.sql Fix crash with pg_partition_root 2019-03-22 17:27:38 +09:00
partition_join.sql Avoid crash in partitionwise join planning under GEQO. 2019-03-30 12:48:32 -04:00
partition_prune.sql Use Append rather than MergeAppend for scanning ordered partitions. 2019-04-05 19:20:43 -04:00
password.sql Don't allow logging in with empty password. 2017-08-07 17:03:42 +03:00
path.sql Improve test coverage of geometric types 2018-09-26 10:45:21 +02:00
pg_lsn.sql Tweak new regression test case for better portability. 2014-06-04 21:31:41 -04:00
plancache.sql Add plan_cache_mode setting 2018-07-16 13:35:41 +02:00
plpgsql.sql Support plpgsql variable names that conflict with unreserved SQL keywords. 2019-01-04 12:16:19 -05:00
point.sql Change floating-point output format for improved performance. 2019-02-13 15:20:33 +00:00
polygon.sql Improve test coverage of geometric types 2018-09-26 10:45:21 +02:00
polymorphism.sql Fix lexing of standard multi-character operators in edge cases. 2018-08-23 21:42:40 +01:00
portals.sql Fix failure in WHERE CURRENT OF after rewinding the referenced cursor. 2018-09-23 16:05:45 -04:00
portals_p2.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
prepare.sql Add more tests for CREATE TABLE AS with WITH NO DATA 2019-02-07 09:21:57 +09:00
prepared_xacts.sql Remove unnecessary dependency on statement_timeout in prepared_xacts test. 2017-03-13 16:46:32 -04:00
privileges.sql Un-hide most cascaded-drop details in regression test results. 2019-03-24 19:15:37 -04:00
psql.sql Add a "SQLSTATE-only" error verbosity option to libpq and psql. 2019-04-04 17:22:02 -04:00
psql_crosstab.sql Fix incorrect error reporting for duplicate data in \crosstabview. 2016-12-25 16:04:45 -05:00
publication.sql psql: Improve display of "for all tables" publications 2017-06-15 10:46:41 -04:00
random.sql Remove extra newlines at end and beginning of files, add missing newlines 2010-08-19 05:57:36 +00:00
rangefuncs.sql Clean up duplicate table and function names in regression tests. 2018-03-15 17:09:02 -04:00
rangetypes.sql Fix typcache's failure to treat ranges as container types. 2017-10-20 17:12:27 -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
reloptions.sql Allow fractional input values for integer GUCs, and improve rounding logic. 2019-03-11 19:13:55 -04:00
replica_identity.sql Remove WITH OIDS support, change oid catalog column visibility. 2018-11-20 16:00:17 -08:00
returning.sql Add support for INSERT ... ON CONFLICT DO NOTHING/UPDATE. 2015-05-08 05:43:10 +02:00
roleattributes.sql Remove WITH OIDS support, change oid catalog column visibility. 2018-11-20 16:00:17 -08:00
rolenames.sql Un-hide most cascaded-drop details in regression test results. 2019-03-24 19:15:37 -04:00
rowsecurity.sql Perform RLS subquery checks as the right user when going via a view. 2019-04-02 08:13:59 +01:00
rowtypes.sql Allow user control of CTE materialization, and change the default behavior. 2019-02-16 16:11:12 -05:00
rules.sql Un-hide most cascaded-drop details in regression test results. 2019-03-24 19:15:37 -04:00
sanity_check.sql Don't create relfilenode for relations without storage 2019-01-04 14:51:17 -03:00
security_label.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
select.sql Make some subquery-using test cases a bit more robust. 2018-10-14 14:02:59 -04:00
select_distinct.sql Disable physical tlist if any Var would need multiple sortgroupref labels. 2016-05-26 14:52:30 -04:00
select_distinct_on.sql Fix assertion failure when a SELECT DISTINCT ON expression is volatile. 2009-09-12 00:04:59 +00:00
select_having.sql Make the behavior of HAVING without GROUP BY conform to the SQL spec. 2005-03-10 23:21:26 +00:00
select_implicit.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
select_into.sql Add more tests for CREATE TABLE AS with WITH NO DATA 2019-02-07 09:21:57 +09:00
select_parallel.sql Make some subquery-using test cases a bit more robust. 2018-10-14 14:02:59 -04:00
select_views.sql Avoid locale-dependent output in select_views regression test. 2017-05-28 14:52:18 -04:00
sequence.sql psql: Update \d sequence display 2017-09-29 13:37:30 -04:00
spgist.sql Repair double-free in SP-GIST rescan (bug #15378) 2018-09-11 18:14:19 +01:00
stats.sql Fix misapplication of pgstat_count_truncate to wrong relation. 2018-12-07 12:11:59 -05:00
stats_ext.sql Add support for multivariate MCV lists 2019-03-27 18:32:18 +01:00
strings.sql Improve readability of some tests in strings.sql 2019-04-04 10:24:56 +09:00
subscription.sql Fix ALTER SUBSCRIPTION grammar ambiguity 2017-06-05 21:43:25 -04:00
subselect.sql Collations with nondeterministic comparison 2019-03-22 12:12:43 +01: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 Switch function current_schema[s]() to be parallel-unsafe 2019-03-27 11:35:12 +09:00
text.sql Move checking an explicit VARIADIC "any" argument into the parser. 2013-07-18 11:52:12 -04:00
tidscan.sql Add a hash opclass for type "tid". 2018-12-30 15:40:04 -05:00
time.sql Please find attached two patches for documentation and regression tests 2006-07-06 01:46:38 +00:00
timestamp.sql Be more careful about out-of-range dates and timestamps. 2016-03-16 19:09:28 -04:00
timestamptz.sql Add a timezone-specific variant of date_trunc(). 2018-11-14 15:41:07 -05:00
timetz.sql Please find attached two patches for documentation and regression tests 2006-07-06 01:46:38 +00:00
transactions.sql Transaction chaining 2019-03-24 11:33:02 +01:00
triggers.sql Fix plan created for inherited UPDATE/DELETE with all tables excluded. 2019-02-22 12:23:19 -05:00
truncate.sql Un-hide most cascaded-drop details in regression test results. 2019-03-24 19:15:37 -04:00
tsdicts.sql Improve regression test coverage for src/backend/tsearch/spell.c. 2018-04-13 13:49:52 -04:00
tsearch.sql Remove tsearch test contained russian characters, missed in 2018-04-05 20:05:04 +03:00
tsrf.sql Fix handling of targetlist SRFs when scan/join relation is known empty. 2019-03-07 14:22:13 -05:00
tstypes.sql More float test and portability fixes. 2019-02-13 19:35:50 +00:00
txid.sql Add a txid_status function. 2017-03-24 12:00:53 -04:00
type_sanity.sql Harden tableam against nonexistant / wrong kind of AMs. 2019-04-04 17:39:39 -07:00
typed_table.sql Suppress less info in regression tests using DROP CASCADE. 2017-08-01 16:49:23 -04:00
union.sql Fix UNION/INTERSECT/EXCEPT over no columns. 2017-12-22 12:08:06 -05:00
updatable_views.sql Add test case exercising formerly-unreached code in inheritance_planner. 2019-03-31 15:49:06 -04:00
update.sql Repair bogus handling of multi-assignment Params in upper plan levels. 2018-12-12 13:49:41 -05:00
uuid.sql Fix whitespace issues found by git diff --check, add gitattributes 2013-11-10 14:48:29 -05:00
vacuum.sql Allow VACUUM to be run with index cleanup disabled. 2019-04-04 15:04:43 -04:00
varchar.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
window.sql Order active window clauses for greater reuse of Sort nodes. 2018-09-14 17:35:42 +01:00
with.sql Revert MERGE patch 2018-04-12 11:22:56 +01:00
write_parallel.sql Allow DML commands that create tables to use parallel query. 2017-10-05 11:40:48 -04:00
xml.sql Accept XML documents when xmloption = content, as required by SQL:2006+. 2019-03-23 16:51:37 -04:00
xmlmap.sql Fix cursor_to_xml in tableforest false mode 2017-05-03 21:41:10 -04:00