From: | Ildar Musin <i(dot)musin(at)postgrespro(dot)ru> |
---|---|
To: | Peter Eisentraut <peter(dot)eisentraut(at)2ndquadrant(dot)com>, Chapman Flack <chap(at)anastigmatix(dot)net>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Ashutosh Bapat <ashutosh(dot)bapat(at)enterprisedb(dot)com> |
Cc: | Pg Hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: MAP syntax for arrays |
Date: | 2018-05-08 15:11:59 |
Message-ID: | badceb4a-9f37-b243-8355-ae281a7ff1ac@postgrespro.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 08.05.2018 17:15, Peter Eisentraut wrote:
> On 5/8/18 09:19, Chapman Flack wrote:
>> On 05/08/2018 08:57 AM, Ildar Musin wrote:
>>>
>>> select map (pow(2, x) - 1 for x in array[1,2,3,4,5]);
>>
>> I wonder how efficient an implementation would be possible
>> strictly as a function, without grammar changes?
>
> Yeah, you can pass a function to another function (using regprocedure
> or just oid), so this should be possible entirely in user space.
>
The problem with this approach is that extension should either have
single map() function with input and output type of anyarray which
cannot be used when user needs to map int[] to text[] for example. Or
the other way there should be a set of map functions for different
intput/output types.
Another thing is that this approach is not as versatile since user need
to create a function before running map, while with the proposed patch
they could run arbitrary expression over the array directly.
--
Ildar Musin
i(dot)musin(at)postgrespro(dot)ru
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2018-05-08 15:17:13 | Re: Cast jsonb to numeric, int, float, bool |
Previous Message | Paul Howells | 2018-05-08 15:10:59 | SQL:2011 Valid-Time Support |