Skip to content

Commit 32be226

Browse files
committed
Normalize lambda variables as well
1 parent 5586bf7 commit 32be226

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

sqlmesh/core/macros.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ def __init__(
233233
for var_name, var_value in value.items()
234234
}
235235

236-
self.locals[k.lower()] = value
236+
self.locals[k] = value
237237

238238
def send(
239239
self, name: str, *args: t.Any, **kwargs: t.Any
@@ -342,7 +342,9 @@ def evaluate(self, node: MacroFunc) -> exp.Expression | t.List[exp.Expression] |
342342
args[0] if len(args) == 1 else exp.Tuple(expressions=list(args))
343343
)
344344
else:
345+
# Make variables defined through `@DEF` case-insensitive
345346
self.locals[node.name.lower()] = self.transform(node.expression)
347+
346348
return node
347349

348350
if isinstance(node, (MacroSQL, MacroStrReplace)):
@@ -645,7 +647,7 @@ def substitute(
645647
) -> exp.Expression | t.List[exp.Expression] | None:
646648
if isinstance(node, (exp.Identifier, exp.Var)):
647649
if not isinstance(node.parent, exp.Column):
648-
name = node.name
650+
name = node.name.lower()
649651
if name in args:
650652
return args[name].copy()
651653
if name in evaluator.locals:
@@ -678,7 +680,7 @@ def substitute(
678680
return expressions, lambda args: func.this.transform(
679681
substitute,
680682
{
681-
expression.name: arg
683+
expression.name.lower(): arg
682684
for expression, arg in zip(
683685
func.expressions, args.expressions if isinstance(args, exp.Tuple) else [args]
684686
)

tests/core/test_macros.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,16 @@ def test_ast_correctness(macro_evaluator):
292292
"SELECT 'a' + a_z + 'c' + c_a, 'b' + b_z + 'c' + c_b",
293293
{"y": "c"},
294294
),
295+
(
296+
"""select @each(['a'], x -> @X)""",
297+
"SELECT 'a'",
298+
{},
299+
),
300+
(
301+
"""select @each(['a'], X -> @x)""",
302+
"SELECT 'a'",
303+
{},
304+
),
295305
(
296306
'"is_@{x}"',
297307
'"is_b"',

0 commit comments

Comments
 (0)