postgresql/src/test/regress/sql
Michael Paquier b60d71c202 Fix parallel-safety check of expressions and predicate for index builds
As coded, the planner logic that calculates the number of parallel
workers to use for a parallel index build uses expressions and
predicates from the relcache, which are flattened for the planner by
eval_const_expressions().

As reported in the bug, an immutable parallel-unsafe function flattened
in the relcache would become a Const, which would be considered as
parallel-safe, even if the predicate or the expressions including the
function are not safe in parallel workers.  Depending on the expressions
or predicate used, this could cause the parallel build to fail.

Tests are included that check parallel index builds with parallel-unsafe
predicate and expressions.  Two routines are added to lsyscache.h to be
able to retrieve expressions and predicate of an index from its pg_index
data.

Reported-by: Alexander Lakhin
Author: Tender Wang
Reviewed-by: Jian He, Michael Paquier
Discussion: https://postgr.es/m/CAHewXN=UaAaNn9ruHDH3Os8kxLVmtWqbssnf=dZN_s9=evHUFA@mail.gmail.com
Backpatch-through: 12
2024-03-06 17:24:12 +09: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 Fix failure to detect some cases of improperly-nested aggregates. 2023-03-13 12:40:28 -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 Reject attempts to alter composite types used in indexes. 2023-03-27 15:04:02 -04:00
amutils.sql Add support for nearest-neighbor (KNN) searches to SP-GiST 2018-09-19 01:54:10 +03:00
arrays.sql Detect integer overflow while computing new array dimensions. 2023-11-06 10:56:43 -05:00
async.sql Add new function pg_notification_queue_usage. 2015-07-17 09:12:03 -04:00
bit.sql Fix integer-overflow corner cases in substring() functions. 2021-01-04 18:32:40 -05: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 Add support for <-> (box, point) operator to SP-GiST box_ops 2019-07-14 15:09:23 +03:00
brin.sql Properly detoast data in brin_form_tuple 2020-11-07 00:40:06 +01:00
btree_index.sql Fix parallel-safety check of expressions and predicate for index builds 2024-03-06 17:24:12 +09: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 Fix circle_in to accept "(x,y),r" as it's advertised to do. 2020-04-07 20:50:28 -04:00
cluster.sql Fix CLUSTER tuplesorts on abbreviated expressions. 2022-04-20 17:17:39 -07:00
collate.icu.utf8.sql Enable hash partitioning of text arrays 2020-11-04 12:46:38 +01:00
collate.linux.utf8.sql Allow to_date/to_timestamp to recognize non-English month/day names. 2020-03-03 11:06:47 -05:00
collate.sql Fix old bug with coercing the result of a COLLATE expression. 2021-04-12 14:37:22 -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 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 Introduce "anycompatible" family of polymorphic types. 2020-03-19 11:43:11 -04:00
create_am.sql Fix rare deadlock failure in create_am regression test. 2020-09-04 12:40:28 -04: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 Fix handling of R/W expanded datums that are passed to SQL functions. 2022-08-10 13:37:25 -04:00
create_index.sql Fix memory leak in IndexScan node with reordering 2022-02-14 03:32:34 +03:00
create_index_spgist.sql Provide stable test for NULL-values in KNN SP-GiST 2019-09-20 15:33:45 +03: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 Use factorial rather than numeric_fac in create_operator.sql. 2020-09-18 18:03:44 -04:00
create_procedure.sql Add collation assignment to CALL statement 2019-02-07 08:25:47 +01:00
create_schema.sql Fix crashes with CREATE SCHEMA AUTHORIZATION and schema elements 2023-04-28 19:29:40 +09:00
create_table.sql Assign collations in partition bound expressions. 2020-09-28 14:12:38 -04:00
create_table_like.sql Ensure that expandTableLikeClause() re-examines the same table. 2020-12-01 14:02:27 -05:00
create_type.sql Fix oversight in ALTER TYPE: typmodin/typmodout must propagate to arrays. 2020-07-31 17:11:28 -04:00
create_view.sql Prevent pgstats from getting confused when relkind of a relation changes 2022-12-02 18:13:40 -08:00
date.sql Remove explicit error handling for obsolete date/time values 2019-06-30 10:27:35 +02:00
dbsize.sql Fix incorrect return value in pg_size_pretty(bigint) 2021-07-09 14:04:49 +12: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 Fix assignment to array of domain over composite, redux. 2023-04-15 12:01:39 -04: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 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 Suppress unnecessary RelabelType nodes in more cases. 2020-02-26 18:14:12 -05:00
errors.sql Reject SELECT ... GROUP BY GROUPING SETS (()) FOR UPDATE. 2021-06-01 11:12:56 -04:00
event_trigger.sql Fix DDL deparse of CREATE OPERATOR CLASS 2022-05-20 18:52:55 +02:00
explain.sql Fix explain regression test failure. 2020-08-22 01:50:43 +09:00
expressions.sql Fix typos in comments, code and documentation 2023-01-03 16:26:34 +09:00
fast_default.sql Ensure we preprocess expressions before checking their volatility. 2023-11-16 10:05:14 -05:00
float4.sql Improve coverage of utils/float.h 2019-08-28 12:28:16 +09:00
float8.sql Un-hide most cascaded-drop details in regression test results. 2019-03-24 19:15:37 -04:00
foreign_data.sql Fix unexpected error messages for various flavors of ALTER TABLE 2021-07-14 17:15:18 +09:00
foreign_key.sql Reject system columns as elements of foreign keys. 2023-03-31 11:18:49 -04:00
functional_deps.sql Recognize functional dependency on primary keys. This allows a table's 2010-08-07 02:44:09 +00:00
generated.sql Ensure we preprocess expressions before checking their volatility. 2023-11-16 10:05:14 -05:00
geometry.sql Add missing commutators for distance operators 2019-07-14 14:55:01 +03:00
gin.sql Fix code for re-finding scan position in a multicolumn GIN index. 2020-08-27 17:36:13 -04:00
gist.sql Don't use_physical_tlist for an IOS with non-returnable columns. 2022-02-11 15:23:52 -05:00
groupingsets.sql Make pull_var_clause() handle GroupingFuncs exactly like Aggrefs. 2022-05-12 11:31:46 -04: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 Fix portability issue in tests from commit ce773f230. 2021-09-03 10:01:02 -04: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 Detect Julian-date overflow in timestamp[tz]_pl_interval. 2024-01-26 13:39:37 -05: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 Introduce xid8-based functions to replace txid_XXX. 2020-04-07 12:04:32 +12:00
identity.sql Forbid marking an identity column as nullable. 2021-03-12 11:08:42 -05:00
incremental_sort.sql Add proper regression test for the recent SRFs-in-pathkeys problem. 2022-08-04 11:11:22 -04: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 Avoid trying to fetch metapage of an SPGist partitioned index. 2023-12-21 12:43:36 -05:00
indirect_toast.sql Clean up duplicate table and function names in regression tests. 2018-03-15 17:09:02 -04:00
inet.sql Add sort support routine for the inet data type. 2019-08-01 09:34:14 -07:00
infinite_recurse.sql Paper over regression failures in infinite_recurse() on PPC64 Linux. 2020-10-13 17:44:56 -04:00
inherit.sql Fix ALTER TABLE .. ADD COLUMN with complex inheritance trees 2024-01-24 14:20:13 +09:00
init_privs.sql Fix typos in comments. 2017-02-06 11:33:58 +02:00
insert.sql Fix typo in test comment. 2020-05-28 12:35:18 +03:00
insert_conflict.sql Don't mark partitioned indexes invalid unnecessarily 2018-12-05 13:31:51 -03:00
int2.sql Check column list length in XMLTABLE/JSON_TABLE alias 2022-05-18 20:28:31 +02:00
int4.sql Add functions gcd() and lcm() for integer and numeric types. 2020-01-25 14:00:59 +00:00
int8.sql Fix corner-case 64-bit integer subtraction bug on some platforms. 2023-11-09 09:56:31 +00:00
interval.sql Guard against overflow in interval_mul() and interval_div(). 2023-11-18 14:49:18 +00:00
join.sql Allow subquery pullup to wrap a PlaceHolderVar in another one. 2024-01-11 15:28:13 -05:00
join_hash.sql Fix hash join when inner hashkey expressions contain Params. 2023-06-20 17:47:36 -04:00
json.sql Remove unnecessary test dependency on the contents of pg_pltemplate. 2019-08-21 10:43:23 -04:00
json_encoding.sql Allow Unicode escapes in any server encoding, not only UTF-8. 2020-03-06 14:17:43 -05:00
jsonb.sql Compute aggregate argument types correctly in transformAggregateCall(). 2023-11-06 10:38:00 -05:00
jsonb_jsonpath.sql Accept fractional seconds in jsonpath's datetime() method. 2023-06-12 10:54:28 -04:00
jsonpath.sql Implement jsonpath .datetime() method 2019-09-25 22:51:51 +03:00
jsonpath_encoding.sql Allow Unicode escapes in any server encoding, not only UTF-8. 2020-03-06 14:17:43 -05:00
limit.sql Error out if SKIP LOCKED and WITH TIES are both specified 2021-10-01 18:29:18 -03: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
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 Fix assertion if index is dropped during REFRESH CONCURRENTLY 2024-02-05 11:04:10 +02: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
name.sql Introduce parse_ident() 2016-03-18 18:16:14 +03:00
namespace.sql Replace last PushOverrideSearchPath() call with set_config_option(). 2023-05-08 06:14:12 -07:00
numeric.sql Fix corner case bug in numeric to_char() some more. 2023-03-14 19:17:31 -04:00
numeric_big.sql Fix corner-case loss of precision in numeric ln(). 2020-03-01 14:49:25 +00: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 Warn if wal_level is too low when creating a publication. 2019-07-13 10:35:34 +12:00
oid.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
oidjoins.sql Fix findoidjoins to recognize oidvector columns. 2020-05-09 16:28:20 -04:00
opr_sanity.sql Fix query checking consistency of table amhandlers in opr_sanity.sql 2023-11-22 09:32:37 +09:00
partition_aggregate.sql Rename enable_incrementalsort for clarity 2020-07-05 11:42:29 +02:00
partition_info.sql Fix crash with pg_partition_root 2019-03-22 17:27:38 +09:00
partition_join.sql Apply band-aid fix for an oversight in reparameterize_path_by_child. 2024-02-01 12:34:21 -05:00
partition_prune.sql Fix incorrect pruning of NULL partition for boolean IS NOT clauses 2024-02-20 12:51:17 +13:00
password.sql Fix use of term "verifier" 2019-10-12 21:41:59 +02:00
path.sql Improve test coverage of geometric types 2018-09-26 10:45:21 +02:00
pg_lsn.sql Add min() and max() aggregates for pg_lsn 2019-07-05 12:21:11 +09:00
plancache.sql Add plan_cache_mode setting 2018-07-16 13:35:41 +02:00
plpgsql.sql Introduce "anycompatible" family of polymorphic types. 2020-03-19 11:43:11 -04:00
point.sql Change floating-point output format for improved performance. 2019-02-13 15:20:33 +00:00
polygon.sql Fix double-word typos 2019-06-13 10:03:56 -04:00
polymorphism.sql Work around cross-version-upgrade issues created by commit 9e38c2bb5. 2020-11-10 18:32:36 -05:00
portals.sql Fix some anomalies with NO SCROLL cursors. 2021-09-10 13:18:32 -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 Fix check for conflicting session- vs transaction-level locks. 2021-07-24 18:35:52 -04:00
privileges.sql Ban role pg_signal_backend from more superuser backend types. 2023-11-06 06:14:17 -08:00
psql.sql Avoid Assert failure when processing empty statement in aborted xact. 2023-06-21 11:07:11 -04:00
psql_crosstab.sql Fix incorrect error reporting for duplicate data in \crosstabview. 2016-12-25 16:04:45 -05:00
publication.sql Fix replica identity check for a partitioned table. 2022-08-16 14:30:27 +05:30
random.sql Remove extra newlines at end and beginning of files, add missing newlines 2010-08-19 05:57:36 +00:00
rangefuncs.sql Fix planner error with pulling up subquery expressions into function RTEs. 2021-10-14 12:43:43 -04:00
rangetypes.sql Introduce "anycompatible" family of polymorphic types. 2020-03-19 11:43:11 -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 Fix regexp misbehavior with capturing parens inside "{0}". 2021-08-24 16:37:27 -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:32 -07:00
reloptions.sql Try to stabilize reloptions test, again. 2022-01-20 23:31:01 +13:00
replica_identity.sql Allow REPLICA IDENTITY to be set on an index that's not (yet) valid. 2023-01-21 13:10:29 -05: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
rowsecurity.sql Handle RLS dependencies in inlined set-returning functions properly. 2023-05-08 10:12:44 -04:00
rowtypes.sql Track nesting depth correctly when drilling down into RECORD Vars. 2023-09-15 17:01:26 -04:00
rules.sql Fix mishandling of OLD/NEW references in subqueries in rule actions. 2023-02-25 14:45:44 +00: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 Fix core dump in transformValuesClause when there are no columns. 2022-05-09 14:15:37 -04:00
select_distinct.sql Disk-based Hash Aggregation. 2020-03-18 15:42:02 -07: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
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 Add proper regression test for the recent SRFs-in-pathkeys problem. 2022-08-04 11:11:22 -04:00
select_views.sql Avoid locale-dependent output in select_views regression test. 2017-05-28 14:52:18 -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.sql Partially revert "Insert temporary debugging output in regression tests." 2019-08-11 18:55:32 -04:00
stats_ext.sql Fix non-bulletproof ScalarArrayOpExpr code for extended statistics. 2022-08-05 13:58:49 -04:00
strings.sql Avoid fetching one past the end of translate()'s "to" parameter. 2023-03-01 11:30:17 -05:00
subscription.sql Fix error handling in libpqrcv_connect() 2023-01-23 18:27:51 -08:00
subselect.sql Be more careful about the shape of hashable subplan clauses. 2020-08-14 22:14:03 -04:00
sysviews.sql Fix memory overrun when querying pg_stat_slru 2021-11-12 21:50:08 +09:00
tablesample.sql Make tablesample work with partitioned tables. 2017-02-24 12:23:28 +05:30
temp.sql Ensure we have a snapshot while dropping ON COMMIT DROP temp tables. 2023-10-16 14:06:11 -04:00
text.sql Move checking an explicit VARIADIC "any" argument into the parser. 2013-07-18 11:52:12 -04:00
tid.sql Fix crashes with currtid() and currtid2() 2020-06-01 10:32:06 +09:00
tidscan.sql Fix bug in Tid scan. 2020-02-07 22:06:31 +09:00
time.sql Reject "23:59:60.nnn" in datetime input. 2020-06-04 16:42:23 -04:00
timestamp.sql Revert "Disallow infinite endpoints in generate_series() for timestamps." 2022-05-09 11:40:41 -04:00
timestamptz.sql Revert "Disallow infinite endpoints in generate_series() for timestamps." 2022-05-09 11:40:41 -04:00
timetz.sql Back-patch test cases for timetz_zone/timetz_izone. 2023-10-17 13:55:45 -04:00
transactions.sql Fix COMMIT/ROLLBACK AND CHAIN in the presence of subtransactions. 2023-09-21 23:11:31 -04:00
triggers.sql Fix another issue with ENABLE/DISABLE TRIGGER on partitioned tables. 2023-04-05 12:56:30 -04:00
truncate.sql Fix TRUNCATE .. CASCADE on partitions 2020-02-07 17:09:36 -03:00
tsdicts.sql Fix various issues with ALTER TEXT SEARCH CONFIGURATION 2024-01-31 13:16:49 +09:00
tsearch.sql Stabilize just-added regression test cases. 2023-04-06 18:14:12 -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 Fix quoting of ACL item in table for upgrade binary compatibility checks 2021-11-18 12:53:02 +09:00
typed_table.sql Suppress less info in regression tests using DROP CASCADE. 2017-08-01 16:49:23 -04:00
unicode.sql Fix buffer overrun in unicode string normalization with empty input 2021-11-11 15:01:54 +09:00
union.sql Repair issues with faulty generation of merge-append plans. 2019-05-09 16:53:05 -04:00
updatable_views.sql Correctly update hasSubLinks while mutating a rule action. 2023-06-13 15:58:37 -04:00
update.sql Fix mishandling of resjunk columns in ON CONFLICT ... UPDATE tlists. 2021-05-10 11:02:29 -04:00
uuid.sql Add gen_random_uuid function 2019-07-14 14:30:27 +02:00
vacuum.sql Try to stabilize vacuum test. 2022-03-23 15:07:46 +13:00
varchar.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
window.sql Selectively include window frames in expression walks/mutates. 2019-10-03 10:54:52 +01:00
with.sql Check column list length in XMLTABLE/JSON_TABLE alias 2022-05-18 20:28:31 +02: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 Check column list length in XMLTABLE/JSON_TABLE alias 2022-05-18 20:28:31 +02:00
xmlmap.sql Fix incorrect xmlschema output for types timetz and timestamptz. 2022-03-18 16:01:42 -04:00