diff --git a/src/scan/postgres_table_reader.cpp b/src/scan/postgres_table_reader.cpp index 69a16e9a..89a69fdd 100644 --- a/src/scan/postgres_table_reader.cpp +++ b/src/scan/postgres_table_reader.cpp @@ -62,7 +62,7 @@ PostgresTableReader::PostgresTableReader(const char *table_scan_query, bool coun if (count_tuples_only) { /* For count_tuples_only we will try to execute aggregate node on table scan */ planned_stmt->planTree->parallel_aware = true; - marked_parallel_aware = MarkPlanParallelAware((Plan *)table_scan_query_desc->planstate->plan->lefttree); + marked_parallel_aware = MarkPlanParallelAware((Plan *)table_scan_query_desc->planstate->plan->lefttree); } else { marked_parallel_aware = MarkPlanParallelAware(table_scan_query_desc->planstate->plan); } @@ -72,8 +72,11 @@ PostgresTableReader::PostgresTableReader(const char *table_scan_query, bool coun if (persistence != RELPERSISTENCE_TEMP && marked_parallel_aware) { int parallel_workers = ParallelWorkerNumber(planned_stmt->planTree->plan_rows); + bool interrupts_can_be_process = INTERRUPTS_CAN_BE_PROCESSED(); - RESUME_CANCEL_INTERRUPTS(); + if (!interrupts_can_be_process) { + RESUME_CANCEL_INTERRUPTS(); + } if (!IsInParallelMode()) { EnterParallelMode(); @@ -94,7 +97,9 @@ PostgresTableReader::PostgresTableReader(const char *table_scan_query, bool coun memcpy(parallel_worker_readers, parallel_executor_info->reader, nreaders * sizeof(TupleQueueReader *)); } - HOLD_CANCEL_INTERRUPTS(); + if (!interrupts_can_be_process) { + HOLD_CANCEL_INTERRUPTS(); + } } elog(DEBUG1, "(PGDuckdDB/PostgresTableReader)\n\nQUERY: %s\nRUNNING: %s.\nEXECUTING: \n%s", table_scan_query, diff --git a/test/pycheck/explain_test.py b/test/pycheck/explain_test.py index e84e440b..b9347e2b 100644 --- a/test/pycheck/explain_test.py +++ b/test/pycheck/explain_test.py @@ -59,21 +59,21 @@ def test_explain_ctas(cur: Cursor): cur.sql("CREATE TEMP TABLE heap1(id) AS SELECT 1") result = cur.sql("EXPLAIN CREATE TEMP TABLE heap2(id) AS SELECT * from heap1") plan = "\n".join(result) - assert "POSTGRES_SEQ_SCAN" in plan + assert "POSTGRES_SCAN" in plan assert "Total Time:" not in plan result = cur.sql( "EXPLAIN ANALYZE CREATE TEMP TABLE heap2(id) AS SELECT * from heap1" ) plan = "\n".join(result) - assert "POSTGRES_SEQ_SCAN" in plan + assert "POSTGRES_SCAN" in plan assert "Total Time:" in plan result = cur.sql( "EXPLAIN CREATE TEMP TABLE duckdb1(id) USING duckdb AS SELECT * from heap1" ) plan = "\n".join(result) - assert "POSTGRES_SEQ_SCAN" in plan + assert "POSTGRES_SCAN" in plan assert "Total Time:" not in plan # EXPLAIN ANALYZE is not supported for DuckDB CTAS (yet)