If we're going to go that route, I think it makes more sense to create an actual key/value type (ie: http://pgxn.org/dist/pair/doc/pair.html) and return an array of that.
I think we'd possibly be better off with simply returning a flat array, [key1, value1, ...]
Thats's what the hstore(text[]) and json_object(text[]) functions accept, along with the 2D variant, if we want a precedent.
It can be one of supported variant. I should not be one, because we cannot to simply iterate over it
Next possibility is teach FOREACH to take key and value in one step.
I looked to code and iteration over pair (key, value) is more simple
FOREACH supports target list, but source should be composite array.
ostgres=# do $$ declare a int; b int; begin foreach a,b in array ARRAY[(1,2),(3,4)] loop raise notice 'a = %, b = %', a,b; end loop; end; $$ language plpgsql; NOTICE: a = 1, b = 2 NOTICE: a = 3, b = 4 DO
Conversion from ARRAY[k1,v1,k2,v2, ... ] is not well consistent with current design