Skip to content

Commit 26dee9a

Browse files
committed
Add support for order by in aggregate functions for sqlite3
https://sqlite.org/lang_aggfunc.html group_concat and string_agg support order by clause inside them
1 parent 6389cdc commit 26dee9a

File tree

9 files changed

+2078
-1926
lines changed

9 files changed

+2078
-1926
lines changed

internal/endtoend/testdata/group_concat/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/group_concat/sqlite/go/models.go

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

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

Lines changed: 54 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
-- name: GroupConcatOne :one
2+
SELECT group_concat(name order by id asc) FROM book;
3+
4+
-- name: GroupConcat :one
5+
SELECT group_concat(name order by id asc) FROM book;
6+
7+
-- name: GroupConcatDelimeter :one
8+
SELECT group_concat(name, ',' order by id asc) FROM book;
9+
10+
-- name: StringAgg :one
11+
SELECT string_agg(name, ',' order by id asc) FROM book;
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
CREATE TABLE book(
2+
id integer primary key,
3+
name text not null
4+
);
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
version: '2'
2+
sql:
3+
- schema: schema.sql
4+
queries: query.sql
5+
engine: sqlite
6+
gen:
7+
go:
8+
package: querytest
9+
out: go

internal/engine/sqlite/parser/SQLiteParser.g4

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ expr:
307307
) #expr_in_select
308308
| expr AND_ expr #expr_bool
309309
| expr OR_ expr #expr_bool
310-
| qualified_function_name OPEN_PAR ((DISTINCT_? expr ( COMMA expr)*) | STAR)? CLOSE_PAR filter_clause? over_clause? #expr_function
310+
| qualified_function_name OPEN_PAR ((DISTINCT_? expr ( COMMA expr)*) order_by_stmt? | STAR)? CLOSE_PAR filter_clause? over_clause? #expr_function
311311
| OPEN_PAR expr (COMMA expr)* CLOSE_PAR #expr_list
312312
| CAST_ OPEN_PAR expr AS_ type_name CLOSE_PAR #expr_cast
313313
| expr COLLATE_ collation_name #expr_collate

internal/engine/sqlite/parser/SQLiteParser.interp

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

internal/engine/sqlite/parser/sqlite_parser.go

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

0 commit comments

Comments
 (0)