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

Attachment: fix-postgresPlanDirectModify.patch
Description: Binary data

Reply via email to