From e68bdae5f259967dc54baa8fb2e95100a26c6f81 Mon Sep 17 00:00:00 2001 From: Dmitry Patsura Date: Thu, 5 May 2022 03:20:45 +0300 Subject: [PATCH] feat: Allow ArrayIndex for GenericDialect (#480) * feat: Allow ArrayIndex for GenericDialect * test array index with generic dialect too --- src/parser.rs | 2 +- tests/sqlparser_postgres.rs | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/parser.rs b/src/parser.rs index 203b7e3f..5df75d78 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -1173,7 +1173,7 @@ impl<'a> Parser<'a> { expr: Box::new(expr), }) } else if Token::LBracket == tok { - if dialect_of!(self is PostgreSqlDialect) { + if dialect_of!(self is PostgreSqlDialect | GenericDialect) { // parse index return self.parse_array_index(expr); } diff --git a/tests/sqlparser_postgres.rs b/tests/sqlparser_postgres.rs index e5dc2095..0106e255 100644 --- a/tests/sqlparser_postgres.rs +++ b/tests/sqlparser_postgres.rs @@ -1137,7 +1137,7 @@ fn parse_array_index_expr() { .collect(); let sql = "SELECT foo[0] FROM foos"; - let select = pg().verified_only_select(sql); + let select = pg_and_generic().verified_only_select(sql); assert_eq!( &Expr::ArrayIndex { obj: Box::new(Expr::Identifier(Ident::new("foo"))), @@ -1147,7 +1147,7 @@ fn parse_array_index_expr() { ); let sql = "SELECT foo[0][0] FROM foos"; - let select = pg().verified_only_select(sql); + let select = pg_and_generic().verified_only_select(sql); assert_eq!( &Expr::ArrayIndex { obj: Box::new(Expr::Identifier(Ident::new("foo"))), @@ -1157,7 +1157,7 @@ fn parse_array_index_expr() { ); let sql = r#"SELECT bar[0]["baz"]["fooz"] FROM foos"#; - let select = pg().verified_only_select(sql); + let select = pg_and_generic().verified_only_select(sql); assert_eq!( &Expr::ArrayIndex { obj: Box::new(Expr::Identifier(Ident::new("bar"))), @@ -1177,7 +1177,7 @@ fn parse_array_index_expr() { ); let sql = "SELECT (CAST(ARRAY[ARRAY[2, 3]] AS INT[][]))[1][2]"; - let select = pg().verified_only_select(sql); + let select = pg_and_generic().verified_only_select(sql); assert_eq!( &Expr::ArrayIndex { obj: Box::new(Expr::Nested(Box::new(Expr::Cast {