@@ -740,30 +740,79 @@ def create_timezone(timezone_str: str) -> tzinfo:
740
740
741
741
742
742
def 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 ()
752
772
753
773
754
774
def 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" )
767
816
768
817
769
818
def test_array (trino_connection ):
0 commit comments