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();