@@ -8059,6 +8059,7 @@ fn parse_create_view() {
80598059 temporary,
80608060 to,
80618061 params,
8062+ name_before_not_exists: _,
80628063 } => {
80638064 assert_eq!(or_alter, false);
80648065 assert_eq!("myschema.myview", name.to_string());
@@ -8127,6 +8128,7 @@ fn parse_create_view_with_columns() {
81278128 temporary,
81288129 to,
81298130 params,
8131+ name_before_not_exists: _,
81308132 } => {
81318133 assert_eq!(or_alter, false);
81328134 assert_eq!("v", name.to_string());
@@ -8176,6 +8178,7 @@ fn parse_create_view_temporary() {
81768178 temporary,
81778179 to,
81788180 params,
8181+ name_before_not_exists: _,
81798182 } => {
81808183 assert_eq!(or_alter, false);
81818184 assert_eq!("myschema.myview", name.to_string());
@@ -8215,6 +8218,7 @@ fn parse_create_or_replace_view() {
82158218 temporary,
82168219 to,
82178220 params,
8221+ name_before_not_exists: _,
82188222 } => {
82198223 assert_eq!(or_alter, false);
82208224 assert_eq!("v", name.to_string());
@@ -8258,6 +8262,7 @@ fn parse_create_or_replace_materialized_view() {
82588262 temporary,
82598263 to,
82608264 params,
8265+ name_before_not_exists: _,
82618266 } => {
82628267 assert_eq!(or_alter, false);
82638268 assert_eq!("v", name.to_string());
@@ -8297,6 +8302,7 @@ fn parse_create_materialized_view() {
82978302 temporary,
82988303 to,
82998304 params,
8305+ name_before_not_exists: _,
83008306 } => {
83018307 assert_eq!(or_alter, false);
83028308 assert_eq!("myschema.myview", name.to_string());
@@ -8336,6 +8342,7 @@ fn parse_create_materialized_view_with_cluster_by() {
83368342 temporary,
83378343 to,
83388344 params,
8345+ name_before_not_exists: _,
83398346 } => {
83408347 assert_eq!(or_alter, false);
83418348 assert_eq!("myschema.myview", name.to_string());
@@ -16453,3 +16460,20 @@ fn parse_drop_stream() {
1645316460 }
1645416461 verified_stmt("DROP STREAM IF EXISTS s1");
1645516462}
16463+
16464+ #[test]
16465+ fn parse_create_view_if_not_exists() {
16466+ // Name after IF NOT EXISTS
16467+ let sql: &'static str = "CREATE VIEW IF NOT EXISTS v AS SELECT 1";
16468+ let _ = all_dialects().verified_stmt(sql);
16469+ // Name before IF NOT EXISTS
16470+ let sql = "CREATE VIEW v IF NOT EXISTS AS SELECT 1";
16471+ let _ = all_dialects().verified_stmt(sql);
16472+ // Name missing from query
16473+ let sql = "CREATE VIEW IF NOT EXISTS AS SELECT 1";
16474+ let res = all_dialects().parse_sql_statements(sql);
16475+ assert_eq!(
16476+ ParserError::ParserError("Expected: AS, found: SELECT".to_string()),
16477+ res.unwrap_err()
16478+ );
16479+ }
0 commit comments