From 0d8a3bff5bf35c200bc319eb24151f297044b86a Mon Sep 17 00:00:00 2001 From: Bharath Rupireddy Date: Wed, 30 Dec 2020 09:05:34 +0530 Subject: [PATCH v2] Allow parallel mode in REFRESH MAT VIEW planning For REFRESH MATERIALIZED VIEW, pass CURSOR_OPT_PARALLEL_OK in pg_plan_query() so that parallelism can be considered. --- src/backend/commands/matview.c | 2 +- src/test/regress/expected/write_parallel.out | 4 ++++ src/test/regress/sql/write_parallel.sql | 4 ++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/backend/commands/matview.c b/src/backend/commands/matview.c index cfc63915f3..9bd977d2c7 100644 --- a/src/backend/commands/matview.c +++ b/src/backend/commands/matview.c @@ -402,7 +402,7 @@ refresh_matview_datafill(DestReceiver *dest, Query *query, CHECK_FOR_INTERRUPTS(); /* Plan the query which will generate data for the refresh. */ - plan = pg_plan_query(query, queryString, 0, NULL); + plan = pg_plan_query(query, queryString, CURSOR_OPT_PARALLEL_OK, NULL); /* * Use a snapshot with an updated command ID to ensure this query sees diff --git a/src/test/regress/expected/write_parallel.out b/src/test/regress/expected/write_parallel.out index 0c4da2591a..c4f1f1d18a 100644 --- a/src/test/regress/expected/write_parallel.out +++ b/src/test/regress/expected/write_parallel.out @@ -60,6 +60,10 @@ explain (costs off) create materialized view parallel_mat_view as create materialized view parallel_mat_view as select length(stringu1) from tenk1 group by length(stringu1); +-- Allow parallel planning of the underlying query for refresh materialized +-- view. We can be ensured that parallelism will be picked because of the +-- enforcement done at the beginning of the test. +refresh materialized view parallel_mat_view; drop materialized view parallel_mat_view; prepare prep_stmt as select length(stringu1) from tenk1 group by length(stringu1); explain (costs off) create table parallel_write as execute prep_stmt; diff --git a/src/test/regress/sql/write_parallel.sql b/src/test/regress/sql/write_parallel.sql index 78b479cedf..db77533e14 100644 --- a/src/test/regress/sql/write_parallel.sql +++ b/src/test/regress/sql/write_parallel.sql @@ -32,6 +32,10 @@ explain (costs off) create materialized view parallel_mat_view as select length(stringu1) from tenk1 group by length(stringu1); create materialized view parallel_mat_view as select length(stringu1) from tenk1 group by length(stringu1); +-- Allow parallel planning of the underlying query for refresh materialized +-- view. We can be ensured that parallelism will be picked because of the +-- enforcement done at the beginning of the test. +refresh materialized view parallel_mat_view; drop materialized view parallel_mat_view; prepare prep_stmt as select length(stringu1) from tenk1 group by length(stringu1); -- 2.25.1