@@ -740,30 +740,79 @@ def create_timezone(timezone_str: str) -> tzinfo:
740740
741741
742742def test_interval_year_to_month (trino_connection ):
743- SqlTest (trino_connection ) \
744- .add_field (sql = "CAST(null AS INTERVAL YEAR TO MONTH)" , python = None ) \
745- .add_field (sql = "INTERVAL '10' YEAR" , python = relativedelta (years = 10 )) \
746- .add_field (sql = "INTERVAL '-5' YEAR" , python = relativedelta (years = - 5 )) \
747- .add_field (sql = "INTERVAL '3' MONTH" , python = relativedelta (months = 3 )) \
748- .add_field (sql = "INTERVAL '-18' MONTH" , python = relativedelta (years = - 1 , months = - 6 )) \
749- .add_field (sql = "INTERVAL '30' MONTH" , python = relativedelta (years = 2 , months = 6 )) \
750- .add_field (sql = "INTERVAL '124-30' YEAR TO MONTH" , python = relativedelta (years = 126 , months = 6 )) \
751- .execute ()
743+ (
744+ SqlTest (trino_connection )
745+ .add_field (
746+ sql = "CAST(null AS INTERVAL YEAR TO MONTH)" ,
747+ python = None )
748+ .add_field (
749+ sql = "INTERVAL '10' YEAR" ,
750+ python = relativedelta (years = 10 ))
751+ .add_field (
752+ sql = "INTERVAL '-5' YEAR" ,
753+ python = relativedelta (years = - 5 ))
754+ .add_field (
755+ sql = "INTERVAL '3' MONTH" ,
756+ python = relativedelta (months = 3 ))
757+ .add_field (
758+ sql = "INTERVAL '-18' MONTH" ,
759+ python = relativedelta (years = - 1 , months = - 6 ))
760+ .add_field (
761+ sql = "INTERVAL '30' MONTH" ,
762+ python = relativedelta (years = 2 , months = 6 ))
763+ # max supported INTERVAL in Trino
764+ .add_field (
765+ sql = "INTERVAL '178956970-7' YEAR TO MONTH" ,
766+ python = relativedelta (years = 178956970 , months = 7 ))
767+ # min supported INTERVAL in Trino
768+ .add_field (
769+ sql = "INTERVAL '-178956970-8' YEAR TO MONTH" ,
770+ python = relativedelta (years = - 178956970 , months = - 8 ))
771+ ).execute ()
752772
753773
754774def test_interval_day_to_second (trino_connection ):
755- SqlTest (trino_connection ) \
756- .add_field (sql = "CAST(null AS INTERVAL DAY TO SECOND)" , python = None ) \
757- .add_field (sql = "INTERVAL '2' DAY" , python = timedelta (days = 2 )) \
758- .add_field (sql = "INTERVAL '-2' DAY" , python = timedelta (days = - 2 )) \
759- .add_field (sql = "INTERVAL '-2' SECOND" , python = timedelta (seconds = - 2 )) \
760- .add_field (sql = "INTERVAL '1 11:11:11.116555' DAY TO SECOND" ,
761- python = timedelta (days = 1 , seconds = 40271 , microseconds = 116000 )) \
762- .add_field (sql = "INTERVAL '-5 23:59:57.000' DAY TO SECOND" , python = timedelta (days = - 6 , seconds = 3 )) \
763- .add_field (sql = "INTERVAL '12 10:45' DAY TO MINUTE" , python = timedelta (days = 12 , seconds = 38700 )) \
764- .add_field (sql = "INTERVAL '45:32.123' MINUTE TO SECOND" , python = timedelta (seconds = 2732 , microseconds = 123000 )) \
765- .add_field (sql = "INTERVAL '32.123' SECOND" , python = timedelta (seconds = 32 , microseconds = 123000 )) \
766- .execute ()
775+ (
776+ SqlTest (trino_connection )
777+ .add_field (
778+ sql = "CAST(null AS INTERVAL DAY TO SECOND)" ,
779+ python = None )
780+ .add_field (
781+ sql = "INTERVAL '2' DAY" ,
782+ python = timedelta (days = 2 ))
783+ .add_field (
784+ sql = "INTERVAL '-2' DAY" ,
785+ python = timedelta (days = - 2 ))
786+ .add_field (
787+ sql = "INTERVAL '-2' SECOND" ,
788+ python = timedelta (seconds = - 2 ))
789+ .add_field (
790+ sql = "INTERVAL '1 11:11:11.116555' DAY TO SECOND" ,
791+ python = timedelta (days = 1 , seconds = 40271 , microseconds = 116000 ))
792+ .add_field (
793+ sql = "INTERVAL '-5 23:59:57.000' DAY TO SECOND" ,
794+ python = timedelta (days = - 6 , seconds = 3 ))
795+ .add_field (
796+ sql = "INTERVAL '12 10:45' DAY TO MINUTE" ,
797+ python = timedelta (days = 12 , seconds = 38700 ))
798+ .add_field (
799+ sql = "INTERVAL '45:32.123' MINUTE TO SECOND" ,
800+ python = timedelta (seconds = 2732 , microseconds = 123000 ))
801+ .add_field (
802+ sql = "INTERVAL '32.123' SECOND" ,
803+ python = timedelta (seconds = 32 , microseconds = 123000 ))
804+ # max supported timedelta in Python
805+ .add_field (
806+ sql = "INTERVAL '999999999 23:59:59.999' DAY TO SECOND" ,
807+ python = timedelta (days = 999999999 , hours = 23 , minutes = 59 , seconds = 59 , milliseconds = 999 ))
808+ # min supported timedelta in Python
809+ .add_field (
810+ sql = "INTERVAL '-999999999' DAY" ,
811+ python = timedelta (days = - 999999999 ))
812+ ).execute ()
813+
814+ SqlExpectFailureTest (trino_connection ).execute ("INTERVAL '1000000000' DAY" )
815+ SqlExpectFailureTest (trino_connection ).execute ("INTERVAL '-999999999 00:00:00.001' DAY TO SECOND" )
767816
768817
769818def test_array (trino_connection ):
0 commit comments