Re: BUG #14354: Wrong interpretation of JSON 'null'

From: Vitaly Burovoy <vitaly(dot)burovoy(at)gmail(dot)com>
To: kouber(at)gmail(dot)com
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #14354: Wrong interpretation of JSON 'null'
Date: 2016-10-05 14:08:55
Message-ID: CAKOSWN=EQk2+SO00TOp-_QRktZxrUhxGzVdN5hjGKnLfcfij6w@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On 10/5/16, kouber(at)gmail(dot)com <kouber(at)gmail(dot)com> wrote:
> The following bug has been logged on the website:
>
> Bug reference: 14354
> Logged by: Kouber Saparev
> Email address: kouber(at)gmail(dot)com
> PostgreSQL version: 9.4.5
> Operating system: Fedora
> Description:
>
> Trying to pass 'null' to jsonb_each_text() results in an ERROR, while at the
> same time it is considered a valid JSON value. This behaviour seems quite
> inconsistent - either such a value should be considered invalid in general,
> either the function should treat it as a normal NULL instead.
>
> db=# select 'null'::jsonb;
> jsonb
> -------
> null
> (1 row)
>
> db=# select jsonb_each_text('null'::jsonb);
> ERROR: cannot call jsonb_each_text on a non-object
>
> db=# select jsonb_each_text(NULL);
> jsonb_each_text
> -----------------
> (0 rows)

It is not a bug. It works as expected.

1. NULL::jsonb is not the same as 'null'::jsonb
PG's NULL (not jsonb's 'null'!) as input returns NULL output.

2. Argument for jsonb_each_text should be a jsonb with an
_json-object_ at top-level (see types of primitives by [1] and [2]),
e.g. '{"key1":"value1", "key2":"value2"}' to produce pairs (key,
value).

Your example has jsonb value with a null-value at top-level. The same
exception is raised if you send a json-string as an input:
db=# select jsonb_each_text('"str"'::jsonb);
ERROR: cannot call jsonb_each_text on a non-object

P.S.: what you're expecting from the "select
jsonb_each_text('null'::jsonb)" call?

[1] https://www.postgresql.org/docs/9.6/static/datatype-json.html#JSON-TYPE-MAPPING-TABLE
[2] https://www.postgresql.org/docs/9.6/static/datatype-json.html#JSON-KEYS-ELEMENTS
--
Best regards,
Vitaly Burovoy

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message xrensis 2016-10-05 14:25:45 BUG #14356: "FATAL: the database system is starting up" error occurs to queries after PostgreSQL server start
Previous Message mmerta 2016-10-05 14:01:02 Wrong results of function age(timestamp, timestamp)