Re: BUG #15517: JSONB_BUILD_ARRAY and JSON_BUILD_ARRAY omit XML Declaration (if present) from XML colums

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: BUG #15517: JSONB_BUILD_ARRAY and JSON_BUILD_ARRAY omit XML Declaration (if present) from XML colums
Дата
Msg-id 10851.1543010238@sss.pgh.pa.us
обсуждение исходный текст
Ответ на BUG #15517: JSONB_BUILD_ARRAY and JSON_BUILD_ARRAY omit XMLDeclaration (if present) from XML colums  (PG Bug reporting form <noreply@postgresql.org>)
Список pgsql-bugs
=?utf-8?q?PG_Bug_reporting_form?= <noreply@postgresql.org> writes:
> 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.

I don't see anything particularly wrong here, at least not with
jsonb_build_array(): it's producing a JSON string equivalent to
the displayable value of each expression.

Now it is fair to wonder why the displayed form of the second XML value is
different from what you get from a cast-to-text.  The reason seems to be
that xml_out() tries to suppress uninteresting XML declarations, while
cast-to-text is just a binary coercion that suppresses nothing.  I don't
personally use XML enough to knowledgeably attack or defend either of
those choices ... but I do note that they've been like that for long
enough that it seems unlikely we'd consider changing them.

(If the whole idea of cast-to-text producing a different result from the
datatype output function upsets you, you're not alone, but there's lots
of precedent for that too.  Type boolean is probably the poster child
there.)

            regards, tom lane


В списке pgsql-bugs по дате отправления:

Предыдущее
От: Andrew Gierth
Дата:
Сообщение: Re: BUG #15518: intarray index crashes hard
Следующее
От: PG Bug reporting form
Дата:
Сообщение: BUG #15519: Casting float4 into int4 gets the wrong sign instead of"integer out of range" error