Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 980a3b6

Browse files
ewieCommitfest Bot
authored and
Commitfest Bot
committed
Deprecate CREATE MATERIALIZED VIEW IF NOT EXISTS
1 parent 5f68d1c commit 980a3b6

File tree

3 files changed

+79
-0
lines changed

3 files changed

+79
-0
lines changed

src/backend/parser/gram.y

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4889,6 +4889,20 @@ CreateMatViewStmt:
48894889
$8->rel->relpersistence = $2;
48904890
$8->skipData = !($11);
48914891
$$ = (Node *) ctas;
4892+
4893+
if (ctas->into->rel->schemaname)
4894+
ereport(WARNING,
4895+
errmsg("IF NOT EXISTS is deprecated in materialized view creation"),
4896+
errhint("Use CREATE OR REPLACE MATERIALIZED VIEW %s.%s.",
4897+
ctas->into->rel->schemaname,
4898+
ctas->into->rel->relname),
4899+
parser_errposition(@1));
4900+
else
4901+
ereport(WARNING,
4902+
errmsg("IF NOT EXISTS is deprecated in materialized view creation"),
4903+
errhint("Use CREATE OR REPLACE MATERIALIZED VIEW %s.",
4904+
ctas->into->rel->relname),
4905+
parser_errposition(@1));
48924906
}
48934907
| CREATE OR REPLACE OptNoLog MATERIALIZED VIEW create_mv_target AS SelectStmt opt_with_data
48944908
{

src/test/modules/test_extensions/expected/test_extensions.out

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,11 @@ Objects in extension "test_ext_cor"
404404
CREATE COLLATION ext_cine_coll
405405
( LC_COLLATE = "C", LC_CTYPE = "C" );
406406
CREATE EXTENSION test_ext_cine; -- fail
407+
WARNING: IF NOT EXISTS is deprecated in materialized view creation
408+
LINE 1: CREATE MATERIALIZED VIEW IF NOT EXISTS ext_cine_mv AS SELECT...
409+
^
410+
HINT: Use CREATE OR REPLACE MATERIALIZED VIEW ext_cine_mv.
411+
QUERY: CREATE MATERIALIZED VIEW IF NOT EXISTS ext_cine_mv AS SELECT 42 AS f1;
407412
ERROR: collation ext_cine_coll is not a member of extension "test_ext_cine"
408413
DETAIL: An extension may only use CREATE ... IF NOT EXISTS to skip object creation if the conflicting object is one that it already owns.
409414
CONTEXT: SQL statement "CREATE COLLATION IF NOT EXISTS ext_cine_coll
@@ -412,6 +417,11 @@ extension script file "test_ext_cine--1.0.sql", near line 10
412417
DROP COLLATION ext_cine_coll;
413418
CREATE MATERIALIZED VIEW ext_cine_mv AS SELECT 11 AS f1;
414419
CREATE EXTENSION test_ext_cine; -- fail
420+
WARNING: IF NOT EXISTS is deprecated in materialized view creation
421+
LINE 1: CREATE MATERIALIZED VIEW IF NOT EXISTS ext_cine_mv AS SELECT...
422+
^
423+
HINT: Use CREATE OR REPLACE MATERIALIZED VIEW ext_cine_mv.
424+
QUERY: CREATE MATERIALIZED VIEW IF NOT EXISTS ext_cine_mv AS SELECT 42 AS f1;
415425
ERROR: materialized view ext_cine_mv is not a member of extension "test_ext_cine"
416426
DETAIL: An extension may only use CREATE ... IF NOT EXISTS to skip object creation if the conflicting object is one that it already owns.
417427
CONTEXT: SQL statement "CREATE MATERIALIZED VIEW IF NOT EXISTS ext_cine_mv AS SELECT 42 AS f1"
@@ -420,40 +430,70 @@ DROP MATERIALIZED VIEW ext_cine_mv;
420430
CREATE FOREIGN DATA WRAPPER dummy;
421431
CREATE SERVER ext_cine_srv FOREIGN DATA WRAPPER dummy;
422432
CREATE EXTENSION test_ext_cine; -- fail
433+
WARNING: IF NOT EXISTS is deprecated in materialized view creation
434+
LINE 1: CREATE MATERIALIZED VIEW IF NOT EXISTS ext_cine_mv AS SELECT...
435+
^
436+
HINT: Use CREATE OR REPLACE MATERIALIZED VIEW ext_cine_mv.
437+
QUERY: CREATE MATERIALIZED VIEW IF NOT EXISTS ext_cine_mv AS SELECT 42 AS f1;
423438
ERROR: server ext_cine_srv is not a member of extension "test_ext_cine"
424439
DETAIL: An extension may only use CREATE ... IF NOT EXISTS to skip object creation if the conflicting object is one that it already owns.
425440
CONTEXT: SQL statement "CREATE SERVER IF NOT EXISTS ext_cine_srv FOREIGN DATA WRAPPER ext_cine_fdw"
426441
extension script file "test_ext_cine--1.0.sql", near line 17
427442
DROP SERVER ext_cine_srv;
428443
CREATE SCHEMA ext_cine_schema;
429444
CREATE EXTENSION test_ext_cine; -- fail
445+
WARNING: IF NOT EXISTS is deprecated in materialized view creation
446+
LINE 1: CREATE MATERIALIZED VIEW IF NOT EXISTS ext_cine_mv AS SELECT...
447+
^
448+
HINT: Use CREATE OR REPLACE MATERIALIZED VIEW ext_cine_mv.
449+
QUERY: CREATE MATERIALIZED VIEW IF NOT EXISTS ext_cine_mv AS SELECT 42 AS f1;
430450
ERROR: schema ext_cine_schema is not a member of extension "test_ext_cine"
431451
DETAIL: An extension may only use CREATE ... IF NOT EXISTS to skip object creation if the conflicting object is one that it already owns.
432452
CONTEXT: SQL statement "CREATE SCHEMA IF NOT EXISTS ext_cine_schema"
433453
extension script file "test_ext_cine--1.0.sql", near line 19
434454
DROP SCHEMA ext_cine_schema;
435455
CREATE SEQUENCE ext_cine_seq;
436456
CREATE EXTENSION test_ext_cine; -- fail
457+
WARNING: IF NOT EXISTS is deprecated in materialized view creation
458+
LINE 1: CREATE MATERIALIZED VIEW IF NOT EXISTS ext_cine_mv AS SELECT...
459+
^
460+
HINT: Use CREATE OR REPLACE MATERIALIZED VIEW ext_cine_mv.
461+
QUERY: CREATE MATERIALIZED VIEW IF NOT EXISTS ext_cine_mv AS SELECT 42 AS f1;
437462
ERROR: sequence ext_cine_seq is not a member of extension "test_ext_cine"
438463
DETAIL: An extension may only use CREATE ... IF NOT EXISTS to skip object creation if the conflicting object is one that it already owns.
439464
CONTEXT: SQL statement "CREATE SEQUENCE IF NOT EXISTS ext_cine_seq"
440465
extension script file "test_ext_cine--1.0.sql", near line 21
441466
DROP SEQUENCE ext_cine_seq;
442467
CREATE TABLE ext_cine_tab1 (x int);
443468
CREATE EXTENSION test_ext_cine; -- fail
469+
WARNING: IF NOT EXISTS is deprecated in materialized view creation
470+
LINE 1: CREATE MATERIALIZED VIEW IF NOT EXISTS ext_cine_mv AS SELECT...
471+
^
472+
HINT: Use CREATE OR REPLACE MATERIALIZED VIEW ext_cine_mv.
473+
QUERY: CREATE MATERIALIZED VIEW IF NOT EXISTS ext_cine_mv AS SELECT 42 AS f1;
444474
ERROR: table ext_cine_tab1 is not a member of extension "test_ext_cine"
445475
DETAIL: An extension may only use CREATE ... IF NOT EXISTS to skip object creation if the conflicting object is one that it already owns.
446476
CONTEXT: SQL statement "CREATE TABLE IF NOT EXISTS ext_cine_tab1 (x int)"
447477
extension script file "test_ext_cine--1.0.sql", near line 23
448478
DROP TABLE ext_cine_tab1;
449479
CREATE TABLE ext_cine_tab2 AS SELECT 42 AS y;
450480
CREATE EXTENSION test_ext_cine; -- fail
481+
WARNING: IF NOT EXISTS is deprecated in materialized view creation
482+
LINE 1: CREATE MATERIALIZED VIEW IF NOT EXISTS ext_cine_mv AS SELECT...
483+
^
484+
HINT: Use CREATE OR REPLACE MATERIALIZED VIEW ext_cine_mv.
485+
QUERY: CREATE MATERIALIZED VIEW IF NOT EXISTS ext_cine_mv AS SELECT 42 AS f1;
451486
ERROR: table ext_cine_tab2 is not a member of extension "test_ext_cine"
452487
DETAIL: An extension may only use CREATE ... IF NOT EXISTS to skip object creation if the conflicting object is one that it already owns.
453488
CONTEXT: SQL statement "CREATE TABLE IF NOT EXISTS ext_cine_tab2 AS SELECT 42 AS y"
454489
extension script file "test_ext_cine--1.0.sql", near line 25
455490
DROP TABLE ext_cine_tab2;
456491
CREATE EXTENSION test_ext_cine;
492+
WARNING: IF NOT EXISTS is deprecated in materialized view creation
493+
LINE 1: CREATE MATERIALIZED VIEW IF NOT EXISTS ext_cine_mv AS SELECT...
494+
^
495+
HINT: Use CREATE OR REPLACE MATERIALIZED VIEW ext_cine_mv.
496+
QUERY: CREATE MATERIALIZED VIEW IF NOT EXISTS ext_cine_mv AS SELECT 42 AS f1;
457497
\dx+ test_ext_cine
458498
Objects in extension "test_ext_cine"
459499
Object description
@@ -475,6 +515,11 @@ Objects in extension "test_ext_cine"
475515
(14 rows)
476516

477517
ALTER EXTENSION test_ext_cine UPDATE TO '1.1';
518+
WARNING: IF NOT EXISTS is deprecated in materialized view creation
519+
LINE 1: CREATE MATERIALIZED VIEW IF NOT EXISTS ext_cine_mv AS SELECT...
520+
^
521+
HINT: Use CREATE OR REPLACE MATERIALIZED VIEW ext_cine_mv.
522+
QUERY: CREATE MATERIALIZED VIEW IF NOT EXISTS ext_cine_mv AS SELECT 42 AS f1;
478523
\dx+ test_ext_cine
479524
Objects in extension "test_ext_cine"
480525
Object description

src/test/regress/expected/matview.out

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -565,6 +565,10 @@ CREATE MATERIALIZED VIEW mvtest_mv_foo AS SELECT * FROM mvtest_foo_data;
565565
CREATE MATERIALIZED VIEW mvtest_mv_foo AS SELECT * FROM mvtest_foo_data;
566566
ERROR: relation "mvtest_mv_foo" already exists
567567
CREATE MATERIALIZED VIEW IF NOT EXISTS mvtest_mv_foo AS SELECT * FROM mvtest_foo_data;
568+
WARNING: IF NOT EXISTS is deprecated in materialized view creation
569+
LINE 1: CREATE MATERIALIZED VIEW IF NOT EXISTS mvtest_mv_foo AS SELE...
570+
^
571+
HINT: Use CREATE OR REPLACE MATERIALIZED VIEW mvtest_mv_foo.
568572
NOTICE: relation "mvtest_mv_foo" already exists, skipping
569573
CREATE UNIQUE INDEX ON mvtest_mv_foo (i);
570574
RESET ROLE;
@@ -662,12 +666,20 @@ CREATE MATERIALIZED VIEW matview_ine_tab AS SELECT 1 / 0; -- error
662666
ERROR: relation "matview_ine_tab" already exists
663667
CREATE MATERIALIZED VIEW IF NOT EXISTS matview_ine_tab AS
664668
SELECT 1 / 0; -- ok
669+
WARNING: IF NOT EXISTS is deprecated in materialized view creation
670+
LINE 1: CREATE MATERIALIZED VIEW IF NOT EXISTS matview_ine_tab AS
671+
^
672+
HINT: Use CREATE OR REPLACE MATERIALIZED VIEW matview_ine_tab.
665673
NOTICE: relation "matview_ine_tab" already exists, skipping
666674
CREATE MATERIALIZED VIEW matview_ine_tab AS
667675
SELECT 1 / 0 WITH NO DATA; -- error
668676
ERROR: relation "matview_ine_tab" already exists
669677
CREATE MATERIALIZED VIEW IF NOT EXISTS matview_ine_tab AS
670678
SELECT 1 / 0 WITH NO DATA; -- ok
679+
WARNING: IF NOT EXISTS is deprecated in materialized view creation
680+
LINE 1: CREATE MATERIALIZED VIEW IF NOT EXISTS matview_ine_tab AS
681+
^
682+
HINT: Use CREATE OR REPLACE MATERIALIZED VIEW matview_ine_tab.
671683
NOTICE: relation "matview_ine_tab" already exists, skipping
672684
EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF, BUFFERS OFF)
673685
CREATE MATERIALIZED VIEW matview_ine_tab AS
@@ -676,6 +688,10 @@ ERROR: relation "matview_ine_tab" already exists
676688
EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF, BUFFERS OFF)
677689
CREATE MATERIALIZED VIEW IF NOT EXISTS matview_ine_tab AS
678690
SELECT 1 / 0; -- ok
691+
WARNING: IF NOT EXISTS is deprecated in materialized view creation
692+
LINE 2: CREATE MATERIALIZED VIEW IF NOT EXISTS matview_ine_tab AS
693+
^
694+
HINT: Use CREATE OR REPLACE MATERIALIZED VIEW matview_ine_tab.
679695
NOTICE: relation "matview_ine_tab" already exists, skipping
680696
QUERY PLAN
681697
------------
@@ -688,6 +704,10 @@ ERROR: relation "matview_ine_tab" already exists
688704
EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF, BUFFERS OFF)
689705
CREATE MATERIALIZED VIEW IF NOT EXISTS matview_ine_tab AS
690706
SELECT 1 / 0 WITH NO DATA; -- ok
707+
WARNING: IF NOT EXISTS is deprecated in materialized view creation
708+
LINE 2: CREATE MATERIALIZED VIEW IF NOT EXISTS matview_ine_tab AS
709+
^
710+
HINT: Use CREATE OR REPLACE MATERIALIZED VIEW matview_ine_tab.
691711
NOTICE: relation "matview_ine_tab" already exists, skipping
692712
QUERY PLAN
693713
------------

0 commit comments

Comments
 (0)