Skip to content

Commit d250846

Browse files
fix(snowflake): generate LIMIT when OFFSET exists #4575 (#4581)
* fix(snowflake): generate LIMIT when OFFSET exists * PR feedback 1 Co-authored-by: Jo <[email protected]> * PR feedback 1 (change snowflake test) --------- Co-authored-by: Jo <[email protected]>
1 parent 6d6060b commit d250846

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

sqlglot/dialects/snowflake.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1224,3 +1224,10 @@ def datesub_sql(self, expression: exp.DateSub) -> str:
12241224
self.unsupported("DateSub cannot be transpiled if the subtracted count is unknown")
12251225

12261226
return date_delta_sql("DATEADD")(self, expression)
1227+
1228+
def select_sql(self, expression: exp.Select) -> str:
1229+
limit = expression.args.get("limit")
1230+
offset = expression.args.get("offset")
1231+
if offset and not limit:
1232+
expression.limit(exp.Null(), copy=False)
1233+
return super().select_sql(expression)

tests/dialects/test_snowflake.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2360,3 +2360,11 @@ def test_window_function_arg(self):
23602360
self.assertEqual(ast.sql("snowflake"), query)
23612361
self.assertEqual(len(list(ast.find_all(exp.Column))), 1)
23622362
self.assertEqual(window.this.sql("snowflake"), "db.schema.FUNC(a)")
2363+
2364+
def test_offset_without_limit(self):
2365+
self.validate_all(
2366+
"SELECT 1 ORDER BY 1 LIMIT NULL OFFSET 0",
2367+
read={
2368+
"trino": "SELECT 1 ORDER BY 1 OFFSET 0",
2369+
},
2370+
)

0 commit comments

Comments
 (0)