Lists: | pgsql-bugs |
---|
From: | roberto(dot)morelli(at)oneoverzero(dot)net |
---|---|
To: | pgsql-bugs(at)postgresql(dot)org |
Subject: | BUG #13485: JSONB To recordset not working with CamelCase |
Date: | 2015-07-03 14:46:57 |
Message-ID: | 20150703144657.1187.69398@wrigleys.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-bugs |
The following bug has been logged on the website:
Bug reference: 13485
Logged by: Roberto Morelli
Email address: roberto(dot)morelli(at)oneoverzero(dot)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
From: | "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com> |
---|---|
To: | "roberto(dot)morelli(at)oneoverzero(dot)net" <roberto(dot)morelli(at)oneoverzero(dot)net> |
Cc: | "pgsql-bugs(at)postgresql(dot)org" <pgsql-bugs(at)postgresql(dot)org> |
Subject: | Re: BUG #13485: JSONB To recordset not working with CamelCase |
Date: | 2015-07-03 18:53:44 |
Message-ID: | CAKFQuwaKQFpmfaTuDKvFVL1ZTu00PiTo+vOHpwW98-ixTb4-sA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-bugs |
On Friday, July 3, 2015, <roberto(dot)morelli(at)oneoverzero(dot)net> wrote:
> The following bug has been logged on the website:
>
> Bug reference: 13485
> Logged by: Roberto Morelli
> Email address: roberto(dot)morelli(at)oneoverzero(dot)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.
From: | Roberto Morelli <roberto(dot)morelli(at)oneoverzero(dot)net> |
---|---|
To: | "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com> |
Cc: | "pgsql-bugs(at)postgresql(dot)org" <pgsql-bugs(at)postgresql(dot)org> |
Subject: | Re: BUG #13485: JSONB To recordset not working with CamelCase |
Date: | 2015-07-04 12:07:49 |
Message-ID: | 19939E93-C49F-4AC2-8A60-CB6D6127322A@oneoverzero.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-bugs |
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(dot)g(dot)johnston(at)gmail(dot)com> wrote:
>
> On Friday, July 3, 2015, <roberto(dot)morelli(at)oneoverzero(dot)net <mailto:roberto(dot)morelli(at)oneoverzero(dot)net>> wrote:
> The following bug has been logged on the website:
>
> Bug reference: 13485
> Logged by: Roberto Morelli
> Email address: roberto(dot)morelli(at)oneoverzero(dot)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.