@@ -353,8 +353,6 @@ def test_snowflake(self):
353353 self .validate_identity ("TO_DECFLOAT('1,234.56', '999,999.99')" )
354354 self .validate_identity ("TRY_TO_DECFLOAT('123.456')" )
355355 self .validate_identity ("TRY_TO_DECFLOAT('1,234.56', '999,999.99')" )
356- self .validate_identity ("TRY_TO_BINARY('48656C6C6F')" )
357- self .validate_identity ("TRY_TO_BINARY('48656C6C6F', 'HEX')" )
358356 self .validate_all (
359357 "TRY_TO_BOOLEAN('true')" ,
360358 write = {
@@ -507,9 +505,6 @@ def test_snowflake(self):
507505 self .validate_identity ("SELECT a, exclude, b FROM xxx" )
508506 self .validate_identity ("SELECT ARRAY_SORT(x, TRUE, FALSE)" )
509507 self .validate_identity ("SELECT BOOLXOR_AGG(col) FROM tbl" )
510- self .validate_identity ("SELECT TO_BINARY('C2')" )
511- self .validate_identity ("SELECT TO_BINARY('C2', 'HEX')" )
512- self .validate_identity ("SELECT TO_BINARY('café', 'UTF-8')" )
513508 self .validate_identity (
514509 "SELECT PERCENTILE_DISC(0.9) WITHIN GROUP (ORDER BY col) OVER (PARTITION BY category)"
515510 )
@@ -4326,6 +4321,43 @@ def test_round(self):
43264321 },
43274322 )
43284323
4324+ def test_to_binary (self ):
4325+ expr = self .validate_identity ("TO_BINARY('48454C50', 'HEX')" )
4326+ annotated = annotate_types (expr , dialect = "snowflake" )
4327+ self .assertEqual (annotated .sql ("duckdb" ), "UNHEX('48454C50')" )
4328+
4329+ expr = self .validate_identity ("TO_BINARY('48454C50')" )
4330+ annotated = annotate_types (expr , dialect = "snowflake" )
4331+ self .assertEqual (annotated .sql ("duckdb" ), "UNHEX('48454C50')" )
4332+
4333+ expr = self .validate_identity ("TO_BINARY('TEST', 'UTF-8')" )
4334+ annotated = annotate_types (expr , dialect = "snowflake" )
4335+ self .assertEqual (annotated .sql ("duckdb" ), "ENCODE('TEST')" )
4336+
4337+ expr = self .validate_identity ("TO_BINARY('SEVMUA==', 'BASE64')" )
4338+ annotated = annotate_types (expr , dialect = "snowflake" )
4339+ self .assertEqual (annotated .sql ("duckdb" ), "FROM_BASE64('SEVMUA==')" )
4340+
4341+ expr = self .validate_identity ("TRY_TO_BINARY('48454C50', 'HEX')" )
4342+ annotated = annotate_types (expr , dialect = "snowflake" )
4343+ self .assertEqual (annotated .sql ("duckdb" ), "TRY(UNHEX('48454C50'))" )
4344+
4345+ expr = self .validate_identity ("TRY_TO_BINARY('48454C50')" )
4346+ annotated = annotate_types (expr , dialect = "snowflake" )
4347+ self .assertEqual (annotated .sql ("duckdb" ), "TRY(UNHEX('48454C50'))" )
4348+
4349+ expr = self .validate_identity ("TRY_TO_BINARY('Hello', 'UTF-8')" )
4350+ annotated = annotate_types (expr , dialect = "snowflake" )
4351+ self .assertEqual (annotated .sql ("duckdb" ), "TRY(ENCODE('Hello'))" )
4352+
4353+ expr = self .validate_identity ("TRY_TO_BINARY('SGVsbG8=', 'BASE64')" )
4354+ annotated = annotate_types (expr , dialect = "snowflake" )
4355+ self .assertEqual (annotated .sql ("duckdb" ), "TRY(FROM_BASE64('SGVsbG8='))" )
4356+
4357+ expr = self .validate_identity ("TRY_TO_BINARY('Hello', 'UTF-16')" )
4358+ annotated = annotate_types (expr , dialect = "snowflake" )
4359+ self .assertEqual (annotated .sql ("duckdb" ), "NULL" )
4360+
43294361 def test_transpile_bitwise_ops (self ):
43304362 # Binary bitwise operations
43314363 expr = self .parse_one ("SELECT BITOR(x'FF', x'0F')" , dialect = "snowflake" )
0 commit comments