Re: question about array indexing

2019-11-04 Thread Merlin Moncure
On Mon, Nov 4, 2019 at 10:05 AM Szymon Lipiński  wrote:
>
> Hey,
> I'm wondering if this isn't a bug somewhere in the parser. I had to add 
> additional parenthesis around the regexp_split_to_array.
>
>
> $ with x as (select 'a b c' a)
> select
> regexp_split_to_array(a, ' ')
> from x;
>
>  regexp_split_to_array
> ---
>  {a,b,c}
> (1 row)
>
> $ with x as (select 'a b c' a)
> select
> regexp_split_to_array(a, ' ')[1]
> from x;
>
> ERROR:  syntax error at or near "["
> LINE 3: regexp_split_to_array(a, ' ')[1]
>  ^
> $ with x as (select 'a b c' a)
> select
> (regexp_split_to_array(a, ' '))[1]
> from x;
>  regexp_split_to_array
> ---
>  a
> (1 row)

It's always been that way.  You also have to wrap function column expansions:
select (func()).*

I don't know the exact technical reason why that's required, but my
money is on precedence related problems.

merlin




question about array indexing

2019-11-04 Thread Szymon Lipiński
Hey,
I'm wondering if this isn't a bug somewhere in the parser. I had to add
additional parenthesis around the regexp_split_to_array.


$ with x as (select 'a b c' a)
select
regexp_split_to_array(a, ' ')
from x;

 regexp_split_to_array
---
 {a,b,c}
(1 row)

$ with x as (select 'a b c' a)
select
regexp_split_to_array(a, ' ')[1]
from x;

ERROR:  syntax error at or near "["
LINE 3: regexp_split_to_array(a, ' ')[1]
 ^
$ with x as (select 'a b c' a)
select
(regexp_split_to_array(a, ' '))[1]
from x;
 regexp_split_to_array
---
 a
(1 row)



regards,
Szymon