Thread: BUG #13768: JSONB concat

BUG #13768: JSONB concat

From
awasarax@yandex.ru
Date:
The following bug has been logged on the website:

Bug reference:      13768
Logged by:          Roman
Email address:      awasarax@yandex.ru
PostgreSQL version: 9.5beta1
Operating system:   Windows (7, Server 2008 r2)
Description:

if "d" is null then return = null
else
return <> null


CREATE OR REPLACE FUNCTION userfunc(jsonb)
  RETURNS jsonb AS
$BODY$
DECLARE
 r jsonb = null;
 d jsonb = null;
BEGIN
 SELECT to_json(users.*) INTO r FROM users WHERE ///////;
 RETURN r||d; -- return null
END;
$BODY$
  LANGUAGE plpgsql VOLATILE;

Re: BUG #13768: JSONB concat

From
Tom Lane
Date:
awasarax@yandex.ru writes:
> if "d" is null then return = null
> else
> return <> null

> CREATE OR REPLACE FUNCTION userfunc(jsonb)
>   RETURNS jsonb AS
> $BODY$
> DECLARE
>  r jsonb = null;
>  d jsonb = null;
> BEGIN
>  SELECT to_json(users.*) INTO r FROM users WHERE ///////;
>  RETURN r||d; -- return null
> END;
> $BODY$
>   LANGUAGE plpgsql VOLATILE;


I see nothing particularly wrong here.  There is long-established
precedent, eg, 'foo'::text || NULL is null too.  It makes sense
if you consider that NULL means "unknown".

            regards, tom lane