Thread: BUG #13485: JSONB To recordset not working with CamelCase
BUG #13485: JSONB To recordset not working with CamelCase
From
roberto.morelli@oneoverzero.net
Date:
The following bug has been logged on the website: Bug reference: 13485 Logged by: Roberto Morelli Email address: roberto.morelli@oneoverzero.net PostgreSQL version: 9.4.4 Operating system: MacOSX Description: Hello, I have encountered a problem with the jsonb type and the procedure jsonb_populate_recordset. If I have a type defined as: CREATE TYPE nsp.confidence_enum AS ENUM ('probably', 'conclusively', 'reliabily'); CREATE TYPE nsp.direction_enum AS ENUM ('true', 'false'); CREATE TYPE nsp.TraitInfluence AS ( traitId uuid, direction nsp.direction_enum, confidence nsp.confidence_enum ); Note the camel case in traitId of nsp.TraitInfluence. If I try to populate a recordset with the jsonb in the following way: select jsonb_populate_recordset(null::nsp.TraitInfluence, '[{"traitId": "c7fd7224-3f09-4a0a-941d-7a6a96d655b5", "direction": "true", "confidence": "probably"}]'::jsonb) I get the following result: "(,true,probably)" That is the traitId value is missing. I cannot change the camel case in the json payload because it is a third party data. How can I overcome this problem? The correct result should be: "(c7fd7224-3f09-4a0a-941d-7a6a96d655b5,true,probably)" Thank you very much for your help Best Regards Roberto
On Friday, July 3, 2015, <roberto.morelli@oneoverzero.net> wrote: > The following bug has been logged on the website: > > Bug reference: 13485 > Logged by: Roberto Morelli > Email address: roberto.morelli@oneoverzero.net <javascript:;> > PostgreSQL version: 9.4.4 > Operating system: MacOSX > Description: > > Hello, > > I have encountered a problem with the jsonb type and the procedure > jsonb_populate_recordset. > > If I have a type defined as: > > CREATE TYPE nsp.confidence_enum AS > ENUM ('probably', 'conclusively', 'reliabily'); > > CREATE TYPE nsp.direction_enum AS > ENUM ('true', 'false'); > > CREATE TYPE nsp.TraitInfluence AS > ( > traitId uuid, > direction nsp.direction_enum, > confidence nsp.confidence_enum > ); > > Note the camel case in traitId of nsp.TraitInfluence. If I try to populate > a > recordset with the jsonb in the following way: > > select jsonb_populate_recordset(null::nsp.TraitInfluence, '[{"traitId": > "c7fd7224-3f09-4a0a-941d-7a6a96d655b5", "direction": "true", "confidence": > "probably"}]'::jsonb) > > I get the following result: > > "(,true,probably)" > > That is the traitId value is missing. I cannot change the camel case in the > json payload because it is a third party data. > > How can I overcome this problem? The correct result should be: > > "(c7fd7224-3f09-4a0a-941d-7a6a96d655b5,true,probably)" > > Double-quote the field name in the create type statement. David J.
Hello David, yes, it works, thank you!!! CREATE TYPE nsp.TraitInfluence AS ( "traitId" uuid, "direction" nsp.direction_enum, "confidence" nsp.confidence_enum ); Best regards Roberto > On 03 Jul 2015, at 20:53, David G. Johnston = <david.g.johnston@gmail.com> wrote: >=20 > On Friday, July 3, 2015, <roberto.morelli@oneoverzero.net = <mailto:roberto.morelli@oneoverzero.net>> wrote: > The following bug has been logged on the website: >=20 > Bug reference: 13485 > Logged by: Roberto Morelli > Email address: roberto.morelli@oneoverzero.net <javascript:;> > PostgreSQL version: 9.4.4 > Operating system: MacOSX > Description: >=20 > Hello, >=20 > I have encountered a problem with the jsonb type and the procedure > jsonb_populate_recordset. >=20 > If I have a type defined as: >=20 > CREATE TYPE nsp.confidence_enum AS > ENUM ('probably', 'conclusively', 'reliabily'); >=20 > CREATE TYPE nsp.direction_enum AS > ENUM ('true', 'false'); >=20 > CREATE TYPE nsp.TraitInfluence AS > ( > traitId uuid, > direction nsp.direction_enum, > confidence nsp.confidence_enum > ); >=20 > Note the camel case in traitId of nsp.TraitInfluence. If I try to = populate a > recordset with the jsonb in the following way: >=20 > select jsonb_populate_recordset(null::nsp.TraitInfluence, = '[{"traitId": > "c7fd7224-3f09-4a0a-941d-7a6a96d655b5", "direction": "true", = "confidence": > "probably"}]'::jsonb) >=20 > I get the following result: >=20 > "(,true,probably)" >=20 > That is the traitId value is missing. I cannot change the camel case = in the > json payload because it is a third party data. >=20 > How can I overcome this problem? The correct result should be: >=20 > "(c7fd7224-3f09-4a0a-941d-7a6a96d655b5,true,probably)" >=20 >=20 > Double-quote the field name in the create type statement. >=20 > David J.=20