diff --git a/parser/altinity_array_join_test.go b/parser/altinity_array_join_test.go new file mode 100644 index 0000000..2b43824 --- /dev/null +++ b/parser/altinity_array_join_test.go @@ -0,0 +1,19 @@ +package parser + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestLowercaseArrayJoinExpressionList(t *testing.T) { + for _, sql := range []string{ + "SELECT 1 FROM t ARRAY JOIN arrayConcat(xs, [x]) AS ys", + "SELECT 1 FROM t array join arrayConcat(xs, [x]) AS ys", + } { + stmts, err := NewParser(sql).ParseStmts() + require.NoError(t, err) + require.Len(t, stmts, 1) + require.Equal(t, Format(stmts[0]), Format(parseOneStmt(t, Format(stmts[0])))) + } +} diff --git a/parser/parser_query.go b/parser/parser_query.go index 41263f5..21cc57b 100644 --- a/parser/parser_query.go +++ b/parser/parser_query.go @@ -372,7 +372,9 @@ func (p *Parser) parseJoinRightExpr(pos Pos) (expr Expr, err error) { modifiers = append(modifiers, KeywordJoin) // Check if this is an ARRAY JOIN - if slices.Contains(modifiers, KeywordArray) { + if slices.ContainsFunc(modifiers, func(modifier string) bool { + return strings.EqualFold(modifier, KeywordArray) + }) { // For ARRAY JOIN, parse column expression list instead of table expression expr, err = p.parseColumnExprList(p.Pos()) if err != nil {