Skip to content

Commit 6983aed

Browse files
authored
Fix(postgres): _date_add_sql bug w/ interval inputs (#7440)
1 parent 81aecb5 commit 6983aed

2 files changed

Lines changed: 7 additions & 1 deletion

File tree

sqlglot/generators/postgres.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,9 @@ def func(self: PostgresGenerator, expression: DATE_ADD_OR_SUB) -> str:
6161
unit = expression.args.get("unit")
6262

6363
e = self._simplify_unless_literal(expression.expression)
64-
if isinstance(e, exp.Literal):
64+
if isinstance(e, exp.Interval):
65+
return f"{this} {kind} {self.sql(e)}"
66+
elif isinstance(e, exp.Literal):
6567
e.set("is_string", True)
6668
elif e.is_number:
6769
e = exp.Literal.string(e.to_py())

tests/dialects/test_postgres.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,10 @@ def test_postgres(self):
168168
"pg_catalog.PG_TABLE_IS_VISIBLE(c.oid) "
169169
"ORDER BY 2, 3"
170170
)
171+
self.validate_identity(
172+
"SELECT date_add(current_date, interval '7' day)",
173+
"SELECT CURRENT_DATE + INTERVAL '7 DAY'",
174+
)
171175
self.validate_identity(
172176
"SELECT e'foo \\' bar'",
173177
"SELECT e'foo '' bar'",

0 commit comments

Comments
 (0)