I noticed this while working on the EXPLAIN-ANALYZE-for-async-capable-nodes issue:
EXPLAIN (VERBOSE, COSTS OFF) DELETE FROM async_pt; QUERY PLAN ---------------------------------------------------------------- Delete on public.async_pt Foreign Delete on public.async_p1 async_pt_1 Foreign Delete on public.async_p2 async_pt_2 Delete on public.async_p3 async_pt_3 -> Append -> Async Foreign Delete on public.async_p1 async_pt_1 Remote SQL: DELETE FROM public.base_tbl1 -> Async Foreign Delete on public.async_p2 async_pt_2 Remote SQL: DELETE FROM public.base_tbl2 -> Seq Scan on public.async_p3 async_pt_3 Output: async_pt_3.tableoid, async_pt_3.ctid (11 rows) DELETE FROM async_pt; server closed the connection unexpectedly This probably means the server terminated abnormally before or while processing the request. connection to server was lost The cause for this would be that direct-update plans are mistakenly treated as async-capable ones, as shown in the EXPLAIN output. To fix, I think we should modify postgresPlanDirectModify() so that it clears the async-capable flag if it is set. Attached is a patch for that. Maybe I am missing something, though. Best regards, Etsuro Fujita
fix-postgresPlanDirectModify.patch
Description: Binary data