mirror of
https://github.com/postgres/postgres.git
synced 2025-06-13 07:41:39 +03:00
Prevent asynchronous execution of direct foreign-table modifications.
Commits27e1f1456
and86dc90056
, which were independently discussed, cause a crash when executing an inherited foreign UPDATE/DELETE query with asynchronous execution enabled, where children of an Append node that is the direct/indirect child of the ModifyTable node are rewritten so as to modify foreign tables directly by postgresPlanDirectModify(); as in that case the direct modifications are executed asynchronously, which is not currently supported by asynchronous execution. Fix by disabling asynchronous execution of the direct modifications in that function. Author: Etsuro Fujita Reviewed-by: Amit Langote Discussion: https://postgr.es/m/CAPmGK158e9sJOfuWxfn%2B0ynrspXQU3JhNjSCbaoeSzMvnga%2Bbw%40mail.gmail.com
This commit is contained in:
@ -3237,6 +3237,14 @@ DROP TABLE base_tbl4;
|
||||
RESET enable_mergejoin;
|
||||
RESET enable_hashjoin;
|
||||
|
||||
-- Test that UPDATE/DELETE with inherited target works with async_capable enabled
|
||||
EXPLAIN (VERBOSE, COSTS OFF)
|
||||
UPDATE async_pt SET c = c || c WHERE b = 0 RETURNING *;
|
||||
UPDATE async_pt SET c = c || c WHERE b = 0 RETURNING *;
|
||||
EXPLAIN (VERBOSE, COSTS OFF)
|
||||
DELETE FROM async_pt WHERE b = 0 RETURNING *;
|
||||
DELETE FROM async_pt WHERE b = 0 RETURNING *;
|
||||
|
||||
-- Check EXPLAIN ANALYZE for a query that scans empty partitions asynchronously
|
||||
DELETE FROM async_p1;
|
||||
DELETE FROM async_p2;
|
||||
|
Reference in New Issue
Block a user