Skip to content

Commit aca2b0d

Browse files
Merge branch 'main' into kai/back-quoted-identifiers
2 parents bd1dcd6 + c9fa71b commit aca2b0d

4 files changed

Lines changed: 111 additions & 8 deletions

File tree

src/sqlfluff/core/enums.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"""Enums used by sqlfluff."""
22
from enum import Enum
33

4-
from colorama import Fore, Style
4+
from colorama import Back, Fore, Style
55

66

77
class FormatType(Enum):
@@ -21,4 +21,4 @@ class Color(Enum):
2121
red = Fore.RED
2222
green = Fore.GREEN
2323
blue = Fore.BLUE
24-
lightgrey = Fore.BLACK + Style.BRIGHT
24+
lightgrey = Fore.BLACK + Back.WHITE + Style.BRIGHT

src/sqlfluff/dialects/dialect_ansi.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2343,7 +2343,7 @@ class GroupingSetsClauseSegment(BaseSegment):
23432343
Delimited(
23442344
Ref("CubeRollupClauseSegment"),
23452345
Ref("GroupingExpressionList"),
2346-
)
2346+
),
23472347
),
23482348
)
23492349

@@ -2354,7 +2354,6 @@ class GroupingExpressionList(BaseSegment):
23542354
type = "grouping_expression_list"
23552355

23562356
match_grammar: Matchable = Sequence(
2357-
Indent,
23582357
Delimited(
23592358
OneOf(
23602359
Ref("ColumnReferenceSegment"),
@@ -2366,7 +2365,6 @@ class GroupingExpressionList(BaseSegment):
23662365
),
23672366
terminators=[Ref("GroupByClauseTerminatorGrammar")],
23682367
),
2369-
Dedent,
23702368
)
23712369

23722370

@@ -2390,14 +2388,14 @@ class GroupByClauseSegment(BaseSegment):
23902388
match_grammar: Matchable = Sequence(
23912389
"GROUP",
23922390
"BY",
2391+
Indent,
23932392
OneOf(
23942393
Ref("CubeRollupClauseSegment"),
23952394
# We could replace this next bit with a GroupingExpressionList
23962395
# reference (renaming that to a more generic name), to avoid
23972396
# repeating this bit of code, but I would rather keep it flat
23982397
# to avoid changing regular `GROUP BY` clauses.
23992398
Sequence(
2400-
Indent,
24012399
Delimited(
24022400
OneOf(
24032401
Ref("ColumnReferenceSegment"),
@@ -2408,9 +2406,9 @@ class GroupByClauseSegment(BaseSegment):
24082406
),
24092407
terminators=[Ref("GroupByClauseTerminatorGrammar")],
24102408
),
2411-
Dedent,
24122409
),
24132410
),
2411+
Dedent,
24142412
)
24152413

24162414

test/fixtures/dialects/sparksql/select_group_by.sql

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,26 @@ SELECT
103103
FROM people
104104
GROUP BY cube(name, age);
105105

106+
-- CUBE within GROUP BY clause with single clause on newline
107+
SELECT
108+
name,
109+
count(*) AS record_count
110+
FROM people
111+
GROUP BY cube(
112+
name
113+
);
114+
115+
-- CUBE within GROUP BY clause with multiple clauses on newline
116+
SELECT
117+
name,
118+
age,
119+
count(*) AS record_count
120+
FROM people
121+
GROUP BY cube(
122+
name,
123+
age
124+
);
125+
106126
-- ROLLUP within GROUP BY clause
107127
SELECT
108128
name,

test/fixtures/dialects/sparksql/select_group_by.yml

Lines changed: 86 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# computed by SQLFluff when running the tests. Please run
44
# `python test/generate_parse_fixture_yml.py` to generate them after adding or
55
# altering SQL files.
6-
_hash: 993c7111c0dd4f24ff2a8e591b3bfc24085cc6181a41c708613751e93d1df747
6+
_hash: 39b25c3e4d9f896b5bd66fb75f3c83feba7571bba564c90b8f36ec4b55504fbb
77
file:
88
- statement:
99
select_statement:
@@ -695,6 +695,91 @@ file:
695695
naked_identifier: age
696696
end_bracket: )
697697
- statement_terminator: ;
698+
- statement:
699+
select_statement:
700+
select_clause:
701+
- keyword: SELECT
702+
- select_clause_element:
703+
column_reference:
704+
naked_identifier: name
705+
- comma: ','
706+
- select_clause_element:
707+
function:
708+
function_name:
709+
function_name_identifier: count
710+
bracketed:
711+
start_bracket: (
712+
star: '*'
713+
end_bracket: )
714+
alias_expression:
715+
keyword: AS
716+
naked_identifier: record_count
717+
from_clause:
718+
keyword: FROM
719+
from_expression:
720+
from_expression_element:
721+
table_expression:
722+
table_reference:
723+
naked_identifier: people
724+
groupby_clause:
725+
- keyword: GROUP
726+
- keyword: BY
727+
- cube_rollup_clause:
728+
function_name:
729+
function_name_identifier: cube
730+
bracketed:
731+
start_bracket: (
732+
grouping_expression_list:
733+
column_reference:
734+
naked_identifier: name
735+
end_bracket: )
736+
- statement_terminator: ;
737+
- statement:
738+
select_statement:
739+
select_clause:
740+
- keyword: SELECT
741+
- select_clause_element:
742+
column_reference:
743+
naked_identifier: name
744+
- comma: ','
745+
- select_clause_element:
746+
column_reference:
747+
naked_identifier: age
748+
- comma: ','
749+
- select_clause_element:
750+
function:
751+
function_name:
752+
function_name_identifier: count
753+
bracketed:
754+
start_bracket: (
755+
star: '*'
756+
end_bracket: )
757+
alias_expression:
758+
keyword: AS
759+
naked_identifier: record_count
760+
from_clause:
761+
keyword: FROM
762+
from_expression:
763+
from_expression_element:
764+
table_expression:
765+
table_reference:
766+
naked_identifier: people
767+
groupby_clause:
768+
- keyword: GROUP
769+
- keyword: BY
770+
- cube_rollup_clause:
771+
function_name:
772+
function_name_identifier: cube
773+
bracketed:
774+
start_bracket: (
775+
grouping_expression_list:
776+
- column_reference:
777+
naked_identifier: name
778+
- comma: ','
779+
- column_reference:
780+
naked_identifier: age
781+
end_bracket: )
782+
- statement_terminator: ;
698783
- statement:
699784
select_statement:
700785
select_clause:

0 commit comments

Comments
 (0)