jarify 0.2.0__tar.gz → 0.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {jarify-0.2.0 → jarify-0.3.0}/CHANGELOG.md +5 -0
- {jarify-0.2.0 → jarify-0.3.0}/PKG-INFO +1 -1
- {jarify-0.2.0 → jarify-0.3.0}/docs/sql-style-guide.md +1 -1
- {jarify-0.2.0 → jarify-0.3.0}/pyproject.toml +1 -1
- {jarify-0.2.0 → jarify-0.3.0}/src/jarify/rules/prefer_group_by_all.py +29 -4
- jarify-0.3.0/tests/fixtures/select/group_by_all.expected.sql +7 -0
- jarify-0.3.0/tests/fixtures/select/group_by_all.input.sql +8 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/test_formatter.py +6 -1
- {jarify-0.2.0 → jarify-0.3.0}/uv.lock +1 -1
- {jarify-0.2.0 → jarify-0.3.0}/.agents/skills/add-formatter-rule.md +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/.github/workflows/ci.yml +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/.github/workflows/prepare-release.yml +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/.github/workflows/publish.yml +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/.gitignore +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/.mise/tasks/release/prepare +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/.python-version +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/AGENTS.md +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/LICENSE +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/README.md +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/cliff.toml +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/docs/editors/README.md +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/docs/editors/neovim.md +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/mise.toml +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/src/jarify/__init__.py +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/src/jarify/cli.py +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/src/jarify/config.py +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/src/jarify/formatter.py +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/src/jarify/generator.py +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/src/jarify/linter.py +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/src/jarify/parser.py +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/src/jarify/rules/__init__.py +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/src/jarify/rules/base.py +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/src/jarify/rules/consistent_empty_array.py +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/src/jarify/rules/cte_naming.py +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/src/jarify/rules/duckdb_prefer_qualify.py +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/src/jarify/rules/duckdb_type_style.py +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/src/jarify/rules/keyword_case.py +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/src/jarify/rules/no_implicit_cross_join.py +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/src/jarify/rules/no_select_star.py +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/src/jarify/rules/no_select_star_in_cte.py +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/src/jarify/rules/no_unused_cte.py +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/src/jarify/rules/prefer_using_over_on.py +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/src/jarify/rules/trailing_commas.py +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/src/jarify/types.py +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/__init__.py +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/conftest.py +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/complex/real_world.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/complex/real_world.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/create_table/basic.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/create_table/basic.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/create_table/inline_primary_key.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/create_table/inline_primary_key.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/create_table/simple_no_constraints.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/create_table/simple_no_constraints.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/cte/basic_cte.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/cte/basic_cte.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/cte/cte_inline_comment.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/cte/cte_inline_comment.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/cte/cte_leading_comment.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/cte/cte_leading_comment.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/cte/in_subquery.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/cte/in_subquery.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/duckdb/agg_window_uppercase.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/duckdb/agg_window_uppercase.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/duckdb/create_macro.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/duckdb/create_macro.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/duckdb/create_macro_table.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/duckdb/create_macro_table.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/duckdb/distinct_in_aggregates.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/duckdb/distinct_in_aggregates.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/duckdb/pivot.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/duckdb/pivot.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/duckdb/pivot_order_by.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/duckdb/pivot_order_by.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/duckdb/qualify.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/duckdb/qualify.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/duckdb/read_parquet.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/duckdb/read_parquet.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/duckdb/reserved_keyword_type_cast.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/duckdb/reserved_keyword_type_cast.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/duckdb/rust_format_syntax.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/duckdb/rust_format_syntax.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/duckdb/string_agg.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/duckdb/string_agg.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/duckdb/struct_cast_alignment.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/duckdb/struct_cast_alignment.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/duckdb/type_cast.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/duckdb/type_cast.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/duckdb/values_cte.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/duckdb/values_cte.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/joins/aligned_joins.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/joins/aligned_joins.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/joins/bare_join.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/joins/bare_join.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/joins/comma_join.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/joins/comma_join.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/joins/cross_join_unnest_alias.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/joins/cross_join_unnest_alias.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/joins/multi_join.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/joins/multi_join.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/joins/outer_join_alias_alignment.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/joins/outer_join_alias_alignment.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/joins/unnest_alias_no_as.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/joins/unnest_alias_no_as.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/alias_alignment_rust_fmt_placeholder.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/alias_alignment_rust_fmt_placeholder.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/alias_normalization.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/alias_normalization.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/basic.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/basic.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/between_column_comment.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/between_column_comment.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/boolean_literals.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/boolean_literals.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/case_when_and_condition.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/case_when_and_condition.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/case_when_from_first_subquery.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/case_when_from_first_subquery.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/case_when_inline.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/case_when_inline.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/case_when_multiline_threshold.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/case_when_multiline_threshold.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/coalesce_to_ifnull.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/coalesce_to_ifnull.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/from_first.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/from_first.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/from_first_star_qualified.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/from_first_star_qualified.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/from_inline_subquery.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/from_inline_subquery.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/ifnull.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/ifnull.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/inline_comment.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/inline_comment.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/json_arrow_operators.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/json_arrow_operators.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/leading_comment.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/leading_comment.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/leading_comment_multiline.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/leading_comment_multiline.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/list_contains.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/list_contains.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/paren_arithmetic.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/paren_arithmetic.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/where_clause.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/where_clause.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/where_eq_alignment.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/where_eq_alignment.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/where_eq_alignment_nested_subquery.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/where_eq_alignment_nested_subquery.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/where_or_inline.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/where_or_inline.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/templates/rust_fmt_consecutive_placeholders.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/templates/rust_fmt_consecutive_placeholders.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/templates/rust_fmt_ctas_body_placeholder.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/templates/rust_fmt_ctas_body_placeholder.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/templates/rust_fmt_indented_placeholders.expected.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/templates/rust_fmt_indented_placeholders.input.sql +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/test_config.py +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/test_duckdb_rules.py +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/test_fixtures.py +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/test_lint_rules.py +0 -0
- {jarify-0.2.0 → jarify-0.3.0}/tests/test_parser.py +0 -0
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.3.0] - 2026-04-27
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
- promote prefer-group-by-all to auto-fix formatter rule ([#192](https://github.com/amfaro/jarify/pull/192)) ([#192](https://github.com/amfaro/jarify/pull/192))
|
|
7
|
+
|
|
3
8
|
## [0.2.0] - 2026-04-27
|
|
4
9
|
### Features
|
|
5
10
|
|
|
@@ -903,7 +903,7 @@ QUALIFY
|
|
|
903
903
|
|
|
904
904
|
### `prefer-group-by-all`
|
|
905
905
|
|
|
906
|
-
|
|
906
|
+
**Auto-fixed by `fmt`.** Rewrites explicit `GROUP BY col1, col2, ...` to `GROUP BY ALL` when all non-aggregated `SELECT` columns are listed.
|
|
907
907
|
|
|
908
908
|
**Bad**
|
|
909
909
|
```sql
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
"""Rule:
|
|
1
|
+
"""Rule: rewrite explicit GROUP BY column list to GROUP BY ALL when equivalent."""
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
import sqlglot.expressions as exp
|
|
6
6
|
|
|
7
|
-
from jarify.rules.base import
|
|
7
|
+
from jarify.rules.base import FormatterRule, _node_pos
|
|
8
8
|
from jarify.types import LintViolation
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
class PreferGroupByAllRule(
|
|
12
|
-
"""
|
|
11
|
+
class PreferGroupByAllRule(FormatterRule):
|
|
12
|
+
"""Format and lint: rewrite explicit GROUP BY col list to GROUP BY ALL when equivalent."""
|
|
13
13
|
|
|
14
14
|
def __init__(self, severity: str = "warn") -> None:
|
|
15
15
|
self.severity = severity
|
|
@@ -18,6 +18,31 @@ class PreferGroupByAllRule(LintOnlyRule):
|
|
|
18
18
|
def name(self) -> str:
|
|
19
19
|
return "prefer-group-by-all"
|
|
20
20
|
|
|
21
|
+
def apply(self, tree: exp.Expression) -> exp.Expression:
|
|
22
|
+
"""Rewrite GROUP BY <cols> → GROUP BY ALL when all non-agg SELECT cols are covered."""
|
|
23
|
+
for select in tree.find_all(exp.Select):
|
|
24
|
+
group = select.args.get("group")
|
|
25
|
+
if not group or not group.expressions:
|
|
26
|
+
continue
|
|
27
|
+
if group.args.get("all"):
|
|
28
|
+
continue
|
|
29
|
+
|
|
30
|
+
non_agg_sqls: list[str] = []
|
|
31
|
+
for item in select.expressions:
|
|
32
|
+
inner = item.this if isinstance(item, exp.Alias) else item
|
|
33
|
+
if not inner.find(exp.AggFunc):
|
|
34
|
+
non_agg_sqls.append(inner.sql(dialect="duckdb"))
|
|
35
|
+
|
|
36
|
+
if not non_agg_sqls:
|
|
37
|
+
continue
|
|
38
|
+
|
|
39
|
+
group_sqls = {e.sql(dialect="duckdb") for e in group.expressions}
|
|
40
|
+
if set(non_agg_sqls) == group_sqls:
|
|
41
|
+
group.set("all", True)
|
|
42
|
+
group.set("expressions", [])
|
|
43
|
+
|
|
44
|
+
return tree
|
|
45
|
+
|
|
21
46
|
def check(self, tree: exp.Expression) -> list[LintViolation]:
|
|
22
47
|
if self.severity == "off":
|
|
23
48
|
return []
|
|
@@ -205,10 +205,15 @@ class TestJoinFormatting:
|
|
|
205
205
|
|
|
206
206
|
class TestGroupByPerLine:
|
|
207
207
|
def test_group_by_multi_column_one_per_line(self):
|
|
208
|
+
# When all non-agg columns are in GROUP BY, the formatter rewrites to GROUP BY ALL.
|
|
208
209
|
out, _ = format_sql("SELECT a, b, count(*) FROM t GROUP BY a, b")
|
|
210
|
+
assert "GROUP BY ALL" in out
|
|
211
|
+
|
|
212
|
+
def test_group_by_explicit_when_partial(self):
|
|
213
|
+
# When only a subset of non-agg columns is listed, keep explicit GROUP BY.
|
|
214
|
+
out, _ = format_sql("SELECT a, b, c, count(*) FROM t GROUP BY a, b")
|
|
209
215
|
lines = out.splitlines()
|
|
210
216
|
group_by_idx = next(i for i, line in enumerate(lines) if "GROUP BY" in line)
|
|
211
|
-
# The line with GROUP BY should not contain column names on the same line
|
|
212
217
|
group_by_line = lines[group_by_idx]
|
|
213
218
|
assert group_by_line.strip() == "GROUP BY", f"Expected 'GROUP BY' on its own line, got: {group_by_line!r}"
|
|
214
219
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/create_table/simple_no_constraints.expected.sql
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/alias_alignment_rust_fmt_placeholder.input.sql
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/case_when_from_first_subquery.expected.sql
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/case_when_multiline_threshold.expected.sql
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/where_eq_alignment_nested_subquery.expected.sql
RENAMED
|
File without changes
|
{jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/select/where_eq_alignment_nested_subquery.input.sql
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/templates/rust_fmt_consecutive_placeholders.input.sql
RENAMED
|
File without changes
|
{jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/templates/rust_fmt_ctas_body_placeholder.expected.sql
RENAMED
|
File without changes
|
{jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/templates/rust_fmt_ctas_body_placeholder.input.sql
RENAMED
|
File without changes
|
{jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/templates/rust_fmt_indented_placeholders.expected.sql
RENAMED
|
File without changes
|
{jarify-0.2.0 → jarify-0.3.0}/tests/fixtures/templates/rust_fmt_indented_placeholders.input.sql
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|