mirror of
https://github.com/postgres/postgres.git
synced 2025-08-24 09:27:52 +03:00
Revert "Fix parallel-safety check of expressions and predicate for index builds"
This reverts commit eae7be600b
, following a discussion with Tom Lane,
due to concerns that this impacts the decisions made by the planner for
the number of workers spawned based on the inlining and const-folding of
index expressions and predicate for cases that would have worked until
this commit.
Discussion: https://postgr.es/m/162802.1709746091@sss.pgh.pa.us
Backpatch-through: 12
This commit is contained in:
@@ -6695,18 +6695,10 @@ plan_create_index_workers(Oid tableOid, Oid indexOid)
|
||||
* Currently, parallel workers can't access the leader's temporary tables.
|
||||
* Furthermore, any index predicate or index expressions must be parallel
|
||||
* safe.
|
||||
*
|
||||
* Fetch the list of expressions and predicates directly from the
|
||||
* catalogs. Retrieving this information from the relcache would cause
|
||||
* the expressions and predicates to be flattened, losing properties that
|
||||
* can be important to check if parallel workers can be used. For
|
||||
* example, immutable parallel-unsafe functions, that cannot be used in
|
||||
* parallel workers, would be changed to Const nodes, that are safe in
|
||||
* parallel workers.
|
||||
*/
|
||||
if (heap->rd_rel->relpersistence == RELPERSISTENCE_TEMP ||
|
||||
!is_parallel_safe(root, (Node *) get_index_expressions(indexOid)) ||
|
||||
!is_parallel_safe(root, (Node *) get_index_predicate(indexOid)))
|
||||
!is_parallel_safe(root, (Node *) RelationGetIndexExpressions(index)) ||
|
||||
!is_parallel_safe(root, (Node *) RelationGetIndexPredicate(index)))
|
||||
{
|
||||
parallel_workers = 0;
|
||||
goto done;
|
||||
|
Reference in New Issue
Block a user