parse
CREATE VIEW a AS SELECT * FROM b
----
CREATE VIEW a AS SELECT * FROM b
CREATE VIEW a AS SELECT (*) FROM b -- fully parenthesized
CREATE VIEW a AS SELECT * FROM b -- literals removed
CREATE VIEW _ AS SELECT * FROM _ -- identifiers removed

parse
CREATE OR REPLACE VIEW a AS SELECT * FROM b
----
CREATE OR REPLACE VIEW a AS SELECT * FROM b
CREATE OR REPLACE VIEW a AS SELECT (*) FROM b -- fully parenthesized
CREATE OR REPLACE VIEW a AS SELECT * FROM b -- literals removed
CREATE OR REPLACE VIEW _ AS SELECT * FROM _ -- identifiers removed

parse
EXPLAIN CREATE VIEW a AS SELECT * FROM b
----
EXPLAIN CREATE VIEW a AS SELECT * FROM b
EXPLAIN CREATE VIEW a AS SELECT (*) FROM b -- fully parenthesized
EXPLAIN CREATE VIEW a AS SELECT * FROM b -- literals removed
EXPLAIN CREATE VIEW _ AS SELECT * FROM _ -- identifiers removed

parse
CREATE VIEW a AS SELECT b.* FROM b LIMIT 5
----
CREATE VIEW a AS SELECT b.* FROM b LIMIT 5
CREATE VIEW a AS SELECT (b.*) FROM b LIMIT (5) -- fully parenthesized
CREATE VIEW a AS SELECT b.* FROM b LIMIT _ -- literals removed
CREATE VIEW _ AS SELECT _.* FROM _ LIMIT 5 -- identifiers removed

parse
CREATE VIEW a AS (SELECT c, d FROM b WHERE c > 0 ORDER BY c)
----
CREATE VIEW a AS (SELECT c, d FROM b WHERE c > 0 ORDER BY c)
CREATE VIEW a AS (SELECT (c), (d) FROM b WHERE ((c) > (0)) ORDER BY (c)) -- fully parenthesized
CREATE VIEW a AS (SELECT c, d FROM b WHERE c > _ ORDER BY c) -- literals removed
CREATE VIEW _ AS (SELECT _, _ FROM _ WHERE _ > 0 ORDER BY _) -- identifiers removed

parse
CREATE VIEW a (x, y) AS SELECT c, d FROM b
----
CREATE VIEW a (x, y) AS SELECT c, d FROM b
CREATE VIEW a (x, y) AS SELECT (c), (d) FROM b -- fully parenthesized
CREATE VIEW a (x, y) AS SELECT c, d FROM b -- literals removed
CREATE VIEW _ (_, _) AS SELECT _, _ FROM _ -- identifiers removed

parse
CREATE VIEW a AS VALUES (1, 'one'), (2, 'two')
----
CREATE VIEW a AS VALUES (1, 'one'), (2, 'two')
CREATE VIEW a AS VALUES ((1), ('one')), ((2), ('two')) -- fully parenthesized
CREATE VIEW a AS VALUES (_, '_'), (__more1_10__) -- literals removed
CREATE VIEW _ AS VALUES (1, 'one'), (2, 'two') -- identifiers removed

parse
CREATE VIEW a (x, y) AS VALUES (1, 'one'), (2, 'two')
----
CREATE VIEW a (x, y) AS VALUES (1, 'one'), (2, 'two')
CREATE VIEW a (x, y) AS VALUES ((1), ('one')), ((2), ('two')) -- fully parenthesized
CREATE VIEW a (x, y) AS VALUES (_, '_'), (__more1_10__) -- literals removed
CREATE VIEW _ (_, _) AS VALUES (1, 'one'), (2, 'two') -- identifiers removed

parse
CREATE VIEW a AS TABLE b
----
CREATE VIEW a AS TABLE b
CREATE VIEW a AS TABLE b -- fully parenthesized
CREATE VIEW a AS TABLE b -- literals removed
CREATE VIEW _ AS TABLE _ -- identifiers removed

error
CREATE VIEW a
----
at or near "EOF": syntax error
DETAIL: source SQL:
CREATE VIEW a
             ^
HINT: try \h CREATE VIEW

error
CREATE VIEW a () AS select * FROM b
----
at or near ")": syntax error
DETAIL: source SQL:
CREATE VIEW a () AS select * FROM b
               ^
HINT: try \h CREATE VIEW

parse
CREATE TEMPORARY VIEW a AS SELECT b
----
CREATE TEMPORARY VIEW a AS SELECT b
CREATE TEMPORARY VIEW a AS SELECT (b) -- fully parenthesized
CREATE TEMPORARY VIEW a AS SELECT b -- literals removed
CREATE TEMPORARY VIEW _ AS SELECT _ -- identifiers removed

parse
CREATE MATERIALIZED VIEW a AS SELECT * FROM b
----
CREATE MATERIALIZED VIEW a AS SELECT * FROM b WITH DATA -- normalized!
CREATE MATERIALIZED VIEW a AS SELECT (*) FROM b WITH DATA -- fully parenthesized
CREATE MATERIALIZED VIEW a AS SELECT * FROM b WITH DATA -- literals removed
CREATE MATERIALIZED VIEW _ AS SELECT * FROM _ WITH DATA -- identifiers removed

parse
CREATE MATERIALIZED VIEW a AS SELECT * FROM b WITH DATA
----
CREATE MATERIALIZED VIEW a AS SELECT * FROM b WITH DATA
CREATE MATERIALIZED VIEW a AS SELECT (*) FROM b WITH DATA -- fully parenthesized
CREATE MATERIALIZED VIEW a AS SELECT * FROM b WITH DATA -- literals removed
CREATE MATERIALIZED VIEW _ AS SELECT * FROM _ WITH DATA -- identifiers removed

parse
CREATE MATERIALIZED VIEW IF NOT EXISTS a AS SELECT * FROM b
----
CREATE MATERIALIZED VIEW IF NOT EXISTS a AS SELECT * FROM b WITH DATA -- normalized!
CREATE MATERIALIZED VIEW IF NOT EXISTS a AS SELECT (*) FROM b WITH DATA -- fully parenthesized
CREATE MATERIALIZED VIEW IF NOT EXISTS a AS SELECT * FROM b WITH DATA -- literals removed
CREATE MATERIALIZED VIEW IF NOT EXISTS _ AS SELECT * FROM _ WITH DATA -- identifiers removed

parse
CREATE MATERIALIZED VIEW IF NOT EXISTS a AS SELECT * FROM b WITH DATA
----
CREATE MATERIALIZED VIEW IF NOT EXISTS a AS SELECT * FROM b WITH DATA
CREATE MATERIALIZED VIEW IF NOT EXISTS a AS SELECT (*) FROM b WITH DATA -- fully parenthesized
CREATE MATERIALIZED VIEW IF NOT EXISTS a AS SELECT * FROM b WITH DATA -- literals removed
CREATE MATERIALIZED VIEW IF NOT EXISTS _ AS SELECT * FROM _ WITH DATA -- identifiers removed

parse
CREATE MATERIALIZED VIEW a AS SELECT * FROM b WITH NO DATA
----
CREATE MATERIALIZED VIEW a AS SELECT * FROM b WITH NO DATA
CREATE MATERIALIZED VIEW a AS SELECT (*) FROM b WITH NO DATA -- fully parenthesized
CREATE MATERIALIZED VIEW a AS SELECT * FROM b WITH NO DATA -- literals removed
CREATE MATERIALIZED VIEW _ AS SELECT * FROM _ WITH NO DATA -- identifiers removed

parse
CREATE MATERIALIZED VIEW IF NOT EXISTS a AS SELECT * FROM b WITH NO DATA
----
CREATE MATERIALIZED VIEW IF NOT EXISTS a AS SELECT * FROM b WITH NO DATA
CREATE MATERIALIZED VIEW IF NOT EXISTS a AS SELECT (*) FROM b WITH NO DATA -- fully parenthesized
CREATE MATERIALIZED VIEW IF NOT EXISTS a AS SELECT * FROM b WITH NO DATA -- literals removed
CREATE MATERIALIZED VIEW IF NOT EXISTS _ AS SELECT * FROM _ WITH NO DATA -- identifiers removed

parse
REFRESH MATERIALIZED VIEW a.b
----
REFRESH MATERIALIZED VIEW a.b
REFRESH MATERIALIZED VIEW a.b -- fully parenthesized
REFRESH MATERIALIZED VIEW a.b -- literals removed
REFRESH MATERIALIZED VIEW _._ -- identifiers removed

parse
REFRESH MATERIALIZED VIEW CONCURRENTLY a.b
----
REFRESH MATERIALIZED VIEW CONCURRENTLY a.b
REFRESH MATERIALIZED VIEW CONCURRENTLY a.b -- fully parenthesized
REFRESH MATERIALIZED VIEW CONCURRENTLY a.b -- literals removed
REFRESH MATERIALIZED VIEW CONCURRENTLY _._ -- identifiers removed

parse
REFRESH MATERIALIZED VIEW a.b WITH DATA
----
REFRESH MATERIALIZED VIEW a.b WITH DATA
REFRESH MATERIALIZED VIEW a.b WITH DATA -- fully parenthesized
REFRESH MATERIALIZED VIEW a.b WITH DATA -- literals removed
REFRESH MATERIALIZED VIEW _._ WITH DATA -- identifiers removed

parse
REFRESH MATERIALIZED VIEW a.b WITH NO DATA
----
REFRESH MATERIALIZED VIEW a.b WITH NO DATA
REFRESH MATERIALIZED VIEW a.b WITH NO DATA -- fully parenthesized
REFRESH MATERIALIZED VIEW a.b WITH NO DATA -- literals removed
REFRESH MATERIALIZED VIEW _._ WITH NO DATA -- identifiers removed
