diff --git a/package.json b/package.json index 183f0e1..ab5411c 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ ], "dependencies": { "prettier": "^3.0.3", - "sql-parser-cst": "^0.31.1" + "sql-parser-cst": "^0.32.0" }, "devDependencies": { "@types/jest": "^29.2.5", diff --git a/src/syntax/select.ts b/src/syntax/select.ts index a8197bd..3ca6508 100644 --- a/src/syntax/select.ts +++ b/src/syntax/select.ts @@ -180,6 +180,7 @@ export const selectMap: CstToDocMap = { group_by_cube: (print) => print(["cubeKw", "columns"]), group_by_grouping_sets: (print) => print.spaced(["groupingSetsKw", "columns"]), + group_by_all: (print) => print(["allKw"]), // PARTITION BY clause partition_by_clause: (print) => diff --git a/test/select/select.test.ts b/test/select/select.test.ts index d522c59..f7d3373 100644 --- a/test/select/select.test.ts +++ b/test/select/select.test.ts @@ -185,6 +185,28 @@ describe("select", () => { `); }); + it(`formats short query with GROUP BY ALL`, async () => { + await testBigquery(dedent` + SELECT * FROM tbl GROUP BY ALL + `); + }); + + it(`formats long query with GROUP BY ALL`, async () => { + await testBigquery(dedent` + SELECT * + FROM my_table_name + GROUP BY ALL + HAVING my_table_name.col1 > 1 + LIMIT 5 + `); + }); + + it(`capitalizes GROUP BY all`, async () => { + expect( + await pretty(`SELECT * FROM tbl GROUP BY all`, { dialect: "bigquery" }), + ).toBe(`SELECT * FROM tbl GROUP BY ALL`); + }); + it(`formats QUALIFY clause`, async () => { await testBigquery(`SELECT * FROM tbl QUALIFY x > 10`); });