From 6e3f4169a1d8bb66b3871099abdfa8da3e402ba3 Mon Sep 17 00:00:00 2001 From: Pijus Kamandulis Date: Tue, 18 Feb 2025 19:12:08 +0200 Subject: [PATCH] Fix 'ComparisonOperator' parsing --- parsers/nosql/nosql.go | 50 +++++++++++++++++++------------------- parsers/nosql/nosql.peg | 2 +- parsers/nosql/were_test.go | 4 +-- 3 files changed, 28 insertions(+), 28 deletions(-) diff --git a/parsers/nosql/nosql.go b/parsers/nosql/nosql.go index 82e1992..8759c57 100644 --- a/parsers/nosql/nosql.go +++ b/parsers/nosql/nosql.go @@ -2107,40 +2107,40 @@ var g = &grammar{ alternatives: []any{ &litMatcher{ pos: position{line: 406, col: 24, offset: 11503}, - val: "=", - ignoreCase: false, - want: "\"=\"", - }, - &litMatcher{ - pos: position{line: 406, col: 30, offset: 11509}, - val: "!=", - ignoreCase: false, - want: "\"!=\"", - }, - &litMatcher{ - pos: position{line: 406, col: 37, offset: 11516}, - val: "<", - ignoreCase: false, - want: "\"<\"", - }, - &litMatcher{ - pos: position{line: 406, col: 43, offset: 11522}, val: "<=", ignoreCase: false, want: "\"<=\"", }, &litMatcher{ - pos: position{line: 406, col: 50, offset: 11529}, - val: ">", - ignoreCase: false, - want: "\">\"", - }, - &litMatcher{ - pos: position{line: 406, col: 56, offset: 11535}, + pos: position{line: 406, col: 31, offset: 11510}, val: ">=", ignoreCase: false, want: "\">=\"", }, + &litMatcher{ + pos: position{line: 406, col: 38, offset: 11517}, + val: "=", + ignoreCase: false, + want: "\"=\"", + }, + &litMatcher{ + pos: position{line: 406, col: 44, offset: 11523}, + val: "!=", + ignoreCase: false, + want: "\"!=\"", + }, + &litMatcher{ + pos: position{line: 406, col: 51, offset: 11530}, + val: "<", + ignoreCase: false, + want: "\"<\"", + }, + &litMatcher{ + pos: position{line: 406, col: 57, offset: 11536}, + val: ">", + ignoreCase: false, + want: "\">\"", + }, }, }, }, diff --git a/parsers/nosql/nosql.peg b/parsers/nosql/nosql.peg index cdfec98..eab1eb1 100644 --- a/parsers/nosql/nosql.peg +++ b/parsers/nosql/nosql.peg @@ -403,7 +403,7 @@ OrderBy <- "ORDER"i ws "BY"i Offset <- "OFFSET"i -ComparisonOperator <- ("=" / "!=" / "<" / "<=" / ">" / ">=") { +ComparisonOperator <- ("<=" / ">=" / "=" / "!=" / "<" / ">") { return string(c.text), nil } diff --git a/parsers/nosql/were_test.go b/parsers/nosql/were_test.go index 2eec74e..98d67a3 100644 --- a/parsers/nosql/were_test.go +++ b/parsers/nosql/were_test.go @@ -67,7 +67,7 @@ func Test_Parse_Were(t *testing.T) { t, `select c.id FROM c - WHERE c.isCool=true AND (c.id = "123" OR c.id = "456")`, + WHERE c.isCool=true AND (c.id = "123" OR c.id <= "456")`, parsers.SelectStmt{ SelectItems: []parsers.SelectItem{ {Path: []string{"c", "id"}}, @@ -90,7 +90,7 @@ func Test_Parse_Were(t *testing.T) { Right: testutils.SelectItem_Constant_String("123"), }, parsers.ComparisonExpression{ - Operation: "=", + Operation: "<=", Left: parsers.SelectItem{Path: []string{"c", "id"}}, Right: testutils.SelectItem_Constant_String("456"), },