From 270b7daf5cb1e955f8771ec819eb810057d1779b Mon Sep 17 00:00:00 2001 From: Robert Haas Date: Mon, 14 Mar 2016 19:48:46 -0400 Subject: [PATCH] Fix EXPLAIN ANALYZE SELECT INTO not to choose a parallel plan. We don't support any parallel write operations at present, so choosing a parallel plan causes us to error out. Also, add a new regression test that uses EXPLAIN ANALYZE SELECT INTO; if we'd had this previously, force_parallel_mode testing would have caught this issue. Mithun Cy and Robert Haas --- src/backend/commands/explain.c | 2 +- src/test/regress/expected/select_into.out | 7 +++++++ src/test/regress/sql/select_into.sql | 8 ++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index ee13136b7f..9cd3127937 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -347,7 +347,7 @@ ExplainOneQuery(Query *query, IntoClause *into, ExplainState *es, INSTR_TIME_SET_CURRENT(planstart); /* plan the query */ - plan = pg_plan_query(query, CURSOR_OPT_PARALLEL_OK, params); + plan = pg_plan_query(query, into ? 0 : CURSOR_OPT_PARALLEL_OK, params); INSTR_TIME_SET_CURRENT(planduration); INSTR_TIME_SUBTRACT(planduration, planstart); diff --git a/src/test/regress/expected/select_into.out b/src/test/regress/expected/select_into.out index 9d3f04758e..b577d1b3cc 100644 --- a/src/test/regress/expected/select_into.out +++ b/src/test/regress/expected/select_into.out @@ -74,7 +74,14 @@ SELECT * FROM created_table; 4567890123456789 | -4567890123456789 (5 rows) +-- Try EXPLAIN ANALYZE SELECT INTO, but hide the output since it won't +-- be stable. +DO $$ +BEGIN + EXECUTE 'EXPLAIN ANALYZE SELECT * INTO TABLE easi FROM int8_tbl'; +END$$; DROP TABLE created_table; +DROP TABLE easi; -- -- Disallowed uses of SELECT ... INTO. All should fail -- diff --git a/src/test/regress/sql/select_into.sql b/src/test/regress/sql/select_into.sql index 4d1cc86556..e4460aea2f 100644 --- a/src/test/regress/sql/select_into.sql +++ b/src/test/regress/sql/select_into.sql @@ -66,7 +66,15 @@ SELECT make_table(); SELECT * FROM created_table; +-- Try EXPLAIN ANALYZE SELECT INTO, but hide the output since it won't +-- be stable. +DO $$ +BEGIN + EXECUTE 'EXPLAIN ANALYZE SELECT * INTO TABLE easi FROM int8_tbl'; +END$$; + DROP TABLE created_table; +DROP TABLE easi; -- -- Disallowed uses of SELECT ... INTO. All should fail