From 91473635db26522d6a9352b0c7b60a08e7c3645d Mon Sep 17 00:00:00 2001 From: Ying Xu <32597660+yxu2162@users.noreply.github.com> Date: Wed, 17 Aug 2022 15:12:42 -0700 Subject: [PATCH] [Columnar] Check for existence of Citus before creating Citus_Columnar (#6178) * Added a check to see if Citus has already been loaded before creating citus_columnar * added tests --- src/backend/distributed/commands/extension.c | 2 +- src/test/regress/expected/multi_extension.out | 5 +++++ src/test/regress/sql/multi_extension.sql | 3 +++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/backend/distributed/commands/extension.c b/src/backend/distributed/commands/extension.c index 542a41c10..ac4bf135e 100644 --- a/src/backend/distributed/commands/extension.c +++ b/src/backend/distributed/commands/extension.c @@ -778,7 +778,7 @@ PreprocessCreateExtensionStmtForCitusColumnar(Node *parsetree) } /*citus version >= 11.1 requires install citus_columnar first*/ - if (versionNumber >= 1110) + if (versionNumber >= 1110 && !CitusHasBeenLoaded()) { if (get_extension_oid("citus_columnar", true) == InvalidOid) { diff --git a/src/test/regress/expected/multi_extension.out b/src/test/regress/expected/multi_extension.out index 59344c2e3..a0791472b 100644 --- a/src/test/regress/expected/multi_extension.out +++ b/src/test/regress/expected/multi_extension.out @@ -1095,6 +1095,11 @@ SELECT * FROM multi_extension.print_extension_changes(); --------------------------------------------------------------------- (0 rows) +-- Test CREATE EXTENSION when Citus already exists but Citus_Columnar does not. Should skip +CREATE EXTENSION IF NOT EXISTS citus; +NOTICE: extension "citus" already exists, skipping +CREATE EXTENSION citus; +ERROR: extension "citus" already exists -- Snapshot of state at 11.1-1 ALTER EXTENSION citus UPDATE TO '11.1-1'; SELECT * FROM multi_extension.print_extension_changes(); diff --git a/src/test/regress/sql/multi_extension.sql b/src/test/regress/sql/multi_extension.sql index b6f87e214..106b8bd4a 100644 --- a/src/test/regress/sql/multi_extension.sql +++ b/src/test/regress/sql/multi_extension.sql @@ -500,6 +500,9 @@ ALTER EXTENSION citus UPDATE TO '11.0-4'; -- Should be empty result since upgrade+downgrade should be a no-op SELECT * FROM multi_extension.print_extension_changes(); +-- Test CREATE EXTENSION when Citus already exists but Citus_Columnar does not. Should skip +CREATE EXTENSION IF NOT EXISTS citus; +CREATE EXTENSION citus; -- Snapshot of state at 11.1-1 ALTER EXTENSION citus UPDATE TO '11.1-1'; SELECT * FROM multi_extension.print_extension_changes();