Обсуждение: BUG #4865: replace function returns null

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

BUG #4865: replace function returns null

От
"Jamolkhon Khakimov"
Дата:
The following bug has been logged online:

Bug reference:      4865
Logged by:          Jamolkhon Khakimov
Email address:      jkhakimov@gmail.com
PostgreSQL version: 8.2.7
Operating system:   Linux
Description:        replace function returns null
Details:

I dont know if it's a bug or not. It just seems illogical to me.

replace( 'abcdefabcdef', 'cd', 'XX')
// returns 'abXXefabXXef', ok

replace( 'abcdefabcdef', 'XX', 'YY')
// returns 'abcdefabcdef', ok

replace( 'abcdefabcdef', 'XX', null)
// returns null, while it should return 'abcdefabcdef'

Sorry if that's not a bug. Could find anything related to this in the
documentation.

Re: BUG #4865: replace function returns null

От
Tom Lane
Дата:
"Jamolkhon Khakimov" <jkhakimov@gmail.com> writes:
> replace( 'abcdefabcdef', 'XX', null)
> // returns null, while it should return 'abcdefabcdef'

No, it should return null.  Like most Postgres functions, replace is
strict, meaning it returns null if any input is null.  This is sensible
in the abstract because an unknown input means the result is unknown
too.  I suppose your argument is that the result here could be
determined without knowing what the third argument value is, but the
mechanism doesn't attempt to make such a fine distinction.

            regards, tom lane