diff --git a/src/backend/distributed/commands/utility_hook.c b/src/backend/distributed/commands/utility_hook.c index 47ee7beed..5dd58407e 100644 --- a/src/backend/distributed/commands/utility_hook.c +++ b/src/backend/distributed/commands/utility_hook.c @@ -473,8 +473,6 @@ multi_ProcessUtility(PlannedStmt *pstmt, (RefreshMatViewStmt *) parsetree); } - bool switchToExtensionOwner = false; - if (IsA(parsetree, DropStmt)) { DropStmt *dropStatement = (DropStmt *) parsetree; diff --git a/src/test/regress/expected/cimv.out b/src/test/regress/expected/cimv.out index f5e148b10..c35582906 100644 --- a/src/test/regress/expected/cimv.out +++ b/src/test/regress/expected/cimv.out @@ -780,7 +780,7 @@ ORDER BY a, d_hour; (60 rows) DROP MATERIALIZED VIEW mv; -NOTICE: drop cascades to trigger mv_INSERT on table events +NOTICE: drop cascades to trigger mv_3_INSERT on table events CREATE MATERIALIZED VIEW mv WITH (citus.cimv, citus.insertonlycapture) AS SELECT a, date_trunc('hour', d) AS d_hour, @@ -794,7 +794,7 @@ SELECT * FROM mv; (0 rows) DROP MATERIALIZED VIEW mv; -NOTICE: drop cascades to trigger mv_INSERT on table events +NOTICE: drop cascades to trigger mv_4_INSERT on table events SELECT create_distributed_table('events', 'a'); NOTICE: Copying data from local table... NOTICE: copying the data has completed @@ -1676,6 +1676,51 @@ SELECT * FROM mv; --------------------------------------------------------------------- (0 rows) +-- make sure same mv can be created in different schemas without overlap +CREATE SCHEMA another_schema; +SET search_path to another_schema; +SET citus.shard_count TO 4; +CREATE TABLE events (a int, b int, c double precision, d timestamp, e bigint); +CREATE MATERIALIZED VIEW mv WITH (citus.cimv) AS +SELECT a, + date_trunc('hour', d) AS d_hour, + min(b) AS min_b, + max(b) AS max_b, + avg(b) AS avg_b, + min(c) AS min_c, + max(c) AS max_c, + avg(c) AS avg_c, + min(e) AS min_e, + max(e) AS max_e, + avg(e) AS avg_e +FROM events +WHERE b > 10 +GROUP BY a, d_hour; DROP MATERIALIZED VIEW mv; +NOTICE: drop cascades to 4 other objects +-- test that another user can create CIMV as well +CREATE USER new_user; +NOTICE: not propagating CREATE ROLE/USER commands to worker nodes +CREATE SCHEMA another_schema2; +SET search_path to another_schema2; +CREATE TABLE events (a int, b int, c double precision, d timestamp, e bigint); +CREATE MATERIALIZED VIEW mv WITH (citus.cimv) AS +SELECT a, + date_trunc('hour', d) AS d_hour, + min(b) AS min_b, + max(b) AS max_b, + avg(b) AS avg_b, + min(c) AS min_c, + max(c) AS max_c, + avg(c) AS avg_c, + min(e) AS min_e, + max(e) AS max_e, + avg(e) AS avg_e +FROM events +WHERE b > 10 +GROUP BY a, d_hour; +REFRESH MATERIALIZED VIEW mv; +DROP MATERIALIZED VIEW mv CASCADE; +NOTICE: drop cascades to 4 other objects SET client_min_messages TO WARNING; -- suppress cascade messages DROP SCHEMA cimv CASCADE; diff --git a/src/test/regress/sql/cimv.sql b/src/test/regress/sql/cimv.sql index a79c45951..131d98a91 100644 --- a/src/test/regress/sql/cimv.sql +++ b/src/test/regress/sql/cimv.sql @@ -379,5 +379,31 @@ GROUP BY a, d_hour; DROP MATERIALIZED VIEW mv; +-- test that another user can create CIMV as well +CREATE USER new_user; +CREATE SCHEMA another_schema2; +SET search_path to another_schema2; + +CREATE TABLE events (a int, b int, c double precision, d timestamp, e bigint); + +CREATE MATERIALIZED VIEW mv WITH (citus.cimv) AS +SELECT a, + date_trunc('hour', d) AS d_hour, + min(b) AS min_b, + max(b) AS max_b, + avg(b) AS avg_b, + min(c) AS min_c, + max(c) AS max_c, + avg(c) AS avg_c, + min(e) AS min_e, + max(e) AS max_e, + avg(e) AS avg_e +FROM events +WHERE b > 10 +GROUP BY a, d_hour; + +REFRESH MATERIALIZED VIEW mv; +DROP MATERIALIZED VIEW mv CASCADE; + SET client_min_messages TO WARNING; -- suppress cascade messages DROP SCHEMA cimv CASCADE;