Skip to content

Commit de6bfc4

Browse files
authored
fix: ensure start if using end (#2347)
1 parent e6c4688 commit de6bfc4

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

sqlmesh/core/node.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,11 @@ def _node_root_validator(cls, values: t.Dict[str, t.Any]) -> t.Dict[str, t.Any]:
258258
raise ConfigError(
259259
f"Interval unit of '{interval_unit}' is larger than cron period of '{cron}'"
260260
)
261-
validate_date_range(values.get("start"), values.get("end"))
261+
start = values.get("start")
262+
end = values.get("end")
263+
if end is not None and start is None:
264+
raise ConfigError("Must define a start date if an end date is defined.")
265+
validate_date_range(start, end)
262266
return values
263267

264268
@property

tests/core/test_model.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3357,3 +3357,22 @@ def test_end_date():
33573357
"""
33583358
)
33593359
)
3360+
3361+
3362+
def test_end_no_start():
3363+
expressions = d.parse(
3364+
f"""
3365+
MODEL (
3366+
name db.table,
3367+
kind INCREMENTAL_BY_TIME_RANGE (
3368+
time_column ts,
3369+
),
3370+
end '2023-06-01'
3371+
);
3372+
3373+
SELECT 1::int AS a, 2::int AS b, now::timestamp as ts
3374+
"""
3375+
)
3376+
with pytest.raises(ConfigError, match="Must define a start date if an end date is defined"):
3377+
load_sql_based_model(expressions)
3378+
load_sql_based_model(expressions, defaults={"start": "2023-01-01"})

0 commit comments

Comments
 (0)