From da446892b51ee9adf07889e77747b8b8982edfa8 Mon Sep 17 00:00:00 2001 From: Tim Voronov Date: Mon, 8 Oct 2018 16:04:49 -0400 Subject: [PATCH] Fixed incorrectly compiled LIMIT clause. --- assets/logo.png | Bin 0 -> 46555 bytes pkg/compiler/compiler_test.go | 8 +++++--- pkg/compiler/visitor.go | 28 ++++++++++++++++++---------- 3 files changed, 23 insertions(+), 13 deletions(-) create mode 100644 assets/logo.png diff --git a/assets/logo.png b/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d69b52c33df08c0aa7805e042b07aa983645d440 GIT binary patch literal 46555 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�CKh?_sa`H!;Vkq+Hn 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 literal 0 HcmV?d00001 diff --git a/pkg/compiler/compiler_test.go b/pkg/compiler/compiler_test.go index a8dc296e..8a6a638c 100644 --- a/pkg/compiler/compiler_test.go +++ b/pkg/compiler/compiler_test.go @@ -497,9 +497,11 @@ func TestFor(t *testing.T) { Convey("Should compile query with LIMIT 2, 2", t, func() { c := compiler.New() + // 4 is offset + // 2 is count prog, err := c.Compile(` - FOR i IN [ 1, 2, 3, 4, 1, 3 ] - LIMIT 2, 2 + FOR i IN [ 1,2,3,4,5,6,7,8 ] + LIMIT 4, 2 RETURN i `) @@ -509,7 +511,7 @@ func TestFor(t *testing.T) { So(err, ShouldBeNil) - So(string(out), ShouldEqual, `[3,4]`) + So(string(out), ShouldEqual, `[5,6]`) }) Convey("Should compile query with FILTER i > 2", t, func() { diff --git a/pkg/compiler/visitor.go b/pkg/compiler/visitor.go index 2126ecca..3ea47a20 100644 --- a/pkg/compiler/visitor.go +++ b/pkg/compiler/visitor.go @@ -292,29 +292,37 @@ func (v *visitor) doVisitForExpression(ctx *fql.ForExpressionContext, scope *sco } func (v *visitor) createLimit(ctx *fql.LimitClauseContext) (int, int, error) { - var limit int + var err error + var count int var offset int intLiterals := ctx.AllIntegerLiteral() - limitLiteral := intLiterals[0] - limit, err := strconv.Atoi(limitLiteral.GetText()) + if len(intLiterals) > 1 { + offset, err = v.parseInt(intLiterals[0]) - if err != nil { - return 0, 0, err - } + if err != nil { + return 0, 0, err + } - if len(intLiterals) > 1 { - offsetLiteral := intLiterals[1] + count, err = v.parseInt(intLiterals[1]) - offset, err = strconv.Atoi(offsetLiteral.GetText()) + if err != nil { + return 0, 0, err + } + } else { + count, err = strconv.Atoi(intLiterals[0].GetText()) if err != nil { return 0, 0, err } } - return limit, offset, nil + return count, offset, nil +} + +func (v *visitor) parseInt(node antlr.TerminalNode) (int, error) { + return strconv.Atoi(node.GetText()) } func (v *visitor) createFilter(ctx *fql.FilterClauseContext, scope *scope) (core.Expression, error) {