diff options
| author | Tom Lane | 2013-05-06 17:26:51 +0000 |
|---|---|---|
| committer | Tom Lane | 2013-05-06 17:27:22 +0000 |
| commit | 1d6c72a55b23554cfb946527dc77f9d80044ae2c (patch) | |
| tree | 8f7964a0114022585c1a0d90f37d2fd466bb6154 /src/test | |
| parent | 5da5798004e90b14332918e7db702271442d465d (diff) | |
Move materialized views' is-populated status into their pg_class entries.
Previously this state was represented by whether the view's disk file had
zero or nonzero size, which is problematic for numerous reasons, since it's
breaking a fundamental assumption about heap storage. This was done to
allow unlogged matviews to revert to unpopulated status after a crash
despite our lack of any ability to update catalog entries post-crash.
However, this poses enough risk of future problems that it seems better to
not support unlogged matviews until we can find another way. Accordingly,
revert that choice as well as a number of existing kluges forced by it
in favor of creating a pg_class.relispopulated flag column.
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/regress/expected/matview.out | 18 | ||||
| -rw-r--r-- | src/test/regress/expected/rules.out | 2 | ||||
| -rw-r--r-- | src/test/regress/sql/matview.sql | 6 |
3 files changed, 13 insertions, 13 deletions
diff --git a/src/test/regress/expected/matview.out b/src/test/regress/expected/matview.out index 06bb2551a83..a98de4f58d3 100644 --- a/src/test/regress/expected/matview.out +++ b/src/test/regress/expected/matview.out @@ -26,9 +26,9 @@ EXPLAIN (costs off) (2 rows) CREATE MATERIALIZED VIEW tm AS SELECT type, sum(amt) AS totamt FROM t GROUP BY type WITH NO DATA; -SELECT pg_relation_is_scannable('tm'::regclass); - pg_relation_is_scannable --------------------------- +SELECT relispopulated FROM pg_class WHERE oid = 'tm'::regclass; + relispopulated +---------------- f (1 row) @@ -36,9 +36,9 @@ SELECT * FROM tm; ERROR: materialized view "tm" has not been populated HINT: Use the REFRESH MATERIALIZED VIEW command. REFRESH MATERIALIZED VIEW tm; -SELECT pg_relation_is_scannable('tm'::regclass); - pg_relation_is_scannable --------------------------- +SELECT relispopulated FROM pg_class WHERE oid = 'tm'::regclass; + relispopulated +---------------- t (1 row) @@ -354,9 +354,9 @@ UNION ALL FROM v_test2; CREATE MATERIALIZED VIEW mv_test3 AS SELECT * FROM mv_test2 WHERE moo = 12345; -SELECT pg_relation_is_scannable('mv_test3'::regclass); - pg_relation_is_scannable --------------------------- +SELECT relispopulated FROM pg_class WHERE oid = 'mv_test3'::regclass; + relispopulated +---------------- t (1 row) diff --git a/src/test/regress/expected/rules.out b/src/test/regress/expected/rules.out index a4ecfd2aeac..dc3c8a83812 100644 --- a/src/test/regress/expected/rules.out +++ b/src/test/regress/expected/rules.out @@ -1347,7 +1347,7 @@ SELECT viewname, definition FROM pg_views WHERE schemaname <> 'information_schem | pg_get_userbyid(c.relowner) AS matviewowner, + | t.spcname AS tablespace, + | c.relhasindex AS hasindexes, + - | pg_relation_is_scannable(c.oid) AS isscannable, + + | c.relispopulated AS ispopulated, + | pg_get_viewdef(c.oid) AS definition + | FROM ((pg_class c + | LEFT JOIN pg_namespace n ON ((n.oid = c.relnamespace))) + diff --git a/src/test/regress/sql/matview.sql b/src/test/regress/sql/matview.sql index 09a7378133c..975f8dd5750 100644 --- a/src/test/regress/sql/matview.sql +++ b/src/test/regress/sql/matview.sql @@ -15,10 +15,10 @@ SELECT * FROM tv ORDER BY type; EXPLAIN (costs off) CREATE MATERIALIZED VIEW tm AS SELECT type, sum(amt) AS totamt FROM t GROUP BY type WITH NO DATA; CREATE MATERIALIZED VIEW tm AS SELECT type, sum(amt) AS totamt FROM t GROUP BY type WITH NO DATA; -SELECT pg_relation_is_scannable('tm'::regclass); +SELECT relispopulated FROM pg_class WHERE oid = 'tm'::regclass; SELECT * FROM tm; REFRESH MATERIALIZED VIEW tm; -SELECT pg_relation_is_scannable('tm'::regclass); +SELECT relispopulated FROM pg_class WHERE oid = 'tm'::regclass; CREATE UNIQUE INDEX tm_type ON tm (type); SELECT * FROM tm; @@ -109,7 +109,7 @@ CREATE VIEW v_test2 AS SELECT moo, 2*moo FROM v_test1 UNION ALL SELECT moo, 3*mo CREATE MATERIALIZED VIEW mv_test2 AS SELECT moo, 2*moo FROM v_test2 UNION ALL SELECT moo, 3*moo FROM v_test2; \d+ mv_test2 CREATE MATERIALIZED VIEW mv_test3 AS SELECT * FROM mv_test2 WHERE moo = 12345; -SELECT pg_relation_is_scannable('mv_test3'::regclass); +SELECT relispopulated FROM pg_class WHERE oid = 'mv_test3'::regclass; DROP VIEW v_test1 CASCADE; |
