2022-04-28 10:47:30 +00:00
|
|
|
CREATE TABLE t (i int PRIMARY KEY);
|
|
|
|
|
INSERT INTO t SELECT generate_series(1, 100);
|
2024-12-09 18:29:01 +00:00
|
|
|
SELECT pgivm.create_immv('mv', 'SELECT * FROM t');
|
2022-04-28 10:47:30 +00:00
|
|
|
NOTICE: created index "mv_index" on immv "mv"
|
|
|
|
|
create_immv
|
|
|
|
|
-------------
|
|
|
|
|
100
|
|
|
|
|
(1 row)
|
|
|
|
|
|
2024-12-09 18:29:01 +00:00
|
|
|
SELECT pgivm.create_immv(' mv2 ( x ) ', 'SELECT * FROM t WHERE i%2 = 0');
|
2022-04-28 10:47:30 +00:00
|
|
|
NOTICE: created index "mv2_index" on immv "mv2"
|
|
|
|
|
create_immv
|
|
|
|
|
-------------
|
|
|
|
|
50
|
|
|
|
|
(1 row)
|
|
|
|
|
|
2024-12-09 18:29:01 +00:00
|
|
|
SELECT pgivm.create_immv('mv3', 'WITH d AS (DELETE FROM t RETURNING NULL) SELECT * FROM t');
|
2022-04-28 10:47:30 +00:00
|
|
|
ERROR: materialized views must not use data-modifying statements in WITH
|
2024-12-09 18:29:01 +00:00
|
|
|
SELECT immvrelid, pgivm.get_immv_def(immvrelid) FROM pgivm.pg_ivm_immv ORDER BY 1;
|
2022-09-30 09:59:51 +00:00
|
|
|
immvrelid | get_immv_def
|
|
|
|
|
-----------+-----------------------
|
|
|
|
|
mv | SELECT i +
|
|
|
|
|
| FROM t
|
|
|
|
|
mv2 | SELECT i AS x +
|
|
|
|
|
| FROM t +
|
|
|
|
|
| WHERE ((i % 2) = 0)
|
2022-04-28 10:47:30 +00:00
|
|
|
(2 rows)
|
|
|
|
|
|
2022-10-18 06:51:41 +00:00
|
|
|
-- contain immv
|
2024-12-09 18:29:01 +00:00
|
|
|
SELECT pgivm.create_immv('mv_in_immv01', 'SELECT i FROM mv');
|
2022-10-18 06:51:41 +00:00
|
|
|
ERROR: including IMMV in definition is not supported on incrementally maintainable materialized view
|
2024-12-09 18:29:01 +00:00
|
|
|
SELECT pgivm.create_immv('mv_in_immv02', 'SELECT t.i FROM t INNER JOIN mv2 ON t.i = mv2.x');
|
2022-10-18 06:51:41 +00:00
|
|
|
ERROR: including IMMV in definition is not supported on incrementally maintainable materialized view
|
2022-12-15 10:03:49 +00:00
|
|
|
-- SQL other than SELECT
|
2024-12-09 18:29:01 +00:00
|
|
|
SELECT pgivm.create_immv('mv_in_create', 'CREATE TABLE in_create(i int)');
|
2022-12-15 10:03:49 +00:00
|
|
|
ERROR: view definition must specify SELECT statement
|
2024-12-09 18:29:01 +00:00
|
|
|
SELECT pgivm.create_immv('mv_in_insert', 'INSERT INTO t VALUES(10)');
|
2022-12-15 10:03:49 +00:00
|
|
|
ERROR: view definition must specify SELECT statement
|
2024-12-09 18:29:01 +00:00
|
|
|
SELECT pgivm.create_immv('mv_in_update', 'UPDATE t SET i = 10');
|
2022-12-15 10:03:49 +00:00
|
|
|
ERROR: view definition must specify SELECT statement
|
2024-12-09 18:29:01 +00:00
|
|
|
SELECT pgivm.create_immv('mv_in_delete', 'DELETE FROM t');
|
2022-12-15 10:03:49 +00:00
|
|
|
ERROR: view definition must specify SELECT statement
|
2024-12-09 18:29:01 +00:00
|
|
|
SELECT pgivm.create_immv('mv_in_drop', 'DROP TABLE t');
|
2022-12-15 10:03:49 +00:00
|
|
|
ERROR: view definition must specify SELECT statement
|
2022-04-28 10:47:30 +00:00
|
|
|
DROP TABLE t;
|
|
|
|
|
ERROR: cannot drop table t because other objects depend on it
|
|
|
|
|
DETAIL: table mv depends on table t
|
|
|
|
|
table mv2 depends on table t
|
|
|
|
|
HINT: Use DROP ... CASCADE to drop the dependent objects too.
|
|
|
|
|
DROP TABLE mv;
|
2024-12-09 18:29:01 +00:00
|
|
|
SELECT immvrelid, pgivm.get_immv_def(immvrelid) FROM pgivm.pg_ivm_immv ORDER BY 1;
|
2022-09-30 09:59:51 +00:00
|
|
|
immvrelid | get_immv_def
|
|
|
|
|
-----------+-----------------------
|
|
|
|
|
mv2 | SELECT i AS x +
|
|
|
|
|
| FROM t +
|
|
|
|
|
| WHERE ((i % 2) = 0)
|
2022-04-28 10:47:30 +00:00
|
|
|
(1 row)
|
|
|
|
|
|
|
|
|
|
DROP TABLE mv2;
|
2024-12-09 18:29:01 +00:00
|
|
|
SELECT immvrelid, pgivm.get_immv_def(immvrelid) FROM pgivm.pg_ivm_immv ORDER BY 1;
|
2022-09-30 09:59:51 +00:00
|
|
|
immvrelid | get_immv_def
|
|
|
|
|
-----------+--------------
|
2022-04-28 10:47:30 +00:00
|
|
|
(0 rows)
|
|
|
|
|
|
2022-06-13 09:22:28 +00:00
|
|
|
DROP TABLE t;
|