@@ -2536,6 +2536,179 @@ def assert_show_string_equals(actual: str, expected: str):
25362536 )
25372537
25382538
2539+ @pytest .mark .skipif (
2540+ "config.getoption('local_testing_mode', default=False)" ,
2541+ reason = "FEAT: Interval types not fully supported in local testing" ,
2542+ )
2543+ def test_show_interval_formatting (session ):
2544+ df = session .sql ("SELECT INTERVAL '1' HOUR as hour_single" )
2545+ assert df ._show_string_spark (truncate = False ) == dedent (
2546+ """\
2547+ +------------------+
2548+ |"HOUR_SINGLE" |
2549+ +------------------+
2550+ |INTERVAL '01' HOUR|
2551+ +------------------+
2552+ """
2553+ )
2554+
2555+ df = session .sql ("SELECT INTERVAL '5' MINUTE as minute_single" )
2556+ assert df ._show_string_spark (truncate = False ) == dedent (
2557+ """\
2558+ +--------------------+
2559+ |"MINUTE_SINGLE" |
2560+ +--------------------+
2561+ |INTERVAL '05' MINUTE|
2562+ +--------------------+
2563+ """
2564+ )
2565+
2566+ df = session .sql ("SELECT INTERVAL '5' SECOND as second_integer" )
2567+ assert df ._show_string_spark (truncate = False ) == dedent (
2568+ """\
2569+ +--------------------+
2570+ |"SECOND_INTEGER" |
2571+ +--------------------+
2572+ |INTERVAL '05' SECOND|
2573+ +--------------------+
2574+ """
2575+ )
2576+
2577+ df = session .sql ("SELECT INTERVAL '1.000001' SECOND as second_microseconds" )
2578+ assert df ._show_string_spark (truncate = False ) == dedent (
2579+ """\
2580+ +---------------------------+
2581+ |"SECOND_MICROSECONDS" |
2582+ +---------------------------+
2583+ |INTERVAL '01.000001' SECOND|
2584+ +---------------------------+
2585+ """
2586+ )
2587+
2588+ df = session .sql ("SELECT INTERVAL '24' HOUR as hour_full_day" )
2589+ assert df ._show_string_spark (truncate = False ) == dedent (
2590+ """\
2591+ +------------------+
2592+ |"HOUR_FULL_DAY" |
2593+ +------------------+
2594+ |INTERVAL '24' HOUR|
2595+ +------------------+
2596+ """
2597+ )
2598+
2599+ df = session .sql ("SELECT INTERVAL '90' MINUTE as minute_over_hour" )
2600+ assert df ._show_string_spark (truncate = False ) == dedent (
2601+ """\
2602+ +--------------------+
2603+ |"MINUTE_OVER_HOUR" |
2604+ +--------------------+
2605+ |INTERVAL '90' MINUTE|
2606+ +--------------------+
2607+ """
2608+ )
2609+
2610+ df = session .sql ("SELECT INTERVAL '0' SECOND as zero_second" )
2611+ assert df ._show_string_spark (truncate = False ) == dedent (
2612+ """\
2613+ +--------------------+
2614+ |"ZERO_SECOND" |
2615+ +--------------------+
2616+ |INTERVAL '00' SECOND|
2617+ +--------------------+
2618+ """
2619+ )
2620+
2621+ df = session .sql ("SELECT INTERVAL '0.000001' SECOND as microsecond" )
2622+ assert df ._show_string_spark (truncate = False ) == dedent (
2623+ """\
2624+ +---------------------------+
2625+ |"MICROSECOND" |
2626+ +---------------------------+
2627+ |INTERVAL '00.000001' SECOND|
2628+ +---------------------------+
2629+ """
2630+ )
2631+
2632+ df = session .sql ("SELECT INTERVAL '2 12' DAY TO HOUR as day_to_hour" )
2633+ assert df ._show_string_spark (truncate = False ) == dedent (
2634+ """\
2635+ +---------------------------+
2636+ |"DAY_TO_HOUR" |
2637+ +---------------------------+
2638+ |INTERVAL '2 12' DAY TO HOUR|
2639+ +---------------------------+
2640+ """
2641+ )
2642+
2643+ df = session .sql ("SELECT INTERVAL '1 08:30' DAY TO MINUTE as day_to_minute" )
2644+ assert df ._show_string_spark (truncate = False ) == dedent (
2645+ """\
2646+ +--------------------------------+
2647+ |"DAY_TO_MINUTE" |
2648+ +--------------------------------+
2649+ |INTERVAL '1 08:30' DAY TO MINUTE|
2650+ +--------------------------------+
2651+ """
2652+ )
2653+
2654+ df = session .sql ("SELECT INTERVAL '08:30' HOUR TO MINUTE as hour_to_minute" )
2655+ assert df ._show_string_spark (truncate = False ) == dedent (
2656+ """\
2657+ +-------------------------------+
2658+ |"HOUR_TO_MINUTE" |
2659+ +-------------------------------+
2660+ |INTERVAL '08:30' HOUR TO MINUTE|
2661+ +-------------------------------+
2662+ """
2663+ )
2664+
2665+ df = session .sql (
2666+ "SELECT INTERVAL '01:00:00.456' HOUR TO SECOND as hour_to_second_fractional"
2667+ )
2668+ assert df ._show_string_spark (truncate = False ) == dedent (
2669+ """\
2670+ +--------------------------------------+
2671+ |"HOUR_TO_SECOND_FRACTIONAL" |
2672+ +--------------------------------------+
2673+ |INTERVAL '01:00:00.456' HOUR TO SECOND|
2674+ +--------------------------------------+
2675+ """
2676+ )
2677+
2678+ df = session .sql ("SELECT INTERVAL '-2' HOUR as negative_hour" )
2679+ assert df ._show_string_spark (truncate = False ) == dedent (
2680+ """\
2681+ +-------------------+
2682+ |"NEGATIVE_HOUR" |
2683+ +-------------------+
2684+ |INTERVAL '-02' HOUR|
2685+ +-------------------+
2686+ """
2687+ )
2688+
2689+ df = session .sql ("SELECT INTERVAL '-15.5' SECOND as negative_second" )
2690+ assert df ._show_string_spark (truncate = False ) == dedent (
2691+ """\
2692+ +-----------------------+
2693+ |"NEGATIVE_SECOND" |
2694+ +-----------------------+
2695+ |INTERVAL '-15.5' SECOND|
2696+ +-----------------------+
2697+ """
2698+ )
2699+
2700+ df = session .sql ("SELECT INTERVAL '999999' SECOND as large_second" )
2701+ assert df ._show_string_spark (truncate = False ) == dedent (
2702+ """\
2703+ +------------------------+
2704+ |"LARGE_SECOND" |
2705+ +------------------------+
2706+ |INTERVAL '999999' SECOND|
2707+ +------------------------+
2708+ """
2709+ )
2710+
2711+
25392712@pytest .mark .parametrize ("data" , [[0 , 1 , 2 , 3 ], ["" , "a" ], [False , True ], [None ]])
25402713def test_create_dataframe_with_single_value (session , data ):
25412714 expected_names = ["_1" ]
0 commit comments