Skip to content

Commit 407525f

Browse files
committed
fix(builder): render materialized view data clauses
1 parent c7c000e commit 407525f

2 files changed

Lines changed: 11 additions & 5 deletions

File tree

sqlspec/builder/_ddl.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1173,11 +1173,7 @@ def _create_base_expression(self) -> exp.Expr:
11731173
for k, v in self._storage_parameters.items():
11741174
props.append(exp.Property(this=exp.to_identifier(k), value=exp.convert(str(v))))
11751175
if self._with_data is not None:
1176-
props.append(
1177-
exp.Property(
1178-
this=exp.to_identifier("WITH_DATA" if self._with_data else "NO_DATA"), value=exp.Var(this="")
1179-
)
1180-
)
1176+
props.append(exp.WithDataProperty(no=not self._with_data))
11811177
props.extend(exp.Property(this=exp.to_identifier("HINT"), value=exp.convert(hint)) for hint in self._hints)
11821178
properties_node = _wrap_properties(props)
11831179

tests/unit/builder/test_expression_arg_contracts.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,3 +107,13 @@ def test_builder_expressions_satisfy_required_sqlglot_arguments() -> None:
107107
assert [(type(expression).__name__, expression.error_messages()) for expression in expressions] == [
108108
(type(expression).__name__, []) for expression in expressions
109109
]
110+
111+
112+
def test_materialized_view_with_data_renders_postgres_clause() -> None:
113+
expression = sql.create_materialized_view("mv").as_select("SELECT 1").with_data()._create_base_expression()
114+
assert expression.sql(dialect="postgres") == "CREATE MATERIALIZED_VIEW mv AS SELECT 1 WITH DATA"
115+
116+
117+
def test_materialized_view_no_data_renders_postgres_clause() -> None:
118+
expression = sql.create_materialized_view("mv").as_select("SELECT 1").no_data()._create_base_expression()
119+
assert expression.sql(dialect="postgres") == "CREATE MATERIALIZED_VIEW mv AS SELECT 1 WITH NO DATA"

0 commit comments

Comments
 (0)