postgresql/src/test/regress/expected
Tom Lane 9118d03a8c When appropriate, postpone SELECT output expressions till after ORDER BY.
It is frequently useful for volatile, set-returning, or expensive functions
in a SELECT's targetlist to be postponed till after ORDER BY and LIMIT are
done.  Otherwise, the functions might be executed for every row of the
table despite the presence of LIMIT, and/or be executed in an unexpected
order.  For example, in
	SELECT x, nextval('seq') FROM tab ORDER BY x LIMIT 10;
it's probably desirable that the nextval() values are ordered the same
as x, and that nextval() is not run more than 10 times.

In the past, Postgres was inconsistent in this area: you would get the
desirable behavior if the ordering were performed via an indexscan, but
not if it had to be done by an explicit sort step.  Getting the desired
behavior reliably required contortions like
	SELECT x, nextval('seq')
	  FROM (SELECT x FROM tab ORDER BY x) ss LIMIT 10;

This patch conditionally postpones evaluation of pure-output target
expressions (that is, those that are not used as DISTINCT, ORDER BY, or
GROUP BY columns) so that they effectively occur after sorting, even if an
explicit sort step is necessary.  Volatile expressions and set-returning
expressions are always postponed, so as to provide consistent semantics.
Expensive expressions (costing more than 10 times typical operator cost,
which by default would include any user-defined function) are postponed
if there is a LIMIT or if there are expressions that must be postponed.

We could be more aggressive and postpone any nontrivial expression, but
there are costs associated with doing so: it requires an extra Result plan
node which adds some overhead, and postponement changes the volume of data
going through the sort step, perhaps for the worse.  Since we tend not to
have very good estimates of the output width of nontrivial expressions,
it's hard to have much confidence in our ability to predict whether
postponement would increase or decrease the cost of the sort; therefore
this patch doesn't attempt to make decisions conditionally on that.
Between these factors and a general desire not to change query behavior
when there's not a demonstrable benefit, it seems best to be conservative
about applying postponement.  We might tweak the decision rules in the
future, though.

Konstantin Knizhnik, heavily rewritten by me
2016-03-11 12:27:50 -05:00
..
.gitignore Add a SECURITY LABEL command. 2010-09-27 20:55:27 -04:00
abstime.out Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
advisory_lock.out Add transaction-level advisory locks. 2011-02-18 14:05:12 +09:00
aggregates.out Make the upper part of the planner work by generating and comparing Paths. 2016-03-07 15:58:22 -05:00
alter_generic.out Make ALTER .. SET SCHEMA do nothing, instead of throwing an ERROR. 2015-11-19 10:49:25 -05:00
alter_operator.out Fix ALTER OPERATOR to update dependencies properly. 2015-12-31 17:37:31 -05:00
alter_table.out Reduce lock level for altering fillfactor 2016-03-10 12:07:33 +00:00
arrays.out Allow omitting one or both boundaries in an array slice specifier. 2015-12-22 21:05:29 -05:00
async.out Add new function pg_notification_queue_usage. 2015-07-17 09:12:03 -04:00
bit.out Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
bitmapops.out Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
boolean.out Clean up references to SQL92 2013-04-20 11:04:41 -04:00
box.out Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
brin.out Fix brin_summarize_new_values() to check index type and ownership. 2015-12-26 12:56:09 -05:00
btree_index.out Add test cases for indexam operations not currently covered. 2014-11-19 19:47:43 +02:00
case.out Clean up references to SQL92 2013-04-20 11:04:41 -04:00
char.out Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
char_1.out Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
char_2.out Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
circle.out Add a bunch of new error location reports to parse-analysis error messages. 2008-09-01 20:42:46 +00:00
cluster.out Reduce messages about implicit indexes and sequences to DEBUG1. 2012-07-04 20:35:29 -04:00
collate.linux.utf8.out Update collate.linux.utf8.out for ruleutils.c line-wrapping changes. 2013-05-08 22:47:33 -04:00
collate.out Show sort ordering options in EXPLAIN output. 2015-01-16 18:19:00 -05:00
combocid.out Avoid incrementing the CommandCounter when CommandCounterIncrement is called 2007-11-30 21:22:54 +00:00
comments.out Implement nested block comments in the backend and in psql. 2000-07-14 15:43:57 +00:00
conversion.out Remove some ancient and unmaintained encoding-conversion test cruft. 2016-01-05 16:43:40 -05:00
copy2.out Update spelling of COPY options 2015-11-04 21:01:26 -05:00
copydml.out COPY (INSERT/UPDATE/DELETE .. RETURNING ..) 2015-11-27 19:11:22 +03:00
copyselect.out Reduce messages about implicit indexes and sequences to DEBUG1. 2012-07-04 20:35:29 -04:00
create_aggregate.out Support multi-stage aggregation. 2016-01-20 13:46:50 -05:00
create_cast.out 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.out Move regression test listing of builtin leakproof functions to opr_sanity.sql. 2014-06-05 13:54:25 +02:00
create_index.out Don't warn about creating temporary or unlogged hash indexes. 2015-06-26 11:37:32 -04:00
create_misc.out Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
create_operator.out Allow named parameters to be specified using => in addition to := 2015-03-10 11:09:41 -04:00
create_table.out Have CREATE TABLE LIKE add OID column if any LIKEd table has one 2015-10-05 21:19:16 -04:00
create_table_like.out Have CREATE TABLE LIKE add OID column if any LIKEd table has one 2015-10-05 21:19:16 -04:00
create_type.out Fix pg_dump to dump shell types. 2015-08-04 19:34:12 -04:00
create_view.out Speed up ruleutils' name de-duplication code, and fix overlength-name case. 2015-11-16 13:45:17 -05:00
date.out Make extract() do something more reasonable with infinite datetimes. 2016-01-21 22:26:20 -05:00
dbsize.out Add pg_size_bytes() to parse human-readable size strings. 2016-02-20 09:57:27 +00:00
delete.out Reduce messages about implicit indexes and sequences to DEBUG1. 2012-07-04 20:35:29 -04:00
dependency.out Rework internals of changing a type's ownership 2015-12-17 14:25:41 -03:00
domain.out Avoid caching expression state trees for domain constraints across queries. 2015-11-29 18:18:42 -05:00
drop_if_exists.out Make DROP IF EXISTS more consistently not fail 2014-01-23 14:40:29 -03:00
enum.out Shorten warning about hash creation 2014-10-18 10:36:09 -04:00
equivclass.out Be more careful about printing constants in ruleutils.c. 2015-03-30 14:59:49 -04:00
errors.out Add support for INSERT ... ON CONFLICT DO NOTHING/UPDATE. 2015-05-08 05:43:10 +02:00
event_trigger.out Rearrange the handling of error context reports. 2015-09-05 11:58:33 -04:00
float4-exp-three-digits.out Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
float4.out Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
float8-exp-three-digits-win32.out Adjust degree-based trig functions for more portability. 2016-01-23 11:26:07 -05:00
float8-small-is-zero.out Adjust degree-based trig functions for more portability. 2016-01-23 11:26:07 -05:00
float8-small-is-zero_1.out Adjust degree-based trig functions for more portability. 2016-01-23 11:26:07 -05:00
float8.out Adjust degree-based trig functions for more portability. 2016-01-23 11:26:07 -05:00
foreign_data.out For REASSIGN OWNED for foreign user mappings 2015-12-11 18:39:09 -03:00
foreign_key.out Fix overlooked relcache invalidation in ALTER TABLE ... ALTER CONSTRAINT. 2015-05-03 11:30:24 -04:00
functional_deps.out Reduce messages about implicit indexes and sequences to DEBUG1. 2012-07-04 20:35:29 -04:00
geometry.out Add geometry/range functions to support BRIN inclusion 2015-05-05 15:22:24 -03:00
geometry_1.out Add geometry/range functions to support BRIN inclusion 2015-05-05 15:22:24 -03:00
geometry_2.out Add geometry/range functions to support BRIN inclusion 2015-05-05 15:22:24 -03:00
gin.out Make GIN regression test stable. 2016-02-08 23:41:46 +09:00
gist.out Fix potential platform dependence in gist regression test. 2015-08-25 11:43:37 -04:00
groupingsets.out Fix overeager pushdown of HAVING clauses when grouping sets are used. 2016-02-08 11:03:31 +01:00
guc.out Add an optional missing_ok argument to SQL function current_setting(). 2015-07-02 16:41:07 -04:00
hash_index.out Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
horology.out Fix to_timestamp/to_date's handling of consecutive spaces in format string. 2014-01-20 13:45:51 -05:00
hs_standby_allowed.out regression test: fix hot standby tests by using repeatable read 2014-04-22 17:23:58 -04:00
hs_standby_check.out Allow read only connections during recovery, known as Hot Standby. 2009-12-19 01:32:45 +00:00
hs_standby_disallowed.out regression test: fix hot standby tests by using repeatable read 2014-04-22 17:23:58 -04:00
hs_standby_functions.out Update standbycheck test output with new ERROR message changes. No changes 2010-05-02 12:28:43 +00:00
indirect_toast.out Add support for multiple kinds of external toast datums. 2013-07-02 13:38:55 -04:00
inet.out Add geometry/range functions to support BRIN inclusion 2015-05-05 15:22:24 -03:00
inherit.out Fix eclass_useful_for_merging to give valid results for appendrel children. 2015-08-06 20:14:53 -04:00
insert.out When a row fails a not-null constraint, show row's contents in errdetail. 2011-11-29 18:29:18 -05:00
insert_conflict.out Message improvements 2015-11-16 21:39:23 -05:00
int2.out Add documentation and regression tests concerning rounding of numerics. 2015-07-03 17:04:39 -04:00
int4.out Add documentation and regression tests concerning rounding of numerics. 2015-07-03 17:04:39 -04:00
int8-exp-three-digits.out Add documentation and regression tests concerning rounding of numerics. 2015-07-03 17:04:39 -04:00
int8.out Add documentation and regression tests concerning rounding of numerics. 2015-07-03 17:04:39 -04:00
interval.out interval: tighten precision specification 2014-10-18 10:31:00 -04:00
join.out Make the upper part of the planner work by generating and comparing Paths. 2016-03-07 15:58:22 -05:00
json.out Fix json_to_record() bug with nested objects. 2016-03-02 23:31:39 -05:00
json_encoding.out Factor out encoding specific tests for json 2015-10-07 22:18:27 -04:00
json_encoding_1.out Factor out encoding specific tests for json 2015-10-07 22:18:27 -04:00
jsonb.out Fix json_to_record() bug with nested objects. 2016-03-02 23:31:39 -05:00
limit.out When appropriate, postpone SELECT output expressions till after ORDER BY. 2016-03-11 12:27:50 -05:00
line.out Revert "Tweak "line" test to avoid negative zeros on some platforms" 2013-10-25 15:50:31 -04:00
lock.out Add a basic atomic ops API abstracting away platform/architecture details. 2014-09-25 23:49:05 +02:00
lseg.out Add a bunch of new error location reports to parse-analysis error messages. 2008-09-01 20:42:46 +00:00
macaddr.out Allow input format xxxx-xxxx-xxxx for macaddr type 2014-10-21 16:16:39 -04:00
matview.out Message style improvements 2015-10-28 20:38:36 -04:00
misc_functions.out Add num_nulls() and num_nonnulls() to count NULL arguments. 2016-02-04 23:03:37 -05:00
money.out Add casts from int4 and int8 to numeric. 2011-04-05 09:35:43 -04:00
name.out Add a "USING" clause to DELETE, which is equivalent to the FROM clause 2005-04-07 01:51:41 +00:00
namespace.out Regression tests for SCHEMA commands 2013-12-11 20:45:15 +00:00
numeric.out Add scale(numeric) 2016-01-05 19:02:13 -03:00
numeric_big.out Improve type numeric's calculations for ln(), log(), exp(), pow(). 2015-11-14 14:55:46 -05:00
numerology.out Remove the special cases to prevent minus-zero results in float4 and float8 2009-02-18 19:23:26 +00:00
numerology_1.out Remove the special cases to prevent minus-zero results in float4 and float8 2009-02-18 19:23:26 +00:00
object_address.out Improve some messages 2015-12-10 22:05:27 -05:00
oid.out Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
oidjoins.out Restructure index access method API to hide most of it at the C level. 2016-01-17 19:36:59 -05:00
opr_sanity.out Improve index AMs' opclass validation procedures. 2016-01-21 19:47:15 -05:00
path.out Add a bunch of new error location reports to parse-analysis error messages. 2008-09-01 20:42:46 +00:00
pg_lsn.out Tweak new regression test case for better portability. 2014-06-04 21:31:41 -04:00
plancache.out Rearrange the handling of error context reports. 2015-09-05 11:58:33 -04:00
plpgsql.out Eschew "RESET statement_timeout" in tests. 2015-10-20 00:37:22 -04:00
point.out Fix gist_box_same and gist_point_consistent to handle fuzziness correctly. 2013-02-08 18:03:17 -05:00
polygon.out regression tests: remove polygon diagrams 2015-03-19 22:10:52 -04:00
polymorphism.out Deparse named arguments to use the new => operator instead of := 2015-05-01 09:37:10 -04:00
portals.out Fix failure to set ActiveSnapshot while rewinding a cursor. 2014-05-07 14:25:11 -04:00
portals_p2.out Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
prepare.out Improve psql's tabular display of wrapped-around data by inserting markers 2009-11-22 05:20:41 +00:00
prepared_xacts.out Eschew "RESET statement_timeout" in tests. 2015-10-20 00:37:22 -04:00
prepared_xacts_1.out Eschew "RESET statement_timeout" in tests. 2015-10-20 00:37:22 -04:00
privileges.out Rearrange the handling of error context reports. 2015-09-05 11:58:33 -04:00
psql.out Further tweaking of print_aligned_vertical(). 2015-12-01 14:47:13 -05:00
random.out Improve random regression tests to fail less frequently. 2004-03-15 15:46:25 +00:00
rangefuncs.out Rearrange the handling of error context reports. 2015-09-05 11:58:33 -04:00
rangetypes.out Add geometry/range functions to support BRIN inclusion 2015-05-05 15:22:24 -03:00
regex.out Fix some regex issues with out-of-range characters and large char ranges. 2016-02-08 10:25:40 -05:00
regproc.out Fix regrole and regnamespace types to honor quoting like other reg* types. 2016-01-04 01:03:53 -05:00
reltime.out Add a bunch of new error location reports to parse-analysis error messages. 2008-09-01 20:42:46 +00:00
replica_identity.out Shorten warning about hash creation 2014-10-18 10:36:09 -04:00
returning.out Add support for INSERT ... ON CONFLICT DO NOTHING/UPDATE. 2015-05-08 05:43:10 +02:00
roleattributes.out Clean up roles from roleattributes test 2015-08-21 15:51:24 -04:00
rolenames.out Fix up some loose ends for CURRENT_USER as RoleSpec 2015-04-30 16:57:05 -03:00
rowsecurity.out Adjust behavior of row_security GUC to match the docs. 2016-01-04 12:21:41 -05:00
rowtypes.out Fix incorrect handling of NULL index entries in indexed ROW() comparisons. 2016-03-09 14:51:22 -05:00
rules.out Provide much better wait information in pg_stat_activity. 2016-03-10 12:44:09 -05:00
sanity_check.out Redesign tablesample method API, and do extensive code review. 2015-07-25 14:39:00 -04:00
security_label.out Move security_label test 2014-12-01 16:12:43 -03:00
select.out Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
select_distinct.out Alter some gratuitous uses of "ANSI" when "SQL standard" might have been 2009-07-11 21:15:32 +00:00
select_distinct_on.out Fix assertion failure when a SELECT DISTINCT ON expression is volatile. 2009-09-12 00:04:59 +00:00
select_having.out Add a bunch of new error location reports to parse-analysis error messages. 2008-09-01 20:42:46 +00:00
select_having_1.out Add a bunch of new error location reports to parse-analysis error messages. 2008-09-01 20:42:46 +00:00
select_having_2.out Add a bunch of new error location reports to parse-analysis error messages. 2008-09-01 20:42:46 +00:00
select_implicit.out Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
select_implicit_1.out Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
select_implicit_2.out Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
select_into.out Restructure SELECT INTO's parsetree representation into CreateTableAsStmt. 2012-03-19 21:38:12 -04:00
select_views.out Improve qual pushdown for RLS and SB views 2015-04-27 12:29:42 -04:00
select_views_1.out Improve qual pushdown for RLS and SB views 2015-04-27 12:29:42 -04:00
sequence.out Add tests for sequence privileges 2014-10-22 21:39:07 -04:00
sequence_1.out Add tests for sequence privileges 2014-10-22 21:39:07 -04:00
spgist.out Add test cases for indexam operations not currently covered. 2014-11-19 19:47:43 +02:00
stats.out Make stats regression test robust in the face of parallel query. 2016-03-04 16:20:49 -05:00
strings.out Fix regexp_matches() handling of zero-length matches. 2013-07-31 11:31:22 -04:00
subselect.out Add support for INSERT ... ON CONFLICT DO NOTHING/UPDATE. 2015-05-08 05:43:10 +02:00
tablesample.out Redesign tablesample method API, and do extensive code review. 2015-07-25 14:39:00 -04:00
temp.out Reduce messages about implicit indexes and sequences to DEBUG1. 2012-07-04 20:35:29 -04:00
text.out Improve error reporting in format() 2016-02-11 18:11:11 +03:00
time.out Add a bunch of new error location reports to parse-analysis error messages. 2008-09-01 20:42:46 +00:00
timestamp.out to_char(): Do not count negative sign as a digit for time values 2015-10-05 20:51:46 -04:00
timestamptz.out to_char(): Do not count negative sign as a digit for time values 2015-10-05 20:51:46 -04:00
timetz.out Add a bunch of new error location reports to parse-analysis error messages. 2008-09-01 20:42:46 +00:00
tinterval.out Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
transactions.out Fix subtransaction cleanup after an outer-subtransaction portal fails. 2015-09-04 13:37:14 -04:00
triggers.out Fix ON CONFLICT UPDATE bug breaking AFTER UPDATE triggers. 2015-12-10 16:29:26 +01:00
truncate.out Reduce messages about implicit indexes and sequences to DEBUG1. 2012-07-04 20:35:29 -04:00
tsdicts.out Improve support of Hunspell in ispell dictionary. 2016-03-04 20:08:47 +03:00
tsearch.out Fix ts_rank_cd() to ignore stripped lexemes 2014-03-24 14:37:16 -04:00
tstypes.out Tsvector editing functions 2016-03-11 19:22:36 +03:00
txid.out Fix a number of places that produced XX000 errors in the regression tests. 2015-08-02 23:49:19 -04:00
type_sanity.out Add some checks on "char"-type columns to type_sanity and opr_sanity. 2016-01-09 17:20:58 -05:00
typed_table.out Reduce messages about implicit indexes and sequences to DEBUG1. 2012-07-04 20:35:29 -04:00
union.out Be more careful about printing constants in ruleutils.c. 2015-03-30 14:59:49 -04:00
updatable_views.out Fix incorrect varlevelsup in security_barrier_replace_vars(). 2016-02-29 12:28:06 +00:00
update.out Add support for INSERT ... ON CONFLICT DO NOTHING/UPDATE. 2015-05-08 05:43:10 +02:00
uuid.out Shorten warning about hash creation 2014-10-18 10:36:09 -04:00
vacuum.out Avoid unexpected slowdown in vacuum regression test. 2015-01-12 15:13:53 -05:00
varchar.out Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
varchar_1.out Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
varchar_2.out Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
window.out to_char: revert cc0d90b73b 2015-03-22 22:56:56 -04:00
with.out Fix ON CONFLICT UPDATE bug breaking AFTER UPDATE triggers. 2015-12-10 16:29:26 +01:00
without_oid.out Combine cmin and cmax fields of HeapTupleHeaders into a single field, by 2007-02-09 03:35:35 +00:00
xml.out Remove xmlparse(document '') test 2015-12-14 11:37:26 -06:00
xml_1.out Remove xmlparse(document '') test 2015-12-14 11:37:26 -06:00
xml_2.out Remove xmlparse(document '') test 2015-12-14 11:37:26 -06:00
xmlmap.out Add regression tests for XML mapping of domains 2013-03-13 22:42:57 -04:00
xmlmap_1.out Add regression tests for XML mapping of domains 2013-03-13 22:42:57 -04:00