On 08/05/18 18:11, Ildar Musin wrote:
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.

The consensus on this seems to be that we don't want this. Yeah, it's a handy syntax, but it's not that much better than using a subselect or a writing a user-defined function. And there's risk of future conflicts with the SQL standard. I'll mark this as "Rejected" in the commitfest.

- Heikki

Reply via email to