BUG #15517: JSONB_BUILD_ARRAY and JSON_BUILD_ARRAY omit XMLDeclaration (if present) from XML colums - Mailing list pgsql-bugs

From PG Bug reporting form
Subject BUG #15517: JSONB_BUILD_ARRAY and JSON_BUILD_ARRAY omit XMLDeclaration (if present) from XML colums
Date
Msg-id 15517-f8fdb2e6b238eed0@postgresql.org
Whole thread Raw
Responses Re: BUG #15517: JSONB_BUILD_ARRAY and JSON_BUILD_ARRAY omit XML Declaration (if present) from XML colums  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-bugs
The following bug has been logged on the website:

Bug reference:      15517
Logged by:          Mark Drake
Email address:      mark.drake@golden-hind.com
PostgreSQL version: 11.1
Operating system:   Windows
Description:

postgres=# create table foo(x xml);
CREATE TABLE
postgres=# insert into foo values ('<XYZ>XXX</XYZ>');
INSERT 0 1
postgres=# insert into foo values ('<?xml
version="1.0"?><ABC>123</ABC>'::XML);
INSERT 0 1
postgres=# select x, x::text, JSONB_BUILD_ARRAY(x,x::text) from foo;
       x        |                  x                  |
jsonb_build_array
----------------+-------------------------------------+-------------------------------------------------------------
 <XYZ>XXX</XYZ> | <XYZ>XXX</XYZ>                      | ["<XYZ>XXX</XYZ>",
"<XYZ>XXX</XYZ>"]
 <ABC>123</ABC> | <?xml version="1.0"?><ABC>123</ABC> | ["<ABC>123</ABC>",
"<?xml version=\"1.0\"?><ABC>123</ABC>"]
(2 rows)

As can be seen the JSONB_BUILD_ARRAY of x has omitted the declaration. I
would have expected the declaration to be included in the output for column
X.

As can be seen a simple workaround is to generate based on the casting to
text. Not sure how much overhead (if any) this adds.


pgsql-bugs by date:

Previous
From: Tom Lane
Date:
Subject: Re: BUG #15516: Identifier not quoted with uppercase letter (spanish Ñ) doesn't get transformed to lowercase (ñ)
Next
From: Tom Lane
Date:
Subject: Re: BUG #15514: process fails on jsonb_populate_recordset query. see simple example below