@@ -502,6 +502,31 @@ def test_snowflake(self):
502502 self .validate_identity ("TO_NUMBER(expr)" )
503503 self .validate_identity ("TO_NUMBER(expr, fmt)" )
504504 self .validate_identity ("TO_NUMBER(expr, fmt, precision, scale)" )
505+
506+ ast = self .validate_identity ("TO_NUMBER('12.3456')" )
507+ self .assertIsInstance (ast , exp .ToNumber )
508+ self .assertIsNone (ast .args .get ("format" ))
509+ self .assertEqual (ast .args .get ("precision" ).name , "38" )
510+ self .assertEqual (ast .args .get ("scale" ).name , "0" )
511+
512+ ast = self .validate_identity ("TO_NUMBER('12.3456', 10, 1)" )
513+ self .assertIsInstance (ast , exp .ToNumber )
514+ self .assertIsNone (ast .args .get ("format" ))
515+ self .assertEqual (ast .args .get ("precision" ).name , "10" )
516+ self .assertEqual (ast .args .get ("scale" ).name , "1" )
517+
518+ ast = self .validate_identity ("TO_NUMBER('12.3456', '99.99')" )
519+ self .assertIsInstance (ast , exp .ToNumber )
520+ self .assertEqual (ast .args .get ("format" ).name , "99.99" )
521+ self .assertEqual (ast .args .get ("precision" ).name , "38" )
522+ self .assertEqual (ast .args .get ("scale" ).name , "0" )
523+
524+ ast = self .validate_identity ("TO_NUMBER('12.3456', '99.99', 10, 1)" )
525+ self .assertIsInstance (ast , exp .ToNumber )
526+ self .assertEqual (ast .args .get ("format" ).name , "99.99" )
527+ self .assertEqual (ast .args .get ("precision" ).name , "10" )
528+ self .assertEqual (ast .args .get ("scale" ).name , "1" )
529+
505530 self .validate_identity ("TO_DECFLOAT('123.456')" )
506531 self .validate_identity ("TO_DECFLOAT('1,234.56', '999,999.99')" )
507532 self .validate_identity ("TRY_TO_DECFLOAT('123.456')" )
@@ -545,6 +570,35 @@ def test_snowflake(self):
545570 self .validate_identity ("TRY_TO_NUMBER('123.45')" )
546571 self .validate_identity ("TRY_TO_NUMBER('123.45', '999.99')" )
547572 self .validate_identity ("TRY_TO_NUMBER('123.45', '999.99', 10, 2)" )
573+
574+ ast = self .validate_identity ("TRY_TO_NUMBER('12.3456')" )
575+ self .assertIsInstance (ast , exp .ToNumber )
576+ self .assertIsNone (ast .args .get ("format" ))
577+ self .assertEqual (ast .args .get ("precision" ).name , "38" )
578+ self .assertEqual (ast .args .get ("scale" ).name , "0" )
579+ self .assertTrue (ast .args .get ("safe" ))
580+
581+ ast = self .validate_identity ("TRY_TO_NUMBER('12.3456', 10, 1)" )
582+ self .assertIsInstance (ast , exp .ToNumber )
583+ self .assertIsNone (ast .args .get ("format" ))
584+ self .assertEqual (ast .args .get ("precision" ).name , "10" )
585+ self .assertEqual (ast .args .get ("scale" ).name , "1" )
586+ self .assertTrue (ast .args .get ("safe" ))
587+
588+ ast = self .validate_identity ("TRY_TO_NUMBER('12.3456', '99.99')" )
589+ self .assertIsInstance (ast , exp .ToNumber )
590+ self .assertEqual (ast .args .get ("format" ).name , "99.99" )
591+ self .assertEqual (ast .args .get ("precision" ).name , "38" )
592+ self .assertEqual (ast .args .get ("scale" ).name , "0" )
593+ self .assertTrue (ast .args .get ("safe" ))
594+
595+ ast = self .validate_identity ("TRY_TO_NUMBER('12.3456', '99.99', 10, 1)" )
596+ self .assertIsInstance (ast , exp .ToNumber )
597+ self .assertEqual (ast .args .get ("format" ).name , "99.99" )
598+ self .assertEqual (ast .args .get ("precision" ).name , "10" )
599+ self .assertEqual (ast .args .get ("scale" ).name , "1" )
600+ self .assertTrue (ast .args .get ("safe" ))
601+
548602 self .validate_identity ("TO_NUMERIC('123.45')" , "TO_NUMBER('123.45')" )
549603 self .validate_identity ("TO_NUMERIC('123.45', '999.99')" , "TO_NUMBER('123.45', '999.99')" )
550604 self .validate_identity (
0 commit comments