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
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) |