Files
email-tracker/external/duckdb/test/sql/subquery/scalar/array_subquery.test
2025-10-24 19:21:19 -05:00

96 lines
1.5 KiB
SQL

# name: test/sql/subquery/scalar/array_subquery.test
# description: Test ARRAY subquery
# group: [scalar]
statement ok
SET default_null_order='nulls_first';
statement ok
CREATE TABLE integers(i INTEGER);
statement ok
INSERT INTO integers VALUES (1), (2), (3), (NULL);
# uncorrelated
query II
SELECT i, ARRAY(
SELECT 42
) top
FROM integers i1
ORDER BY i
----
NULL [42]
1 [42]
2 [42]
3 [42]
# single element
query II
SELECT i, ARRAY(
SELECT i FROM integers WHERE i1.i=i
) top
FROM integers i1
ORDER BY i
----
NULL []
1 [1]
2 [2]
3 [3]
# multiple elements
query II
SELECT i, ARRAY(
SELECT i FROM integers WHERE i>i1.i ORDER BY i ASC NULLS FIRST
) top
FROM integers i1
ORDER BY i
----
NULL []
1 [2, 3]
2 [3]
3 []
# array with limit
query II
SELECT i, ARRAY(
SELECT i1.i FROM integers i1, integers i2, integers i3, integers i4 WHERE i1.i=integers.i LIMIT 3
) top
FROM integers
ORDER BY i
----
NULL []
1 [1, 1, 1]
2 [2, 2, 2]
3 [3, 3, 3]
# array with limit and offset
query II
SELECT i, ARRAY(
SELECT i1.i FROM integers i1, integers i2, integers i3, integers i4 WHERE i1.i=integers.i LIMIT 3 OFFSET 3
) top
FROM integers
ORDER BY i
----
NULL []
1 [1, 1, 1]
2 [2, 2, 2]
3 [3, 3, 3]
# offset on the edge
query II
SELECT i, ARRAY(
SELECT i1.i FROM integers i1, integers i2, integers i3, integers i4 WHERE i1.i=integers.i LIMIT 3 OFFSET 62
) top
FROM integers
ORDER BY i
----
NULL []
1 [1, 1]
2 [2, 2]
3 [3, 3]
# should only allow one column in array subquery
statement error
select array(select 1,2)
----
<REGEX>:.*inder Error.*Subquery returns 2 columns.*