The following bug has been logged on the website:
Bug reference: 16092
Logged by: Dirk Weinhardt
Email address: dweinhardt78+pgsql-bugs@gmail.com
PostgreSQL version: 11.5
Operating system: Alpine Linux
Description:
Using Docker container image postgres:11.5-alpine pulled on 2019-10-31
14:12:00 CET.
Given this fairly simple piece of JSON data: [{"aName": "foo"}]
When any of these queries is executed:
SELECT x.* FROM jsonb_to_recordset('[{"aName": "foo"}]'::jsonb) AS x(aName
text);
SELECT x.* FROM json_to_recordset('[{"aName": "foo"}]'::json) AS x(aName
text);
SELECT x.* FROM jsonb_to_recordset('[{"aname": "foo"}]'::jsonb) AS x(aname
text);
SELECT x.* FROM json_to_recordset('[{"aname": "foo"}]'::json) AS x(aname
text);
Then the output should be:
aname (text)
-----------------
foo
But for the first and the second query (the ones with mixed-case property
names) the actual output is:
aname (text)
-----------------
NULL
The same issue also exists with these queries:
DROP TYPE IF EXISTS x;
CREATE TYPE x AS (aName text);
SELECT x.* FROM jsonb_array_elements('[{"aName": "foo"}]'::jsonb) AS s,
jsonb_populate_record(NULL::x, s.value) AS x;
SELECT x.* FROM json_array_elements('[{"aName": "foo"}]'::json) AS s,
json_populate_record(NULL::x, s.value) AS x;