Skip to content

Commit 2aa00e2

Browse files
authored
Fix GROUP_CONCAT function signature (#1294)
* docs: Add environment variables * fix(mysql): Fix the function signature for GROUP_CONCAT
1 parent 710cc21 commit 2aa00e2

File tree

8 files changed

+154
-7
lines changed

8 files changed

+154
-7
lines changed

internal/compiler/output_columns.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ func outputColumns(qc *QueryCatalog, node ast.Node) ([]*Column, error) {
210210
}
211211
fun, err := qc.catalog.ResolveFuncCall(n)
212212
if err == nil {
213-
cols = append(cols, &Column{Name: name, DataType: dataType(fun.ReturnType), NotNull: true})
213+
cols = append(cols, &Column{Name: name, DataType: dataType(fun.ReturnType), NotNull: !fun.ReturnTypeNullable})
214214
} else {
215215
cols = append(cols, &Column{Name: name, DataType: "any"})
216216
}

internal/endtoend/testdata/mysql_reference_manual/aggregate_functions/go/db.go

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

internal/endtoend/testdata/mysql_reference_manual/aggregate_functions/go/group_concat.sql.go

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

internal/endtoend/testdata/mysql_reference_manual/aggregate_functions/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.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
CREATE TABLE student (
2+
student_name VARCHAR(255),
3+
score DOUBLE
4+
);
5+
6+
-- name: GroupConcat :many
7+
SELECT student_name, GROUP_CONCAT(test_score)
8+
FROM student
9+
GROUP BY student_name;
10+
11+
-- name: GroupConcatOrderBy :many
12+
SELECT student_name,
13+
GROUP_CONCAT(DISTINCT test_score ORDER BY test_score DESC SEPARATOR ' ')
14+
FROM student
15+
GROUP BY student_name;

internal/endtoend/testdata/mysql_reference_manual/sqlc.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,13 @@
77
"schema": "date_and_time_functions",
88
"queries": "date_and_time_functions",
99
"engine": "mysql"
10+
},
11+
{
12+
"name": "aggregate_functions",
13+
"path": "aggregate_functions/go",
14+
"schema": "aggregate_functions",
15+
"queries": "aggregate_functions",
16+
"engine": "mysql"
1017
}
1118
]
1219
}

internal/engine/dolphin/stdlib.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1069,8 +1069,13 @@ func defaultSchema(name string) *catalog.Schema {
10691069
{
10701070
Type: &ast.TypeName{Name: "any"},
10711071
},
1072+
{
1073+
Type: &ast.TypeName{Name: "any"},
1074+
Mode: ast.FuncParamVariadic,
1075+
},
10721076
},
1073-
ReturnType: &ast.TypeName{Name: "any"},
1077+
ReturnType: &ast.TypeName{Name: "text"},
1078+
ReturnTypeNullable: true,
10741079
},
10751080
{
10761081
Name: "GTID_SUBSET",

internal/sql/catalog/catalog.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -228,11 +228,12 @@ func (ct *CompositeType) SetComment(c string) {
228228
}
229229

230230
type Function struct {
231-
Name string
232-
Args []*Argument
233-
ReturnType *ast.TypeName
234-
Comment string
235-
Desc string
231+
Name string
232+
Args []*Argument
233+
ReturnType *ast.TypeName
234+
Comment string
235+
Desc string
236+
ReturnTypeNullable bool
236237
}
237238

238239
func (f *Function) InArgs() []*Argument {

0 commit comments

Comments
 (0)