Skip to content

Commit 9e13aa7

Browse files
authored
sqlite: supported between expr (#1958) (#1967)
1 parent c8c0233 commit 9e13aa7

File tree

6 files changed

+199
-0
lines changed

6 files changed

+199
-0
lines changed

internal/endtoend/testdata/between_args/sqlite/go/db.go

Lines changed: 31 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/endtoend/testdata/between_args/sqlite/go/models.go

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/endtoend/testdata/between_args/sqlite/go/query.sql.go

Lines changed: 112 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
CREATE TABLE products (
2+
name TEXT NOT NULL,
3+
price INT NOT NULL
4+
);
5+
6+
-- name: GetBetweenPrices :many
7+
SELECT *
8+
FROM products
9+
WHERE price BETWEEN ? AND ?;
10+
11+
-- name: GetBetweenPricesTable :many
12+
SELECT *
13+
FROM products
14+
WHERE products.price BETWEEN ? AND ?;
15+
16+
-- name: GetBetweenPricesTableAlias :many
17+
SELECT *
18+
FROM products as p
19+
WHERE p.price BETWEEN ? AND ?;
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"version": "1",
3+
"packages": [
4+
{
5+
"path": "go",
6+
"engine": "sqlite",
7+
"name": "querytest",
8+
"schema": "query.sql",
9+
"queries": "query.sql"
10+
}
11+
]
12+
}

internal/engine/sqlite/convert.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -767,6 +767,16 @@ func (c *cc) convertUpdate_stmtContext(n *parser.Update_stmtContext) ast.Node {
767767
}
768768
}
769769

770+
func (c *cc) convertBetweenExpr(n *parser.Expr_betweenContext) ast.Node {
771+
return &ast.BetweenExpr{
772+
Expr: c.convert(n.Expr(0)),
773+
Left: c.convert(n.Expr(1)),
774+
Right: c.convert(n.Expr(2)),
775+
Location: n.GetStart().GetStart(),
776+
Not: n.NOT_() != nil,
777+
}
778+
}
779+
770780
func (c *cc) convert(node node) ast.Node {
771781
switch n := node.(type) {
772782

@@ -815,6 +825,9 @@ func (c *cc) convert(node node) ast.Node {
815825
case *parser.Expr_in_selectContext:
816826
return c.convertInSelectNode(n)
817827

828+
case *parser.Expr_betweenContext:
829+
return c.convertBetweenExpr(n)
830+
818831
case *parser.Factored_select_stmtContext:
819832
// TODO: need to handle this
820833
return todo(n)

0 commit comments

Comments
 (0)