@@ -8058,6 +8058,7 @@ fn parse_create_view() {
80588058 temporary,
80598059 to,
80608060 params,
8061+ name_before_not_exists: _,
80618062 } => {
80628063 assert_eq!(or_alter, false);
80638064 assert_eq!("myschema.myview", name.to_string());
@@ -8126,6 +8127,7 @@ fn parse_create_view_with_columns() {
81268127 temporary,
81278128 to,
81288129 params,
8130+ name_before_not_exists: _,
81298131 } => {
81308132 assert_eq!(or_alter, false);
81318133 assert_eq!("v", name.to_string());
@@ -8175,6 +8177,7 @@ fn parse_create_view_temporary() {
81758177 temporary,
81768178 to,
81778179 params,
8180+ name_before_not_exists: _,
81788181 } => {
81798182 assert_eq!(or_alter, false);
81808183 assert_eq!("myschema.myview", name.to_string());
@@ -8214,6 +8217,7 @@ fn parse_create_or_replace_view() {
82148217 temporary,
82158218 to,
82168219 params,
8220+ name_before_not_exists: _,
82178221 } => {
82188222 assert_eq!(or_alter, false);
82198223 assert_eq!("v", name.to_string());
@@ -8257,6 +8261,7 @@ fn parse_create_or_replace_materialized_view() {
82578261 temporary,
82588262 to,
82598263 params,
8264+ name_before_not_exists: _,
82608265 } => {
82618266 assert_eq!(or_alter, false);
82628267 assert_eq!("v", name.to_string());
@@ -8296,6 +8301,7 @@ fn parse_create_materialized_view() {
82968301 temporary,
82978302 to,
82988303 params,
8304+ name_before_not_exists: _,
82998305 } => {
83008306 assert_eq!(or_alter, false);
83018307 assert_eq!("myschema.myview", name.to_string());
@@ -8335,6 +8341,7 @@ fn parse_create_materialized_view_with_cluster_by() {
83358341 temporary,
83368342 to,
83378343 params,
8344+ name_before_not_exists: _,
83388345 } => {
83398346 assert_eq!(or_alter, false);
83408347 assert_eq!("myschema.myview", name.to_string());
@@ -16427,3 +16434,20 @@ fn parse_drop_stream() {
1642716434 }
1642816435 verified_stmt("DROP STREAM IF EXISTS s1");
1642916436}
16437+
16438+ #[test]
16439+ fn parse_create_view_if_not_exists() {
16440+ // Name after IF NOT EXISTS
16441+ let sql: &'static str = "CREATE VIEW IF NOT EXISTS v AS SELECT 1";
16442+ let _ = all_dialects().verified_stmt(sql);
16443+ // Name before IF NOT EXISTS
16444+ let sql = "CREATE VIEW v IF NOT EXISTS AS SELECT 1";
16445+ let _ = all_dialects().verified_stmt(sql);
16446+ // Name missing from query
16447+ let sql = "CREATE VIEW IF NOT EXISTS AS SELECT 1";
16448+ let res = all_dialects().parse_sql_statements(sql);
16449+ assert_eq!(
16450+ ParserError::ParserError("Expected: AS, found: SELECT".to_string()),
16451+ res.unwrap_err()
16452+ );
16453+ }
0 commit comments