Re: Index expression syntax

From: Konstantin Knizhnik <k(dot)knizhnik(at)postgrespro(dot)ru>
To: Marko Tiikkaja <marko(at)joh(dot)to>
Cc: PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Index expression syntax
Date: 2017-09-29 08:12:17
Message-ID: fa44fb95-c233-bac7-8d32-03fd034217db@postgrespro.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 29.09.2017 11:03, Marko Tiikkaja wrote:
> On Fri, Sep 29, 2017 at 9:31 AM, Konstantin Knizhnik
> <k(dot)knizhnik(at)postgrespro(dot)ru <mailto:k(dot)knizhnik(at)postgrespro(dot)ru>> wrote:
>
> I wonder why syntax error is produced in this case:
>
> postgres=# create index metaindex on foo using
> gin(to_tsvector('english', x)||to_tsvector('english',y));
> ERROR: syntax error at or near "||"
> LINE 1: ...taindex on foo using gin(to_tsvector('english',
> x)||to_tsvec...
> ^
> [ .. ]
>
> /|expression:|/
> An expression based on one or more columns of the table. The
> expression usually must be written with surrounding
> parentheses, as shown in the syntax. However, the parentheses
> can be omitted if the expression has the form of a function call.
>
> So documentations states that sometimes it is possible to avoid
> parentheses, but it is unclear why I have to use double
> parentheses...
> I think that either grammar should be fixed, either documentation
> should be updated.
>
>
> Your expression is clearly not a function call, it's a concatenation
> of two of them. The documentation seems perfectly accurate to me?
>
O, sorry!
You are right. I just didn't notice extra parenthesis in CREATE INDEX
syntax in case of using expressions.

--
Konstantin Knizhnik
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Craig Ringer 2017-09-29 08:22:01 Re: pg_prepared_xact_status
Previous Message Marko Tiikkaja 2017-09-29 08:03:23 Re: Index expression syntax