Skip to content

Commit c9f7651

Browse files
authored
Fix: show optimized_query, column_definitions in diff (#5151)
1 parent 0c70406 commit c9f7651

File tree

3 files changed

+55
-9
lines changed

3 files changed

+55
-9
lines changed

sqlmesh/core/model/definition.py

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -244,14 +244,7 @@ def render_definition(
244244
value=exp.to_table(field_value, dialect=self.dialect),
245245
)
246246
)
247-
elif field_name not in (
248-
"column_descriptions_",
249-
"default_catalog",
250-
"enabled",
251-
"inline_audits",
252-
"optimize_query",
253-
"ignored_rules_",
254-
):
247+
elif field_name not in ("default_catalog", "enabled", "ignored_rules_"):
255248
expressions.append(
256249
exp.Property(
257250
this=field_info.alias or field_name,
@@ -2940,6 +2933,9 @@ def render_expression(
29402933
"columns_to_types_": lambda value: exp.Schema(
29412934
expressions=[exp.ColumnDef(this=exp.to_column(c), kind=t) for c, t in value.items()]
29422935
),
2936+
"column_descriptions_": lambda value: exp.Schema(
2937+
expressions=[exp.to_column(c).eq(d) for c, d in value.items()]
2938+
),
29432939
"tags": single_value_or_tuple,
29442940
"grains": _refs_to_sql,
29452941
"references": _refs_to_sql,
@@ -2958,6 +2954,7 @@ def render_expression(
29582954
)
29592955
),
29602956
"formatting": str,
2957+
"optimize_query": str,
29612958
"virtual_environment_mode": lambda value: exp.Literal.string(value.value),
29622959
}
29632960

tests/core/test_model.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11359,3 +11359,52 @@ def test_extract_macro_func_variable_references(macro_func: str, variables: t.Se
1135911359

1136011360
macro_func_ast = parse_one(macro_func)
1136111361
assert _extract_macro_func_variable_references(macro_func_ast, True)[0] == variables
11362+
11363+
11364+
def test_text_diff_column_descriptions():
11365+
"""Test that column_descriptions changes are visible in text_diff."""
11366+
# Create model without column descriptions
11367+
model1 = create_sql_model(
11368+
name="test.model",
11369+
query=parse("SELECT id, name FROM upstream")[0],
11370+
)
11371+
11372+
# Create model with column descriptions
11373+
model2 = create_sql_model(
11374+
name="test.model",
11375+
query=parse("SELECT id, name FROM upstream")[0],
11376+
column_descriptions={"id": "User identifier", "name": "User name"},
11377+
)
11378+
11379+
# Verify the diff shows the column_descriptions
11380+
diff = model1.text_diff(model2)
11381+
assert diff, "Expected diff to show column_descriptions change"
11382+
assert "+ id = 'User identifier'," in diff
11383+
assert "+ name = 'User name'" in diff
11384+
11385+
# Verify reverse diff also works
11386+
diff = model2.text_diff(model1)
11387+
assert diff, "Expected reverse diff to show column_descriptions removal"
11388+
assert "- id = 'User identifier'," in diff
11389+
assert "- name = 'User name'" in diff
11390+
11391+
11392+
def test_text_diff_optimize_query():
11393+
"""Test that optimize_query changes are visible in text_diff."""
11394+
# Create model without optimize_query
11395+
model1 = create_sql_model(
11396+
name="test.model",
11397+
query=parse("SELECT id, name FROM upstream")[0],
11398+
)
11399+
11400+
# Create model with optimize_query enabled
11401+
model2 = create_sql_model(
11402+
name="test.model",
11403+
query=parse("SELECT id, name FROM upstream")[0],
11404+
optimize_query=True,
11405+
)
11406+
11407+
# Verify the diff shows the optimize_query change
11408+
diff = model1.text_diff(model2)
11409+
assert diff, "Expected diff to show optimize_query change"
11410+
assert "+ optimize_query" in diff.lower()

tests/integrations/github/cicd/test_integration.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1789,7 +1789,7 @@ def test_overlapping_changes_models(
17891789
17901790
+++
17911791
1792-
@@ -29,7 +29,8 @@
1792+
@@ -32,7 +32,8 @@
17931793
17941794
SELECT DISTINCT
17951795
CAST(o.customer_id AS INT) AS customer_id,

0 commit comments

Comments
 (0)