BUG #16332: The xmltable function returns 'comment()' as unusable xml appended together and having no xml tags

From: PG Bug reporting form <noreply(at)postgresql(dot)org>
To: pgsql-bugs(at)lists(dot)postgresql(dot)org
Cc: david_sisson(at)dell(dot)com
Subject: BUG #16332: The xmltable function returns 'comment()' as unusable xml appended together and having no xml tags
Date: 2020-04-01 15:20:33
Message-ID: 16332-e5840cf03eab1a90@postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

The following bug has been logged on the website:

Bug reference: 16332
Logged by: David Sisson
Email address: david_sisson(at)dell(dot)com
PostgreSQL version: 11.6
Operating system: Windows 10
Description:

We are trying to use the new faster "xmltable" feature in PostgreSQL to read
XML files.
We have to be able to read and parse commented out sections of the xml
files.
Without being able to read and parse XML comments we won't be able to use
this.

(full sample below)

When using this: comments xml path 'comment()'

We are getting this:
&lt;Attribute Name="Test Comment 001"&gt;Testing comment
001&lt;/Attribute&gt; &lt;Attribute Name="Test Comment 002"&gt;Testing
comment 002&lt;/Attribute&gt; &lt;Attribute Name="Test Comment
002"&gt;Testing comment 003&lt;/Attribute&gt;"

As with everything else I would have expected to get the result as readable
xml.

It works for elements just not for comments.
For example this: attribute_xml xml path 'Attribute/self::node()',

Returns this which we can use.
"<Attribute Name="TestAttribute001">attribute element value
001</Attribute><Attribute Name="TestAttribute002">attribute element value
002</Attribute><Attribute Name="TestAttribute003">attribute element value
003</Attribute>"

with
_xml(raw_xml) as
(
select
'
<SystemConfiguration Model="Test01">

<Component Name="Test 001">
<Attribute Name="TestAttribute001">attribute element value
001</Attribute>
<Attribute Name="TestAttribute002">attribute element value
002</Attribute>
<!-- <Attribute Name="Test Comment 001">Testing comment
001</Attribute>-->
<!-- <Attribute Name="Test Comment 002">Testing comment
002</Attribute>-->
<!-- <Attribute Name="Test Comment 002">Testing comment
003</Attribute>-->
<Attribute Name="TestAttribute003">attribute element value
003</Attribute>
</Component>
</SystemConfiguration>
'::xml
),
_components(name, attribute_xml, comment_xml) as
(
select
root_components.fqdd,
root_components.attribute_xml,
root_components.comments
from
_xml,
xmltable
(
'//SystemConfiguration/Component'
passing raw_xml
columns
fqdd text path '@Name',
attribute_xml xml path 'Attribute/self::node()',
comments xml path 'comment()'
) as root_components


)
select * from _components

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Pavel Stehule 2020-04-01 16:12:06 Re: BUG #16332: The xmltable function returns 'comment()' as unusable xml appended together and having no xml tags
Previous Message Dmitry Dolgov 2020-04-01 12:01:17 Re: BUG #16325: Assert failure on partitioning by int for a text value with a collation