File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -240,8 +240,7 @@ def evaluate_macros(
240240 text = self .template (node .this , {})
241241 if node .this != text :
242242 changed = True
243- node .args ["this" ] = text
244- return node
243+ return exp .to_identifier (text , quoted = node .quoted or None )
245244 if node .is_string :
246245 text = node .this
247246 if has_jinja (text ):
@@ -1389,6 +1388,10 @@ def _convert_sql(v: t.Any, dialect: DialectType) -> t.Any:
13891388 pass
13901389
13911390 if isinstance (v , exp .Expression ):
1391+ if (isinstance (v , exp .Column ) and not v .table ) or (
1392+ isinstance (v , exp .Identifier ) or v .is_string
1393+ ):
1394+ return v .name
13921395 v = v .sql (dialect = dialect )
13931396 return v
13941397
Original file line number Diff line number Diff line change @@ -1082,3 +1082,24 @@ def test_resolve_template_table():
10821082 evaluator .transform (parsed_sql ).sql (identify = True )
10831083 == 'SELECT * FROM "test_catalog"."sqlmesh__test"."test__test_model__2517971505$partitions"'
10841084 )
1085+
1086+
1087+ def test_macro_with_spaces ():
1088+ evaluator = MacroEvaluator ()
1089+ evaluator .evaluate (d .parse_one (""" @DEF(x, "a b") """ ))
1090+ evaluator .evaluate (d .parse_one (""" @DEF(y, 'a b') """ ))
1091+ evaluator .evaluate (d .parse_one (""" @DEF(z, a."b c") """ ))
1092+
1093+ for sql , expected in (
1094+ ("@x" , '"a b"' ),
1095+ ("@{x}" , '"a b"' ),
1096+ ("a_@x" , '"a_a b"' ),
1097+ ("a.@x" , 'a."a b"' ),
1098+ ("@y" , "'a b'" ),
1099+ ("@{y}" , '"a b"' ), # a little tricky here as it's not a string
1100+ ("a_@y" , '"a_a b"' ),
1101+ ("a.@{y}" , 'a."a b"' ),
1102+ ("@z" , 'a."b c"' ),
1103+ ("d.@z" , 'd.a."b c"' ),
1104+ ):
1105+ assert evaluator .transform (parse_one (sql )).sql () == expected
You can’t perform that action at this time.
0 commit comments