2022-06-13 09:22:28 +00:00
|
|
|
CREATE TABLE t (i int PRIMARY KEY);
|
|
|
|
|
INSERT INTO t SELECT generate_series(1, 5);
|
|
|
|
|
SELECT create_immv('mv', 'SELECT * FROM t');
|
|
|
|
|
NOTICE: created index "mv_index" on immv "mv"
|
|
|
|
|
create_immv
|
|
|
|
|
-------------
|
|
|
|
|
5
|
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
|
|
SELECT immvrelid, ispopulated FROM pg_ivm_immv ORDER BY 1;
|
|
|
|
|
immvrelid | ispopulated
|
|
|
|
|
-----------+-------------
|
|
|
|
|
mv | t
|
|
|
|
|
(1 row)
|
|
|
|
|
|
2022-06-23 02:33:06 +00:00
|
|
|
-- Refresh IMMV with data
|
2022-06-13 09:22:28 +00:00
|
|
|
SELECT refresh_immv('mv', true);
|
|
|
|
|
refresh_immv
|
|
|
|
|
--------------
|
|
|
|
|
5
|
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
|
|
SELECT immvrelid, ispopulated FROM pg_ivm_immv ORDER BY 1;
|
|
|
|
|
immvrelid | ispopulated
|
|
|
|
|
-----------+-------------
|
|
|
|
|
mv | t
|
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
|
|
INSERT INTO t VALUES(6);
|
|
|
|
|
SELECT i FROM mv ORDER BY 1;
|
|
|
|
|
i
|
|
|
|
|
---
|
|
|
|
|
1
|
|
|
|
|
2
|
|
|
|
|
3
|
|
|
|
|
4
|
|
|
|
|
5
|
|
|
|
|
6
|
|
|
|
|
(6 rows)
|
|
|
|
|
|
2022-06-23 02:33:06 +00:00
|
|
|
-- Make IMMV unpopulated
|
2022-06-13 09:22:28 +00:00
|
|
|
SELECT refresh_immv('mv', false);
|
|
|
|
|
refresh_immv
|
|
|
|
|
--------------
|
|
|
|
|
0
|
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
|
|
SELECT immvrelid, ispopulated FROM pg_ivm_immv ORDER BY 1;
|
|
|
|
|
immvrelid | ispopulated
|
|
|
|
|
-----------+-------------
|
|
|
|
|
mv | f
|
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
|
|
SELECT i FROM mv ORDER BY 1;
|
|
|
|
|
i
|
|
|
|
|
---
|
|
|
|
|
(0 rows)
|
|
|
|
|
|
2022-06-23 02:33:06 +00:00
|
|
|
-- Immediate maintenance is disabled. IMMV can be scannable and is empty.
|
2022-06-13 09:22:28 +00:00
|
|
|
INSERT INTO t VALUES(7);
|
|
|
|
|
SELECT i FROM mv ORDER BY 1;
|
|
|
|
|
i
|
|
|
|
|
---
|
|
|
|
|
(0 rows)
|
|
|
|
|
|
2022-06-23 02:33:06 +00:00
|
|
|
-- Refresh the IMMV and make it populated.
|
2022-06-13 09:22:28 +00:00
|
|
|
SELECT refresh_immv('mv', true);
|
|
|
|
|
refresh_immv
|
|
|
|
|
--------------
|
|
|
|
|
7
|
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
|
|
SELECT immvrelid, ispopulated FROM pg_ivm_immv ORDER BY 1;
|
|
|
|
|
immvrelid | ispopulated
|
|
|
|
|
-----------+-------------
|
|
|
|
|
mv | t
|
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
|
|
SELECT i FROM mv ORDER BY 1;
|
|
|
|
|
i
|
|
|
|
|
---
|
|
|
|
|
1
|
|
|
|
|
2
|
|
|
|
|
3
|
|
|
|
|
4
|
|
|
|
|
5
|
|
|
|
|
6
|
|
|
|
|
7
|
|
|
|
|
(7 rows)
|
|
|
|
|
|
2022-06-23 02:33:06 +00:00
|
|
|
-- Immediate maintenance is enabled.
|
2022-06-13 09:22:28 +00:00
|
|
|
INSERT INTO t VALUES(8);
|
|
|
|
|
SELECT i FROM mv ORDER BY 1;
|
|
|
|
|
i
|
|
|
|
|
---
|
|
|
|
|
1
|
|
|
|
|
2
|
|
|
|
|
3
|
|
|
|
|
4
|
|
|
|
|
5
|
|
|
|
|
6
|
|
|
|
|
7
|
|
|
|
|
8
|
|
|
|
|
(8 rows)
|
|
|
|
|
|
2022-06-23 02:33:06 +00:00
|
|
|
-- Use qualified name
|
|
|
|
|
SELECT refresh_immv('public.mv', true);
|
|
|
|
|
refresh_immv
|
|
|
|
|
--------------
|
|
|
|
|
8
|
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
|
|
-- Use not existing IMMV
|
|
|
|
|
SELECT refresh_immv('mv_not_existing', true);
|
|
|
|
|
ERROR: relation "mv_not_existing" does not exist
|
|
|
|
|
-- Try to refresh a normal table -- error
|
|
|
|
|
SELECT refresh_immv('t', true);
|
|
|
|
|
ERROR: "t" is not an IMMV
|