Skip to content

Commit cc0d42b

Browse files
authored
Fix: Propagation of the forward_only flag from dbt models when it's set to false (#4121)
1 parent 561e4fd commit cc0d42b

3 files changed

Lines changed: 15 additions & 5 deletions

File tree

sqlmesh/dbt/model.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -238,8 +238,10 @@ def model_kind(self, context: DbtContext) -> ModelKind:
238238
incremental_kind_kwargs["on_destructive_change"] = on_destructive_change
239239

240240
for field in ("forward_only", "auto_restatement_cron"):
241-
field_val = getattr(self, field, None) or self.meta.get(field, None)
242-
if field_val:
241+
field_val = getattr(self, field, None)
242+
if field_val is None:
243+
field_val = self.meta.get(field, None)
244+
if field_val is not None:
243245
incremental_kind_kwargs[field] = field_val
244246

245247
if materialization == Materialization.TABLE:
@@ -249,8 +251,10 @@ def model_kind(self, context: DbtContext) -> ModelKind:
249251
if materialization == Materialization.INCREMENTAL:
250252
incremental_by_kind_kwargs: t.Dict[str, t.Any] = {"dialect": self.dialect(context)}
251253
for field in ("batch_size", "batch_concurrency", "lookback"):
252-
field_val = getattr(self, field, None) or self.meta.get(field, None)
253-
if field_val:
254+
field_val = getattr(self, field, None)
255+
if field_val is None:
256+
field_val = self.meta.get(field, None)
257+
if field_val is not None:
254258
incremental_by_kind_kwargs[field] = field_val
255259

256260
if self.time_column:

tests/core/test_macros.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -695,7 +695,7 @@ def test_macro_parameter_resolution(macro_evaluator):
695695
# with the former one. This ensures we capture both.
696696
assert str(e.value.__cause__) in (
697697
"'pos_only' parameter is positional only, but was passed as a keyword",
698-
"missing a required argument: 'a1'",
698+
"missing a required positional-only argument: 'pos_only'",
699699
)
700700

701701
with pytest.raises(MacroEvalError) as e:

tests/dbt/test_transformation.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,12 @@ def test_model_kind():
286286
context
287287
) == IncrementalUnmanagedKind(insert_overwrite=True, disable_restatement=False)
288288

289+
assert ModelConfig(materialized=Materialization.INCREMENTAL, forward_only=False).model_kind(
290+
context
291+
) == IncrementalUnmanagedKind(
292+
insert_overwrite=True, disable_restatement=False, forward_only=False
293+
)
294+
289295
assert ModelConfig(
290296
materialized=Materialization.INCREMENTAL, incremental_strategy="append"
291297
).model_kind(context) == IncrementalUnmanagedKind(disable_restatement=False)

0 commit comments

Comments
 (0)