]
dalex dalex commented on TEIID-5541:
------------------------------------
[~shawkins] do you mean by the phrase "So for now document projection will not be
allowed when root() is used." that now such query:
{code:sql}
Begin
Declare xml x =
'<root><def><test1>10</test1><test1>20</test1></def><abc>22</abc></root>';
Select * From XmlTable (
'/root/abc'
Passing x
Columns
a string Path '.'
,b string Path 'root()'
)xx;
End;;
{code}
will return empty values for a and b though before your changes it returned 22 for a and
102022 for b.
I'm afraid that it's incorrect solution. At least it breaks previous behavior.
Incorrect parsing of xml with XmlTable
--------------------------------------
Key: TEIID-5541
URL:
https://issues.jboss.org/browse/TEIID-5541
Project: Teiid
Issue Type: Bug
Components: Query Engine
Affects Versions: 11.1
Environment: teiid-11.1.0 (from 01.09.2018) on WildFly Full 11.0.0.Final (WildFly
Core 3.0.8.Final)
Reporter: dalex dalex
Assignee: Steven Hawkins
Priority: Blocker
Fix For: 11.0.3, 11.1.2, 12.0, 11.2.1
Running the query:
{code:sql}
Begin
Declare xml xcontent = '<root
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<report>
<data>
<year xsi:type="decimal">2018</year>
</data>
</report>
<waitSeconds xsi:type="decimal">13</waitSeconds>
</root>' ;
Select *
From
XmlTable(
XmlNamespaces ('http://www.w3.org/2001/XMLSchema-instance' as xsi),
'/root/report/data'
PASSING xcontent
Columns
"year" integer,
waitSeconds xml Path 'root()/root/waitSeconds',
waitSecondsStr string Path 'root()/root/waitSeconds'
)a ;
End ;;
{code}
and having a look at the structure we can see that the value 13 should be returned, while
the value is not picked from xml for result.