Skip to content

Commit 2ddaef6

Browse files
committed
ref 2
1 parent ff27d17 commit 2ddaef6

1 file changed

Lines changed: 10 additions & 6 deletions

File tree

sqlglot/generators/duckdb.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2350,17 +2350,21 @@ def tobinary_sql(self, expression: exp.ToBinary) -> str:
23502350
result = self.func("TO_BINARY", value)
23512351
return f"TRY({result})" if is_safe else result
23522352

2353-
@unsupported_args("format")
23542353
def tonumber_sql(self, expression: exp.ToNumber) -> str:
2354+
fmt = expression.args.get("format")
23552355
precision = expression.args.get("precision")
23562356
scale = expression.args.get("scale")
23572357

2358-
if precision and scale:
2359-
decimal_type = exp.DataType.build(f"DECIMAL({precision.name}, {scale.name})")
2360-
else:
2361-
decimal_type = exp.DataType.build("DOUBLE")
2358+
if not fmt and precision and scale:
2359+
return self.sql(
2360+
exp.cast(
2361+
expression.this,
2362+
f"DECIMAL({self.sql(precision)}, {self.sql(scale)})",
2363+
dialect="duckdb",
2364+
)
2365+
)
23622366

2363-
return self.sql(exp.cast(expression.this, decimal_type))
2367+
return super().tonumber_sql(expression)
23642368

23652369
def _greatest_least_sql(self, expression: exp.Greatest | exp.Least) -> str:
23662370
"""

0 commit comments

Comments
 (0)