Re: [BUGS] BUG #8335: trim() un-document behaviour - Mailing list pgsql-hackers

From Tom Lane
Subject Re: [BUGS] BUG #8335: trim() un-document behaviour
Date
Msg-id 22386.1376331481@sss.pgh.pa.us
Whole thread Raw
In response to Re: [BUGS] BUG #8335: trim() un-document behaviour  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: [BUGS] BUG #8335: trim() un-document behaviour  (Bruce Momjian <bruce@momjian.us>)
List pgsql-hackers
I wrote:
> This will break even more stuff than the last patch, ie, every single
> stored rule or view that contains a TRIM function.  You can *not*
> eliminate, or mess with, the expr_list production, because that's what
> dumping of these function calls relies on.

No, wait, I take that back.  I was thinking that the function call would
dump out as trim(x, y) but actually none of the underlying functions
are named just "trim"; they're btrim, ltrim, or rtrim.  So actually the
dump/reload scenario does not have anything to do with the trim_list
production --- the underlying functions just parse normally in any case.

The question remains why it's a good idea to mess with a syntax behavior
that's been like that for a dozen years or more.  I don't see any upside
to doing that.  As an example of a downside, right now if you try to
pass extra arguments to TRIM() you'll get

regression=# select trim(1,2,3);
ERROR:  function pg_catalog.btrim(integer, integer, integer) does not exist
LINE 1: select trim(1,2,3);              ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

You might wonder why the message mentions "btrim" not "trim", but at least
the complaint is reasonably on-topic.  After this patch, you'd just get
a "syntax error" message, which doesn't seem helpful at all.
        regards, tom lane



pgsql-hackers by date:

Previous
From: Andrew Dunstan
Date:
Subject: Re: pg_basebackup vs. Windows and tablespaces
Next
From: Magnus Hagander
Date:
Subject: Re: pg_basebackup vs. Windows and tablespaces