From 3664868790fadc48f00ae65b15e682968f5a4e1d Mon Sep 17 00:00:00 2001 From: Boris Tyshkevich Date: Thu, 24 Sep 2026 10:57:35 +0200 Subject: [PATCH] parser: recognize lowercase ARRAY JOIN as an expression list --- parser/altinity_array_join_test.go | 19 +++++++++++++++++++ parser/parser_query.go | 4 +++- 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 parser/altinity_array_join_test.go 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 {