[teiid-issues] [JBoss JIRA] (TEIID-5541) Incorrect parsing of xml with XmlTable
Steven Hawkins (Jira)
issues at jboss.org
Thu Nov 15 10:12:00 EST 2018
[ https://issues.jboss.org/browse/TEIID-5541?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
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.
--
This message was sent by Atlassian Jira
(v7.12.1#712002)
More information about the teiid-issues
mailing list