@@ -31,47 +31,58 @@ CREATE TABLE ansi_element_at_oob(arr array<int>) USING parquet
3131statement
3232INSERT INTO ansi_element_at_oob VALUES (array(1 , 2 , 3 ))
3333
34+ -- Valid positive and negative boundary indices must run natively and match Spark.
35+ query
36+ SELECT element_at(arr, 1 ), element_at(arr, 3 ), element_at(arr, - 1 ), element_at(arr, - 3 )
37+ FROM ansi_element_at_oob
38+
39+ -- A NULL index returns NULL even in ANSI mode.
40+ query
41+ SELECT element_at(arr, CAST(NULL AS INT )) FROM ansi_element_at_oob
42+
3443-- ============================================================================
3544-- element_at index out of bounds (positive index)
36- -- Spark throws: [INVALID_ARRAY_INDEX_IN_ELEMENT_AT] ...
37- -- Comet throws: Index out of bounds for array
38- -- See https://github.com/apache/datafusion-comet/issues/3375
45+ -- Spark and Comet throw INVALID_ARRAY_INDEX_IN_ELEMENT_AT in ANSI mode.
3946-- ============================================================================
4047
4148-- index beyond array length should throw (1-based indexing)
42- query ignore(https:// github .com / apache/ datafusion- comet/ issues/ 3375 )
49+ query expect_error([INVALID_ARRAY_INDEX_IN_ELEMENT_AT])
50+ SELECT element_at(arr, 4 ) FROM ansi_element_at_oob
51+
52+ query expect_error([INVALID_ARRAY_INDEX_IN_ELEMENT_AT])
4353SELECT element_at(arr, 10 ) FROM ansi_element_at_oob
4454
4555-- literal array with out of bounds access
46- query ignore(https: // github . com / apache / datafusion - comet / issues / 3375 )
47- SELECT element_at(array(1 , 2 , 3 ), 5 )
56+ query expect_error([INVALID_ARRAY_INDEX_IN_ELEMENT_AT] )
57+ SELECT element_at(array(1 , 2 , 3 ), 5 ) FROM ansi_element_at_oob
4858
4959-- ============================================================================
5060-- element_at with index 0 (invalid)
51- -- Spark throws: [INVALID_INDEX_OF_ZERO] The index 0 is invalid
52- -- Comet throws: different error message
53- -- See https://github.com/apache/datafusion-comet/issues/3375
61+ -- Spark and Comet throw INVALID_INDEX_OF_ZERO.
5462-- ============================================================================
5563
5664-- index 0 is not valid for element_at (1-based indexing)
57- query ignore(https: // github . com / apache / datafusion - comet / issues / 3375 )
65+ query expect_error([INVALID_INDEX_OF_ZERO] )
5866SELECT element_at(arr, 0 ) FROM ansi_element_at_oob
5967
6068-- literal with index 0
61- query ignore(https: // github . com / apache / datafusion - comet / issues / 3375 )
62- SELECT element_at(array(1 , 2 , 3 ), 0 )
69+ query expect_error([INVALID_INDEX_OF_ZERO] )
70+ SELECT element_at(array(1 , 2 , 3 ), 0 ) FROM ansi_element_at_oob
6371
6472-- ============================================================================
6573-- element_at index out of bounds (negative index beyond array)
6674-- ============================================================================
6775
6876-- negative index beyond array size should throw
69- query ignore(https:// github .com / apache/ datafusion- comet/ issues/ 3375 )
77+ query expect_error([INVALID_ARRAY_INDEX_IN_ELEMENT_AT])
78+ SELECT element_at(arr, - 4 ) FROM ansi_element_at_oob
79+
80+ query expect_error([INVALID_ARRAY_INDEX_IN_ELEMENT_AT])
7081SELECT element_at(arr, - 10 ) FROM ansi_element_at_oob
7182
7283-- literal with negative out of bounds
73- query ignore(https: // github . com / apache / datafusion - comet / issues / 3375 )
74- SELECT element_at(array(1 , 2 , 3 ), - 5 )
84+ query expect_error([INVALID_ARRAY_INDEX_IN_ELEMENT_AT] )
85+ SELECT element_at(array(1 , 2 , 3 ), - 5 ) FROM ansi_element_at_oob
7586
7687-- ============================================================================
7788-- ANSI short-circuit over a NULL array
0 commit comments