mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-10-06 18:46:54 +02:00
Fix subquery reference to non-populated MV in CMV.
A subquery reference to a matview should be allowed by CREATE MATERIALIZED VIEW WITH NO DATA, just like a direct reference is. Per bug report from Laurent Sartran. Backpatch to 9.3.
This commit is contained in:
parent
86dab9c8ad
commit
b2cd72cbbd
@ -864,7 +864,8 @@ InitPlan(QueryDesc *queryDesc, int eflags)
|
||||
* it is a parameterless subplan (not initplan), we suggest that it be
|
||||
* prepared to handle REWIND efficiently; otherwise there is no need.
|
||||
*/
|
||||
sp_eflags = eflags & EXEC_FLAG_EXPLAIN_ONLY;
|
||||
sp_eflags = eflags
|
||||
& (EXEC_FLAG_EXPLAIN_ONLY | EXEC_FLAG_WITH_NO_DATA);
|
||||
if (bms_is_member(i, plannedstmt->rewindPlanIDs))
|
||||
sp_eflags |= EXEC_FLAG_REWIND;
|
||||
|
||||
|
@ -385,3 +385,9 @@ SELECT * FROM hogeview WHERE i < 10;
|
||||
|
||||
DROP TABLE hoge CASCADE;
|
||||
NOTICE: drop cascades to materialized view hogeview
|
||||
-- allow subquery to reference unpopulated matview if WITH NO DATA is specified
|
||||
CREATE MATERIALIZED VIEW mv1 AS SELECT 1 AS col1 WITH NO DATA;
|
||||
CREATE MATERIALIZED VIEW mv2 AS SELECT * FROM mv1
|
||||
WHERE col1 = (SELECT LEAST(col1) FROM mv1) WITH NO DATA;
|
||||
DROP MATERIALIZED VIEW mv1 CASCADE;
|
||||
NOTICE: drop cascades to materialized view mv2
|
||||
|
@ -124,3 +124,9 @@ SELECT * FROM hogeview WHERE i < 10;
|
||||
VACUUM ANALYZE;
|
||||
SELECT * FROM hogeview WHERE i < 10;
|
||||
DROP TABLE hoge CASCADE;
|
||||
|
||||
-- allow subquery to reference unpopulated matview if WITH NO DATA is specified
|
||||
CREATE MATERIALIZED VIEW mv1 AS SELECT 1 AS col1 WITH NO DATA;
|
||||
CREATE MATERIALIZED VIEW mv2 AS SELECT * FROM mv1
|
||||
WHERE col1 = (SELECT LEAST(col1) FROM mv1) WITH NO DATA;
|
||||
DROP MATERIALIZED VIEW mv1 CASCADE;
|
||||
|
Loading…
Reference in New Issue
Block a user