Обсуждение: Substring undocumented form

Поиск
Список
Период
Сортировка

Substring undocumented form

От
Thom Brown
Дата:
Hi all,

Someone submitted a comment to the documentation which made mention of
the fact that while we provide one form of the 3-parameter substring
function, we don't mention an alternative one.

substring(string from pattern for escape)
can be written:
substring(string, pattern, escape)

Curiously, this doesn't appear to be the same with similar functions.
For instance, the following can't be changed in a similar way:

overlay('Txxxxas' placing 'hom' from 2 for 4)
can't be written:
overlay('Txxxxas', 'hom', 2, 4)

position('om' in 'Thomas')
can't be written:
position('om', 'Thomas')

So this doesn't look like a general alternative form.  Is the
alternative form of substring deprecated or just missing from the
documentation?

Thanks

Thom Brown
Twitter: @darkixion
IRC (freenode): dark_ixion
Registered Linux user: #516935

Re: Substring undocumented form

От
Robert Haas
Дата:
On Sat, Sep 25, 2010 at 4:36 AM, Thom Brown <thom@linux.com> wrote:
> Someone submitted a comment to the documentation which made mention of
> the fact that while we provide one form of the 3-parameter substring
> function, we don't mention an alternative one.
>
> substring(string from pattern for escape)
> can be written:
> substring(string, pattern, escape)
>
> Curiously, this doesn't appear to be the same with similar functions.
> For instance, the following can't be changed in a similar way:
>
> overlay('Txxxxas' placing 'hom' from 2 for 4)
> can't be written:
> overlay('Txxxxas', 'hom', 2, 4)
>
> position('om' in 'Thomas')
> can't be written:
> position('om', 'Thomas')
>
> So this doesn't look like a general alternative form.  Is the
> alternative form of substring deprecated or just missing from the
> documentation?

You can call any of them with the normal function call syntax as
pg_catalog.fn_name(...).  I think the reason why substring() works
anyway is because the substr_list nonterminal in gram.y includes a
production for expr_list.  The overlay_list and position_list
nonterminals are not similarly equipped.

As to whether or not such alternative forms should be documented, I
could go either way.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise Postgres Company