BUG #4865: replace function returns null

Started by Jamolkhon Khakimovalmost 17 years ago2 messagesbugs
Jump to latest
#1Jamolkhon Khakimov
jkhakimov@gmail.com

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.

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Jamolkhon Khakimov (#1)
Re: BUG #4865: replace function returns null

"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