Re: BUG #9541: Result of TRIM function has changed
| От | Tom Lane |
|---|---|
| Тема | Re: BUG #9541: Result of TRIM function has changed |
| Дата | |
| Msg-id | 11692.1394634565@sss.pgh.pa.us обсуждение |
| Ответ на | BUG #9541: Result of TRIM function has changed (uehara.kazuki@po.ntts.co.jp) |
| Ответы |
Re: BUG #9541: Result of TRIM function has changed
|
| Список | pgsql-bugs |
uehara.kazuki@po.ntts.co.jp writes:
> Depending on the version, the result of the TRIM function is different.
I'm not sure that anyone would consider this a supported thing to do:
> CREATE FUNCTION LTRIM(CHAR,text)
> RETURNS text
> AS 'ltrim'
> LANGUAGE internal
> STRICT;
My attitude towards overriding system functions like that is "if it
breaks, you get to keep both pieces". (BTW, is there a reason you
omitted IMMUTABLE from this?)
However,
> PostgreSQL9.3.3ï¼
> | postgres=# SELECT '|' || TRIM(LEADING 'a' FROM 'abcd'::char(7)) || '|';
> | ?column?
> | ----------
> | |bcd |
> | (1 row)
I get "|bcd|" from this example, in both 9.3 and HEAD branch. I would
be surprised to get anything different, because the grammar converts
that syntax into "pg_catalog.ltrim(..., ...)" and so your override
function cannot be selected as the expansion. At least not if the
override function went into schema "public", which would be the default.
I suspect that in 9.3.3 you forced the function into the pg_catalog
schema, but omitted to do that in the other two examples.
regards, tom lane
В списке pgsql-bugs по дате отправления: