Skip to content

Commit 83e6a87

Browse files
authored
fix(duckdb)!: Parse SHA256 (#4816)
1 parent 5ef35f2 commit 83e6a87

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

sqlglot/dialects/duckdb.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -379,13 +379,15 @@ class Parser(parser.Parser):
379379
"DECODE": lambda args: exp.Decode(
380380
this=seq_get(args, 0), charset=exp.Literal.string("utf-8")
381381
),
382+
"EDITDIST3": exp.Levenshtein.from_arg_list,
382383
"ENCODE": lambda args: exp.Encode(
383384
this=seq_get(args, 0), charset=exp.Literal.string("utf-8")
384385
),
385386
"EPOCH": exp.TimeToUnix.from_arg_list,
386387
"EPOCH_MS": lambda args: exp.UnixToTime(
387388
this=seq_get(args, 0), scale=exp.UnixToTime.MILLIS
388389
),
390+
"GENERATE_SERIES": _build_generate_series(),
389391
"JSON": exp.ParseJSON.from_arg_list,
390392
"JSON_EXTRACT_PATH": parser.build_extract_json_with_path(exp.JSONExtract),
391393
"JSON_EXTRACT_STRING": parser.build_extract_json_with_path(exp.JSONExtractScalar),
@@ -397,6 +399,7 @@ class Parser(parser.Parser):
397399
"MAKE_TIMESTAMP": _build_make_timestamp,
398400
"QUANTILE_CONT": exp.PercentileCont.from_arg_list,
399401
"QUANTILE_DISC": exp.PercentileDisc.from_arg_list,
402+
"RANGE": _build_generate_series(end_exclusive=True),
400403
"REGEXP_EXTRACT": build_regexp_extract(exp.RegexpExtract),
401404
"REGEXP_EXTRACT_ALL": build_regexp_extract(exp.RegexpExtractAll),
402405
"REGEXP_MATCHES": exp.RegexpLike.from_arg_list,
@@ -406,6 +409,7 @@ class Parser(parser.Parser):
406409
replacement=seq_get(args, 2),
407410
modifiers=seq_get(args, 3),
408411
),
412+
"SHA256": lambda args: exp.SHA2(this=seq_get(args, 0), length=exp.Literal.number(256)),
409413
"STRFTIME": build_formatted_time(exp.TimeToStr, "duckdb"),
410414
"STRING_SPLIT": exp.Split.from_arg_list,
411415
"STRING_SPLIT_REGEX": exp.RegexpSplit.from_arg_list,
@@ -418,9 +422,6 @@ class Parser(parser.Parser):
418422
"TO_TIMESTAMP": exp.UnixToTime.from_arg_list,
419423
"UNNEST": exp.Explode.from_arg_list,
420424
"XOR": binary_from_function(exp.BitwiseXor),
421-
"GENERATE_SERIES": _build_generate_series(),
422-
"RANGE": _build_generate_series(end_exclusive=True),
423-
"EDITDIST3": exp.Levenshtein.from_arg_list,
424425
}
425426

426427
FUNCTIONS.pop("DATE_SUB")

tests/dialects/test_bigquery.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -865,6 +865,7 @@ def test_bigquery(self):
865865
"presto": "SHA256(x)",
866866
"trino": "SHA256(x)",
867867
"postgres": "SHA256(x)",
868+
"duckdb": "SHA256(x)",
868869
},
869870
write={
870871
"bigquery": "SHA256(x)",
@@ -875,6 +876,7 @@ def test_bigquery(self):
875876
"redshift": "SHA2(x, 256)",
876877
"trino": "SHA256(x)",
877878
"duckdb": "SHA256(x)",
879+
"snowflake": "SHA2(x, 256)",
878880
},
879881
)
880882
self.validate_all(

0 commit comments

Comments
 (0)