postgresql/src/test/regress/sql
Tom Lane 55dc86eca7 Fix pull_varnos' miscomputation of relids set for a PlaceHolderVar.
Previously, pull_varnos() took the relids of a PlaceHolderVar as being
equal to the relids in its contents, but that fails to account for the
possibility that we have to postpone evaluation of the PHV due to outer
joins.  This could result in a malformed plan.  The known cases end up
triggering the "failed to assign all NestLoopParams to plan nodes"
sanity check in createplan.c, but other symptoms may be possible.

The right value to use is the join level we actually intend to evaluate
the PHV at.  We can get that from the ph_eval_at field of the associated
PlaceHolderInfo.  However, there are some places that call pull_varnos()
before the PlaceHolderInfos have been created; in that case, fall back
to the conservative assumption that the PHV will be evaluated at its
syntactic level.  (In principle this might result in missing some legal
optimization, but I'm not aware of any cases where it's an issue in
practice.)  Things are also a bit ticklish for calls occurring during
deconstruct_jointree(), but AFAICS the ph_eval_at fields should have
reached their final values by the time we need them.

The main problem in making this work is that pull_varnos() has no
way to get at the PlaceHolderInfos.  We can fix that easily, if a
bit tediously, in HEAD by passing it the planner "root" pointer.
In the back branches that'd cause an unacceptable API/ABI break for
extensions, so leave the existing entry points alone and add new ones
with the additional parameter.  (If an old entry point is called and
encounters a PHV, it'll fall back to using the syntactic level,
again possibly missing some valid optimization.)

Back-patch to v12.  The computation is surely also wrong before that,
but it appears that we cannot reach a bad plan thanks to join order
restrictions imposed on the subquery that the PlaceHolderVar came from.
The error only became reachable when commit 4be058fe9 allowed trivial
subqueries to be collapsed out completely, eliminating their join order
restrictions.

Per report from Stephan Springl.

Discussion: https://postgr.es/m/171041.1610849523@sss.pgh.pa.us
2021-01-21 15:37:23 -05:00
..
.gitignore
advisory_lock.sql
aggregates.sql Support infinity and -infinity in the numeric data type. 2020-07-22 19:19:44 -04:00
alter_generic.sql Implement operator class parameters 2020-03-30 19:17:23 +03: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 Fix ALTER TABLE's scheduling rules for AT_AddConstraint subcommands. 2020-08-22 12:34:17 -04:00
amutils.sql Add support for nearest-neighbor (KNN) searches to SP-GiST 2018-09-19 01:54:10 +03:00
arrays.sql Support subscripting of arbitrary types, not only arrays. 2020-12-09 12:40:37 -05:00
async.sql
bit.sql Fix integer-overflow corner cases in substring() functions. 2021-01-04 18:32:44 -05:00
bitmapops.sql
boolean.sql Clean up ancient test style 2020-12-15 22:03:39 +01:00
box.sql Clean up ancient test style 2020-12-15 22:03:39 +01:00
brin.sql Properly detoast data in brin_form_tuple 2020-11-07 00:39:19 +01:00
btree_index.sql Add LP_DEAD deletion of a posting list tuple test. 2020-04-28 16:12:56 -07:00
case.sql Clean up ancient test style 2020-12-15 22:03:39 +01:00
char.sql Clean up ancient test style 2020-12-15 22:03:39 +01:00
circle.sql Clean up ancient test style 2020-12-15 22:03:39 +01:00
cluster.sql Fix CLUSTER on expression indexes. 2019-10-15 10:40:13 -07:00
collate.icu.utf8.sql Enable hash partitioning of text arrays 2020-11-04 12:46:28 +01:00
collate.linux.utf8.sql Remove pg_collation.collversion. 2020-11-03 00:44:59 +13:00
collate.sql Account for collation when coercing the output of a SQL function. 2020-04-14 17:30:36 -04:00
combocid.sql
comments.sql
conversion.sql
copy2.sql Fix handling of redundant options with COPY for "freeze" and "header" 2020-10-05 09:43:17 +09:00
copydml.sql
copyselect.sql
create_aggregate.sql Introduce "anycompatible" family of polymorphic types. 2020-03-19 11:43:11 -04:00
create_am.sql Remove deprecated containment operators for built-in types 2020-11-03 10:43:12 +01:00
create_cast.sql
create_function_3.sql Extend SQL function tests lightly 2020-09-05 13:28:05 +02:00
create_index_spgist.sql Rename the "point is strictly above/below point" comparison operators. 2020-11-23 11:38:37 -05:00
create_index.sql Refactor CLUSTER and REINDEX grammar to use DefElem for option lists 2020-12-03 10:13:21 +09:00
create_misc.sql ANALYZE a_star and its children to avoid plan instability in tests. 2019-09-27 11:28:24 -04:00
create_operator.sql Remove support for postfix (right-unary) operators. 2020-09-17 19:38:05 -04:00
create_procedure.sql Support for OUT parameters in procedures 2020-10-05 09:21:43 +02:00
create_table_like.sql Ensure that expandTableLikeClause() re-examines the same table. 2020-12-01 14:02:27 -05:00
create_table.sql Fix assertion failure in check_new_partition_bound(). 2020-10-30 17:00:59 -04:00
create_type.sql Allow ALTER TYPE to update an existing type's typsubscript value. 2020-12-11 18:58:21 -05:00
create_view.sql Add bytea equivalents of ltrim() and rtrim(). 2021-01-18 15:11:32 -05:00
date.sql Fix make_timestamp[tz] to accept negative years as meaning BC. 2020-09-29 13:48:06 -04:00
dbsize.sql
delete.sql
dependency.sql Un-hide most cascaded-drop details in regression test results. 2019-03-24 19:15:37 -04:00
domain.sql Remove undocumented IS [NOT] OF syntax. 2020-11-19 17:39:39 -05:00
drop_if_exists.sql Introduce the 'force' option for the Drop Database command. 2019-11-13 08:25:33 +05:30
drop_operator.sql
enum.sql Relax transactional restrictions on ALTER TYPE ... ADD VALUE (redux). 2018-10-09 12:51:01 +13:00
equivclass.sql Suppress unnecessary RelabelType nodes in more cases. 2020-02-26 18:14:12 -05:00
errors.sql Paper over regression failures in infinite_recurse() on PPC64 Linux. 2020-10-13 17:44:56 -04:00
event_trigger.sql Fix confusion about event trigger vs. plain function in plpgsql. 2020-02-19 14:45:17 -05:00
explain.sql Fix explain regression test failure. 2020-08-22 01:50:05 +09:00
expressions.sql Add some test cases to improve test coverage of parse_expr.c. 2019-07-05 23:56:34 -04:00
fast_default.sql Fix heap_getattr() handling of fast defaults. 2019-02-06 01:09:32 -08:00
float4.sql Clean up ancient test style 2020-12-15 22:03:39 +01:00
float8.sql Clean up ancient test style 2020-12-15 22:03:39 +01:00
foreign_data.sql Fix partitioned index creation with foreign partitions 2019-06-26 18:38:51 -04:00
foreign_key.sql Simplify FK-to-partitioned regression test query 2020-02-20 14:14:20 -03:00
functional_deps.sql
generated.sql Allow a multi-row INSERT to specify DEFAULTs for a generated column. 2020-11-22 15:48:32 -05:00
geometry.sql Clean up ancient test style 2020-12-15 22:03:39 +01:00
gin.sql Improve test coverage of ginvacuum.c. 2020-09-01 18:40:43 -04:00
gist.sql Add support for <-> (box, point) operator to GiST box_ops 2019-07-14 15:09:15 +03:00
groupingsets.sql Second attempt to stabilize 05c02589. 2020-12-27 12:09:00 -08: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 Multirange datatypes 2020-12-20 07:20:33 +03:00
hash_index.sql Add more tests for reloptions 2017-10-19 14:22:05 +02:00
hash_part.sql Fix typo in test comment. 2020-05-28 12:35:18 +03:00
horology.sql Clean up ancient test style 2020-12-15 22:03:39 +01:00
hs_primary_extremes.sql
hs_primary_setup.sql
hs_standby_allowed.sql Allow UNLISTEN in hot-standby mode. 2019-01-25 21:14:49 -05:00
hs_standby_check.sql
hs_standby_disallowed.sql Allow UNLISTEN in hot-standby mode. 2019-01-25 21:14:49 -05:00
hs_standby_functions.sql Introduce xid8-based functions to replace txid_XXX. 2020-04-07 12:04:32 +12:00
identity.sql Allow a multi-row INSERT to specify DEFAULTs for a generated column. 2020-11-22 15:48:32 -05:00
incremental_sort.sql Disallow SRFs when considering sorts below Gather Merge 2020-12-21 19:36:22 +01:00
index_including_gist.sql Support for INCLUDE attributes in GiST indexes 2019-03-10 11:37:17 +03:00
index_including.sql Fix nbtree high key "continuescan" row compare bug. 2019-03-31 17:24:04 -07:00
indexing.sql Raise error on concurrent drop of partitioned index 2020-09-01 13:40:43 -04:00
indirect_toast.sql Clean up duplicate table and function names in regression tests. 2018-03-15 17:09:02 -04:00
inet.sql Clean up ancient test style 2020-12-15 22:03:39 +01:00
infinite_recurse.sql Paper over regression failures in infinite_recurse() on PPC64 Linux. 2020-10-13 17:44:56 -04:00
inherit.sql Add regression tests for constraint errors in partitioned tables. 2020-03-23 15:06:11 -07:00
init_privs.sql
insert_conflict.sql Don't mark partitioned indexes invalid unnecessarily 2018-12-05 13:31:51 -03:00
insert.sql Remove es_result_relation_info from EState. 2020-10-14 11:41:40 +03:00
int2.sql Clean up ancient test style 2020-12-15 22:03:39 +01:00
int4.sql Clean up ancient test style 2020-12-15 22:03:39 +01:00
int8.sql Clean up ancient test style 2020-12-15 22:03:39 +01:00
interval.sql Clean up ancient test style 2020-12-15 22:03:39 +01:00
join_hash.sql Fix representation of hash keys in Hash/HashJoin nodes. 2019-08-02 00:02:46 -07:00
join.sql Fix pull_varnos' miscomputation of relids set for a PlaceHolderVar. 2021-01-21 15:37:23 -05:00
json_encoding.sql Allow Unicode escapes in any server encoding, not only UTF-8. 2020-03-06 14:17:43 -05:00
json.sql Remove unnecessary test dependency on the contents of pg_pltemplate. 2019-08-21 10:43:23 -04:00
jsonb_jsonpath.sql Support for ISO 8601 in the jsonpath .datetime() method 2020-09-29 12:00:04 +03:00
jsonb.sql Remove "invalid concatenation of jsonb objects" error case. 2020-12-21 13:11:50 -05:00
jsonpath_encoding.sql Allow Unicode escapes in any server encoding, not only UTF-8. 2020-03-06 14:17:43 -05:00
jsonpath.sql Implement jsonpath .datetime() method 2019-09-25 22:51:51 +03:00
limit.sql WITH TIES: number of rows is optional and defaults to one 2020-05-18 19:28:46 -04:00
line.sql Improve test coverage of geometric types 2018-09-26 10:45:21 +02:00
lock.sql Revert "Accept relations of any kind in LOCK TABLE". 2020-11-06 16:17:56 -05:00
lseg.sql Improve test coverage of geometric types 2018-09-26 10:45:21 +02:00
macaddr8.sql Add support for EUI-64 MAC addresses as macaddr8 2017-03-15 11:16:25 -04:00
macaddr.sql
matview.sql Sanitize IF NOT EXISTS in EXPLAIN for CTAS and matviews 2020-12-30 21:23:24 +09:00
misc_functions.sql Avoid holding a directory FD open across assorted SRF calls. 2020-03-16 21:05:52 -04:00
misc_sanity.sql Remove WITH OIDS support, change oid catalog column visibility. 2018-11-20 16:00:17 -08:00
money.sql Fix loss of fractional digits for large values in cash_numeric(). 2019-07-26 11:59:00 -04:00
multirangetypes.sql Fix selectivity estimation @> (anymultirange, anyrange) operator 2020-12-30 20:31:15 +03:00
name.sql Clean up ancient test style 2020-12-15 22:03:39 +01:00
namespace.sql Clean up duplicate role and schema names in regression tests. 2018-03-15 14:00:31 -04:00
numeric_big.sql Fix corner-case loss of precision in numeric ln(). 2020-03-01 14:49:25 +00:00
numeric.sql Fix numeric_power() when the exponent is INT_MIN. 2021-01-05 11:15:28 +00:00
numerology.sql Clean up ancient test style 2020-12-15 22:03:39 +01:00
object_address.sql Eliminate cache lookup errors in SQL functions for object addresses 2020-07-15 09:03:10 +09:00
oid.sql Clean up ancient test style 2020-12-15 22:03:39 +01:00
oidjoins.sql Fix findoidjoins to recognize oidvector columns. 2020-05-09 16:28:20 -04:00
opr_sanity.sql Multirange datatypes 2020-12-20 07:20:33 +03:00
partition_aggregate.sql Move per-agg and per-trans duplicate finding to the planner. 2020-11-24 10:45:00 +02:00
partition_info.sql Fix crash with pg_partition_root 2019-03-22 17:27:38 +09:00
partition_join.sql Copy editing: fix a bunch of misspellings and poor wording. 2020-09-21 12:43:42 -04:00
partition_prune.sql Fix unstable partition_prune regression tests 2020-11-02 19:59:02 +13:00
password.sql Change default of password_encryption to scram-sha-256 2020-06-10 16:42:55 +02:00
path.sql Clean up ancient test style 2020-12-15 22:03:39 +01:00
pg_lsn.sql Add +(pg_lsn,numeric) and -(pg_lsn,numeric) operators. 2020-06-30 23:55:07 +09:00
plancache.sql Add generic_plans and custom_plans fields into pg_prepared_statements. 2020-07-20 11:55:50 +09:00
plpgsql.sql Remove PLPGSQL_DTYPE_ARRAYELEM datum type within pl/pgsql. 2021-01-04 12:14:37 -05:00
point.sql Clean up ancient test style 2020-12-15 22:03:39 +01:00
polygon.sql Clean up ancient test style 2020-12-15 22:03:39 +01:00
polymorphism.sql Multirange datatypes 2020-12-20 07:20:33 +03:00
portals_p2.sql
portals.sql Fix failure in WHERE CURRENT OF after rewinding the referenced cursor. 2018-09-23 16:05:45 -04: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 Add regression test for DROP OWNED BY with default ACLs 2021-01-20 13:28:10 +09:00
psql_crosstab.sql
psql.sql Revert unstable test cases from commit 7d80441d2. 2021-01-05 19:03:56 -05:00
publication.sql Allow publishing partition changes via ancestors 2020-04-08 11:19:23 +02:00
random.sql
rangefuncs.sql Fix list-munging bug that broke SQL function result coercions. 2020-10-19 14:33:09 -04:00
rangetypes.sql Fix selectivity estimation @> (anymultirange, anyrange) operator 2020-12-30 20:31:15 +03:00
regex.linux.utf8.sql
regex.sql Fix misoptimization of "{1,1}" quantifiers in regular expressions. 2019-05-12 18:53:38 -04:00
regproc.sql Implement type regcollation 2020-03-18 21:21:00 +01:00
reindex_catalog.sql Fix rd_firstRelfilenodeSubid for nailed relations, in parallel workers. 2020-09-09 18:50:24 -07:00
reloptions.sql Add vacuum_truncate reloption. 2019-04-08 16:43:57 +09:00
replica_identity.sql Preserve replica identity index across ALTER TABLE rewrite 2020-03-13 11:57:06 +01:00
returning.sql
roleattributes.sql Remove WITH OIDS support, change oid catalog column visibility. 2018-11-20 16:00:17 -08:00
rowsecurity.sql Fix usage of whole-row variables in WCO and RLS policy expressions. 2019-09-12 18:29:45 -04:00
rowtypes.sql Add a couple of regression test cases related to array subscripting. 2020-12-07 11:10:21 -05:00
rules.sql Improve test coverage of ruleutils.c. 2019-12-06 17:40:30 -05:00
sanity_check.sql Don't create relfilenode for relations without storage 2019-01-04 14:51:17 -03:00
security_label.sql
select_distinct_on.sql
select_distinct.sql Disk-based Hash Aggregation. 2020-03-18 15:42:02 -07:00
select_having.sql
select_implicit.sql
select_into.sql Sanitize IF NOT EXISTS in EXPLAIN for CTAS and matviews 2020-12-30 21:23:24 +09:00
select_parallel.sql Avoid lockup of a parallel worker when reporting a long error message. 2020-09-03 16:52:09 -04:00
select_views.sql Avoid locale-dependent output in select_views regression test. 2017-05-28 14:52:18 -04:00
select.sql Make some subquery-using test cases a bit more robust. 2018-10-14 14:02:59 -04:00
sequence.sql Make command order in test more sensible 2019-10-22 10:35:54 +02:00
spgist.sql Repair double-free in SP-GIST rescan (bug #15378) 2018-09-11 18:14:19 +01:00
stats_ext.sql psql \dX: list extended statistics objects 2021-01-20 22:57:21 +01:00
stats.sql Partially revert "Insert temporary debugging output in regression tests." 2019-08-11 18:55:32 -04:00
strings.sql Add bytea equivalents of ltrim() and rtrim(). 2021-01-18 15:11:32 -05:00
subscription.sql Add support for streaming to built-in logical replication. 2020-09-03 07:54:07 +05:30
subselect.sql Clean up ancient test style 2020-12-15 22:03:39 +01:00
sysviews.sql Add pg_stat_wal statistics view. 2020-10-02 10:17:11 +09:00
tablesample.sql
temp.sql Fix misbehavior with expression indexes on ON COMMIT DELETE ROWS tables. 2019-12-01 13:09:26 -05:00
text.sql Clean up ancient test style 2020-12-15 22:03:39 +01:00
tid.sql Remove catalog function currtid() 2020-11-25 12:18:26 +09:00
tidscan.sql Fix bug in Tid scan. 2020-02-07 22:06:31 +09:00
time.sql Add test coverage for EXTRACT() 2020-06-14 08:04:45 +02:00
timestamp.sql Clean up ancient test style 2020-12-15 22:03:39 +01:00
timestamptz.sql Clean up ancient test style 2020-12-15 22:03:39 +01:00
timetz.sql Stabilize timetz test across DST transitions. 2020-10-29 15:28:14 -04:00
transactions.sql Improve new AND CHAIN tests 2019-09-09 10:30:22 +02:00
triggers.sql Fix a few comments that referred to copy.c. 2020-11-23 11:36:13 +02:00
truncate.sql Fix TRUNCATE .. CASCADE on partitions 2020-02-07 17:09:36 -03:00
tsdicts.sql Preserve integer and float values accurately in (de)serialize_deflist. 2020-03-10 12:30:02 -04:00
tsearch.sql Fix assorted bugs by changing TS_execute's callback API to ternary logic. 2020-07-24 15:26:51 -04: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 Fix assorted bugs by changing TS_execute's callback API to ternary logic. 2020-07-24 15:26:51 -04:00
tuplesort.sql Try to stabilize results of new tuplesort regression test. 2019-12-14 15:01:56 -05:00
txid.sql Introduce xid8-based functions to replace txid_XXX. 2020-04-07 12:04:32 +12:00
type_sanity.sql Multirange datatypes 2020-12-20 07:20:33 +03:00
typed_table.sql Suppress less info in regression tests using DROP CASCADE. 2017-08-01 16:49:23 -04:00
unicode.sql Add SQL functions for Unicode normalization 2020-04-02 08:56:27 +02:00
union.sql Hash support for row types 2020-11-19 09:32:47 +01:00
updatable_views.sql Calculate extraUpdatedCols in query rewriter, not parser. 2020-10-28 13:47:02 -04:00
update.sql Introduce xid8-based functions to replace txid_XXX. 2020-04-07 12:04:32 +12:00
uuid.sql Add gen_random_uuid function 2019-07-14 14:30:27 +02:00
vacuum.sql Propagate ALTER TABLE ... SET STORAGE to indexes 2020-05-08 08:39:17 +02:00
varchar.sql Clean up ancient test style 2020-12-15 22:03:39 +01:00
window.sql Declare lead() and lag() using anycompatible not anyelement. 2020-11-04 15:08:37 -05:00
with.sql Remove undocumented IS [NOT] OF syntax. 2020-11-19 17:39:39 -05:00
write_parallel.sql Allow DML commands that create tables to use parallel query. 2017-10-05 11:40:48 -04:00
xid.sql Introduce xid8-based functions to replace txid_XXX. 2020-04-07 12:04:32 +12:00
xml.sql Avoid failure when selecting a namespace node in XMLTABLE. 2019-10-25 15:22:45 -04:00
xmlmap.sql Fix cursor_to_xml in tableforest false mode 2017-05-03 21:41:10 -04:00