Skip to content

Commit 4ee6662

Browse files
authored
Merge branch 'main' into fix/local-only-format
2 parents 1b26a63 + 278757c commit 4ee6662

2 files changed

Lines changed: 13 additions & 0 deletions

File tree

sqlmesh/core/dialect.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -745,6 +745,16 @@ def _whens_sql(self: Generator, expression: exp.Whens) -> str:
745745
return self.wrap(self.expressions(expression, sep=" ", indent=False))
746746

747747

748+
def _parse_interval_span(self: Parser, this: exp.Expr) -> exp.Interval:
749+
interval = self.__parse_interval_span(this) # type: ignore
750+
# Without this, @unit in `INTERVAL @value @unit` is misread as an alias.
751+
if not interval.args.get("unit") and self._match(TokenType.PARAMETER):
752+
macro = _parse_macro(self)
753+
if macro is not None:
754+
interval.set("unit", macro)
755+
return interval
756+
757+
748758
def _override(klass: t.Type[Tokenizer | Parser], func: t.Callable) -> None:
749759
name = func.__name__
750760
setattr(klass, f"_{name}", getattr(klass, name))
@@ -1126,6 +1136,7 @@ def extend_sqlglot() -> None:
11261136
_override(TSQL.Parser, Parser._parse_if)
11271137
_override(Parser, _parse_if)
11281138
_override(Parser, _parse_id_var)
1139+
_override(Parser, _parse_interval_span)
11291140
_override(Parser, _warn_unsupported)
11301141
_override(Snowflake.Parser, _parse_table_parts)
11311142

tests/core/test_dialect.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,8 @@ def test_macro_format():
291291
assert parse_one("@EACH(ARRAY(1,2), x -> x)").sql() == "@EACH(ARRAY(1, 2), x -> x)"
292292
assert parse_one("INTERVAL @x DAY").sql() == "INTERVAL @x DAY"
293293
assert parse_one("INTERVAL @'@{bar}' DAY").sql() == "INTERVAL @'@{bar}' DAY"
294+
assert parse_one("INTERVAL @x @y").sql() == "INTERVAL @x @y"
295+
assert parse_one("INTERVAL 1 @y").sql() == "INTERVAL '1' @y"
294296

295297

296298
def test_format_body_macros():

0 commit comments

Comments
 (0)