@@ -1552,6 +1552,36 @@ func TestArrayFunctions(t *testing.T) {
15521552 },
15531553 },
15541554 },
1555+ {
1556+ Name : "multi-argument unnest" ,
1557+ Assertions : []ScriptTestAssertion {
1558+ {
1559+ // Basic multi-argument UNNEST with equal-length arrays
1560+ Query : `SELECT * FROM UNNEST(ARRAY['a','b','c'], ARRAY[1,2,3])` ,
1561+ Expected : []sql.Row {{"a" , int64 (1 )}, {"b" , int64 (2 )}, {"c" , int64 (3 )}},
1562+ },
1563+ {
1564+ // Multi-argument UNNEST with unequal-length arrays (shorter padded with NULL)
1565+ Query : `SELECT * FROM UNNEST(ARRAY['a','b'], ARRAY[1,2,3])` ,
1566+ Expected : []sql.Row {{"a" , int64 (1 )}, {"b" , int64 (2 )}, {nil , int64 (3 )}},
1567+ },
1568+ {
1569+ // Multi-argument UNNEST with empty array
1570+ Query : `SELECT * FROM UNNEST(ARRAY['a','b'], ARRAY[]::int[])` ,
1571+ Expected : []sql.Row {{"a" , nil }, {"b" , nil }},
1572+ },
1573+ {
1574+ // Multi-argument UNNEST with three arrays (booleans come as "t"/"f" strings from PostgreSQL wire protocol)
1575+ Query : `SELECT * FROM UNNEST(ARRAY[1,2], ARRAY['x','y'], ARRAY[true,false])` ,
1576+ Expected : []sql.Row {{int64 (1 ), "x" , "t" }, {int64 (2 ), "y" , "f" }},
1577+ },
1578+ {
1579+ // Multi-argument UNNEST with alias
1580+ Query : `SELECT u.* FROM UNNEST(ARRAY['a','b'], ARRAY[1,2]) AS u` ,
1581+ Expected : []sql.Row {{"a" , int64 (1 )}, {"b" , int64 (2 )}},
1582+ },
1583+ },
1584+ },
15551585 {
15561586 Name : "array_to_string" ,
15571587 SetUpScript : []string {},
0 commit comments