TestTypesArray tests array type handling
(t *testing.T)
| 217 | } |
| 218 | runQueryTests(t, tests) |
| 219 | } |
| 220 | |
| 221 | // TestTypesArray tests array type handling |
| 222 | func TestTypesArray(t *testing.T) { |
| 223 | tests := []QueryTest{ |
| 224 | // Array literals |
| 225 | {Name: "int_array", Query: "SELECT ARRAY[1, 2, 3]"}, |
| 226 | {Name: "text_array", Query: "SELECT ARRAY['a', 'b', 'c']"}, |
| 227 | {Name: "nested_array", Query: "SELECT ARRAY[[1, 2], [3, 4]]"}, |
| 228 | {Name: "array_cast", Query: "SELECT '{1,2,3}'::INTEGER[]"}, |
| 229 | |
| 230 | // Array access |
| 231 | {Name: "array_subscript", Query: "SELECT (ARRAY[1, 2, 3])[1]"}, |
| 232 | {Name: "array_slice", Query: "SELECT (ARRAY[1, 2, 3, 4, 5])[2:4]"}, |
| 233 | |
| 234 | // Array operators |
| 235 | {Name: "array_concat", Query: "SELECT ARRAY[1, 2] || ARRAY[3, 4]"}, |
| 236 | {Name: "array_append", Query: "SELECT ARRAY[1, 2] || 3"}, |
| 237 | {Name: "array_prepend", Query: "SELECT 0 || ARRAY[1, 2]"}, |
| 238 | {Name: "array_contains", Query: "SELECT ARRAY[1, 2, 3] @> ARRAY[1]"}, |
| 239 | {Name: "array_contained", Query: "SELECT ARRAY[1] <@ ARRAY[1, 2, 3]"}, |
| 240 | {Name: "array_overlap", Query: "SELECT ARRAY[1, 2] && ARRAY[2, 3]"}, |
| 241 | |
| 242 | // ANY/ALL with arrays |
| 243 | {Name: "any_array", Query: "SELECT 2 = ANY(ARRAY[1, 2, 3])"}, |
| 244 | {Name: "all_array", Query: "SELECT 1 = ALL(ARRAY[1, 1, 1])"}, |
| 245 | |
| 246 | // From table |
| 247 | {Name: "select_array_column", Query: "SELECT int_array FROM array_test WHERE id = 1"}, |
| 248 | {Name: "select_text_array", Query: "SELECT text_array FROM array_test WHERE id = 1"}, |
| 249 | } |
| 250 | runQueryTests(t, tests) |
| 251 | } |
nothing calls this directly
no test coverage detected