]
Steven Hawkins resolved TEIID-5541.
-----------------------------------
Resolution: Done
It's a little easier to read prior to the downward reduction:
//root
{code}
ancestor-or-self document-node()
descendant element(Q{}root)
{code}
root()/root
{code}
ancestor-or-self element()
descendant element()
childelement(Q{}root)
{code}
Note that the arc when using the root function is looking for an ancestor element - not
specifically the document node - and then any descendant. That is what is causing the
path map filter to accept all elements.
So there were two choices for a fix here. Either scan the path map arcs for something
that looks like this and disable projection or attempt to repair (effectively trying to
replace root()/ with //). Or scan the expressions for the root function and disable
projection. The latter was simpler to implement. So for now document projection will not
be allowed when root() is used.
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
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.