Re: proposal: row_to_array function
От | Pavel Stehule |
---|---|
Тема | Re: proposal: row_to_array function |
Дата | |
Msg-id | CAFj8pRAec3CV_ShO49D=f1=wAyDUsvxFXuu6d9vcHsbBEEXY-w@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: proposal: row_to_array function (Pavel Stehule <pavel.stehule@gmail.com>) |
Список | pgsql-hackers |
2015-01-17 7:26 GMT+01:00 Pavel Stehule <pavel.stehule@gmail.com>:
2015-01-16 22:35 GMT+01:00 Andrew Dunstan <andrew@dunslane.net>:
On 01/16/2015 12:22 PM, Pavel Stehule wrote:
There two possible transformations:
row_to_array --> [[key1, value1],[key2, value2], ...]
row_to_row_array --> [(key1, value1), (key2, value2), ... ]
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.
ok
<http://BlueTreble.com>
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 itNext 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
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
RegardsPavel
cheers
andrew
В списке pgsql-hackers по дате отправления: