Skip to content

Commit 68ce609

Browse files
authored
feat: Add HAVING support to MySQL (#1806)
1 parent bd5be07 commit 68ce609

File tree

11 files changed

+215
-1
lines changed

11 files changed

+215
-1
lines changed

internal/endtoend/testdata/having/mysql/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/having/mysql/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/having/mysql/go/query.sql.go

Lines changed: 40 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
CREATE TABLE weather (
2+
city text NOT NULL,
3+
temp_lo integer NOT NULL
4+
);
5+
6+
-- name: ColdCities :many
7+
SELECT city
8+
FROM weather
9+
GROUP BY city
10+
HAVING max(temp_lo) < ?;
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": "mysql",
7+
"name": "querytest",
8+
"schema": "query.sql",
9+
"queries": "query.sql"
10+
}
11+
]
12+
}

internal/endtoend/testdata/having/postgresql/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/having/postgresql/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/having/postgresql/go/query.sql.go

Lines changed: 40 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
CREATE TABLE weather (
2+
city text NOT NULL,
3+
temp_lo integer NOT NULL
4+
);
5+
6+
-- name: ColdCities :many
7+
SELECT city
8+
FROM weather
9+
GROUP BY city
10+
HAVING max(temp_lo) < $1;
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": "postgresql",
7+
"name": "querytest",
8+
"schema": "query.sql",
9+
"queries": "query.sql"
10+
}
11+
]
12+
}

internal/engine/dolphin/convert.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -497,6 +497,7 @@ func (c *cc) convertSelectStmt(n *pcast.SelectStmt) *ast.SelectStmt {
497497
TargetList: c.convertFieldList(n.Fields),
498498
FromClause: c.convertTableRefsClause(n.From),
499499
GroupClause: c.convertGroupByClause(n.GroupBy),
500+
HavingClause: c.convertHavingClause(n.Having),
500501
WhereClause: c.convert(n.Where),
501502
WithClause: c.convertWithClause(n.With),
502503
WindowClause: windowClause,
@@ -904,7 +905,10 @@ func (c *cc) convertGroupByClause(n *pcast.GroupByClause) *ast.List {
904905
}
905906

906907
func (c *cc) convertHavingClause(n *pcast.HavingClause) ast.Node {
907-
return todo(n)
908+
if n == nil {
909+
return nil
910+
}
911+
return c.convert(n.Expr)
908912
}
909913

910914
func (c *cc) convertIndexAdviseStmt(n *pcast.IndexAdviseStmt) ast.Node {

0 commit comments

Comments
 (0)