Hi Christian,
I'm have again performance problems. I have BaseX 8.2.1.
As you may remember, you've recommended changing
'for $x in collection("CDI")' to 'for $x in
collection("CDI")/gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification'.
However, I've discovered I cannot specify XPath while working with IDs
(db:node-pre).
It's a multi-step process: client program sends to the server the search
filter defined by end-user and get IDs.
Then there are several queries for getting different information about
this specific subset. Instead of redefining the filters, the only
condition is
where db:node-pre($x)=$ids
for having a better performance.
Once I specific XPath, it seems that the ids have no meaning. The
resultset is always empty once they are being used.
So, I've returned to use 'for $x in collection("CDI")' in the first
query of getting all IDs, but the performance is extremely low.
**I'm attaching the query and its related info using BaseXGUI (local
server) with much smaller database. The performance seems ok.
I'm using your BaseXClient.java, however I see the delay already in the
BaseX server logs:
QUERY[0] xquery version "3.0"; declare namespace queryName ='GetIDS';
declare namespace gco = "http://www.isotc211.org/2005/gco"; declare
namespace gmd = "http://www.isotc211.org/2005/gmd"; declare
namespace gml = "http://www.opengis.net/gml"; declare namespace
gmx="http://www.isotc211.org/2005/gmx"; declare namespace sdn =
"http://www.seadatanet.org"; dec lare namespace fn =
"http://www.w3.org/2005/xpath-functions"; declare namespace xs =
"http://www.w3.org/2001/XMLSchema"; declare namespace output =
"http://www.w3.org/2010/xslt-xquery-serialization"; declare option
output:method 'xml';declare option output:item-separator ","; let $db :=
db:open("CDI") for $x in $db where
$x/gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:extent/gmd:EX_Exte
nt/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:westBoundLongitude/gco:Decimal>="-5.8447265625"
and
$x/gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:extent/gmd:EX_Extent/gmd
:geographicElement... 0.17 ms
110 16:36:09.713 192.168.155.30:39211 admin OK RESULTS[0]
25957.11 ms
Then I have other slow queries, but I would like to focus in this phase
on the biggest delay.
Server: Java 1.7.0_79, VM="-XX:MaxPermSize=512m -Xms3096m -Xmx3096m"
The network layer between client and server is very fast.
P.S.
Id there an undocumented way to log the full xquery in BaseX server logs?
I've seen the -V option, but I don't use the standalone version, but:
java -cp /usr/share/java/basex.jar org.basex.BaseXServer
-d doesn't give me extra query info.
With kind regards,
Menashè
On 02/03/2015 01:13 PM, Menashè Eliezer wrote:
Hi Christian,
Thank you! The performance arrives to 0.5 sec!
The biggest improvement is related to the query rephrasing you've
suggested.
Then the latest snapshot also helps a lot!
You may want to know that in the log of the latest snapshot I see
applying attribute index for "7827"
which is not clear to the user, instead of BaseX80-20150130.124009
which has also used indexing:
applying attribute index for ("ALKY", "AYMD")
I'm attaching the first and the second launch of the query using
BaseXGUI. Relaunching the same query reduces the time from over 1
second to 0.5 second.
Some data:
BaseX80-20150130.124009
Total Time: 30676.02 ms
After using "for $x in
collection("ALL-CDIS")/gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification":
Total Time: 5456.74 ms
applying attribute index for ("ALKY", "AYMD") in log.
Second launch: 1333.71 ms
Latest snapshot (BaseX80-20150202.121033):
1st: Total Time: 1873.02 ms
2nd: Total Time: 548.62 ms
With kind regards,
Menashè
On 02/02/2015 02:02 PM, Menashè Eliezer wrote:
Hi Christian,
Thank you very much! Unfortunately I'll be at the office only tomorrow.
Menashè
On Sat, 31 Jan 2015 16:42:32 +0100, Christian Grün
<christian.gr...@gmail.com> wrote:
Hi Menashè,
With the latest snapshot [1], your original query should now be
rewritten for index access as well. Looking forward to your tests,
Christian
PS: In terms of performance, it may still be worthwhile to move
redundant paths to the for clause; but just try and see.
[1] http://files.basex.org/releases/latest/
On Fri, Jan 30, 2015 at 9:49 PM, Christian Grün
<christian.gr...@gmail.com> wrote:
Hi Menashè,
Should I expect to see the usage of an index for each of the where
phrases?
Usually, only one predicate will be rewritten for index access, and
the remaining conditions will be answered sequentially.
Have a nice weekend!
Enjoy,
Christian
Menashè
On Fri, 30 Jan 2015 18:11:59 +0100, Christian Grün
<christian.gr...@gmail.com> wrote:
Hi Menashè,
Thanks for the XML samples you sent me in private. I noticed that
the
index rewritings will only be triggered if you formulate your
query as
follows:
OLD:
for $x in collection("ALL-CDIS")
where $x/gmd:MD_Metadata/gmd:identificationInfo/...
return ...
NEW:
for $x in collection("ALL-CDIS")/gmd:MD_Metadata
where $x/gmd:identificationInfo/...
return ...
It's difficult to explain in short sentences why Variant 1 cannot be
optimized that straightforward (basically, it's quite a different
pattern to look for), but I'll check out if we can extend our
matcher
to also support these kind of queries.
So, if possible, I would recommend you for now (and at least for
testing) to move the root element test after the collection()
function. I noticed that the first three child steps are the same in
all of your conditions:
gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification
If that will be always be the case, it surely makes sense to move
all
of them to the "for" clause.
Looking forward to your updated performance tests,
Christian
_______________________________
On Fri, Jan 30, 2015 at 5:55 PM, Christian Grün
<christian.gr...@gmail.com> wrote:
Could you possibly provide me with a small snapshot of your data
sources (one, two documents might be sufficient)?
On Fri, Jan 30, 2015 at 5:52 PM, Menashè Eliezer
<melie...@ogs.trieste.it> wrote:
Almost the same speed with version 8.0.
No indexing (no "applying" in the query info).
As I've attached before, indexes are active for this DB.
With kind regards,
Menashè
On 01/30/2015 05:31 PM, Christian Grün wrote:
It's indeed interesting that your query does not use any of the
existing index structures (if they did, you would find strings
like
"applying text index" or "applying attribute index" in the query
info). Maybe/hopefully things look different with Version 8.0.
On Fri, Jan 30, 2015 at 5:26 PM, Menashè Eliezer
<melie...@ogs.trieste.it> wrote:
On 01/30/2015 05:18 PM, Christian Grün wrote:
/gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:descriptiveKeywords[1]/gmd:MD_Keywords/gmd:keyword[2]/sdn:SDN_ParameterDiscoveryCode/@codeListValue
How can I remove *?
Simply remove the predicate; a[*]/b is the same as a/b.
Maybe I wasn't clear. The actual number appears in the xml file,
e.g.,
gmd:descriptiveKeywords[1]
Anyway, I've removed all [*] and I get the same correct result,
however
the
processing time is doubled...
* In some cases, if you know that an element name is
distinct,
you
can
get rid of all the explicit child steps and directly address
the
node
via the descendant axis.
Thanks, but it's not relevant in my case.
Is it because the element names are not distinct? Or is it
because
your input form allows users to choose arbitrary paths for
arbitrary
documents?
The element names are not distinct.
Sure, I'l also try BaseX 8.0 and compare. Should I recreate
the
db
importing
the xml files for testing the improved indexing?
We have actually improved support for collections, but the
database
format itself has not changed, so it shouldn't make a
difference
in
your case.
Christian
[1] http://files.basex.org/releases/latest
On Fri, Jan 30, 2015 at 3:55 PM, Menashè Eliezer
<melie...@ogs.trieste.it> wrote:
Hello,
I wonder if the attached query can be optimised. I'm
attaching
all
relevant
information.
Basex 7.9, Debian, powerful server.
This is just an example. The queries will be built based
on a
compilation
of
a search form.
Any help would be appreciated.
40 seconds are not acceptable.
--
With kind regards,
Menashè
--
With kind regards,
Menashè
With kind regards,
Menashè
--
Menashè
xquery version "3.0"; declare namespace queryName ='GetIDS'; declare namespace
gco = "http://www.isotc211.org/2005/gco"; declare namespace gmd =
"http://www.isotc211.org/2005/gmd"; declare namespace gml =
"http://www.opengis.net/gml"; declare namespace
gmx="http://www.isotc211.org/2005/gmx"; declare namespace sdn =
"http://www.seadatanet.org"; declare namespace fn =
"http://www.w3.org/2005/xpath-functions"; declare namespace xs =
"http://www.w3.org/2001/XMLSchema"; declare namespace output =
"http://www.w3.org/2010/xslt-xquery-serialization"; declare option
output:method 'xml';declare option output:item-separator ",";
let $db := db:open("CDI")
for $x in $db
where
$x/gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:westBoundLongitude/gco:Decimal>="-5.8447265625"
and
$x/gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:eastBoundLongitude/gco:Decimal<="20.5224609375"
and
$x/gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:southBoundLatitude/gco:Decimal>="33.02708758002874"
and
$x/gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:northBoundLatitude/gco:Decimal<="46.46813299215554"
and
string($x/gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod/gml:beginPosition)>="2012-03-17"
and
string($x/gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod/gml:beginPosition)<="2015-06-22"
and
$x/gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:resourceConstraints/gmd:MD_LegalConstraints/gmd:otherConstraints/gmx:Anchor/text()
= ("unrestricted")
return db:node-pre($x)
Query info:
Compiling:
- pre-evaluating db:open("CDI")
- rewriting
($x_1/gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:westBoundLongitude/gco:Decimal
>= "-5.8447265625")
- rewriting
($x_1/gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:eastBoundLongitude/gco:Decimal
<= "20.5224609375")
- rewriting
($x_1/gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:southBoundLatitude/gco:Decimal
>= "33.02708758002874")
- rewriting
($x_1/gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:northBoundLatitude/gco:Decimal
<= "46.46813299215554")
- rewriting
(string($x_1/gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod/gml:beginPosition)
>= "2012-03-17")
- rewriting
(string($x_1/gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod/gml:beginPosition)
<= "2015-06-22")
- rewriting ("-5.8447265625" <=
$x_1/gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:westBoundLongitude/gco:Decimal
and
$x_1/gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:eastBoundLongitude/gco:Decimal
<= "20.5224609375" and "33.02708758002874" <=
$x_1/gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:southBoundLatitude/gco:Decimal
and
$x_1/gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:northBoundLatitude/gco:Decimal
<= "46.46813299215554" and "2012-03-17" <=
string($x_1/gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod/gml:beginPosition)
and
string($x_1/gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod/gml:beginPosition)
<= "2015-06-22" and
($x_1/gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:resourceConstraints/gmd:MD_LegalConstraints/gmd:otherConstraints/gmx:Anchor/text()
= "unrestricted"))
- inlining $db_0
- applying text index for "unrestricted"
- rewriting where clause(s)
Query:
xquery version "3.0"; declare namespace queryName ='GetIDS'; declare namespace
gco = "http://www.isotc211.org/2005/gco"; declare namespace gmd =
"http://www.isotc211.org/2005/gmd"; declare namespace gml =
"http://www.opengis.net/gml"; declare namespace
gmx="http://www.isotc211.org/2005/gmx"; declare namespace sdn =
"http://www.seadatanet.org"; declare namespace fn =
"http://www.w3.org/2005/xpath-functions"; declare namespace xs =
"http://www.w3.org/2001/XMLSchema"; declare namespace output =
"http://www.w3.org/2010/xslt-xquery-serialization"; declare option
output:method 'xml';declare option output:item-separator ","; let $db :=
db:open("CDI") for $x in $db where
$x/gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:westBoundLongitude/gco:Decimal>="-5.8447265625"
and
$x/gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:eastBoundLongitude/gco:Decimal<="20.5224609375"
and
$x/gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:southBoundLatitude/gco:Decimal>="33.02708758002874"
and
$x/gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:northBoundLatitude/gco:Decimal<="46.46813299215554"
and
string($x/gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod/gml:beginPosition)>="2012-03-17"
and
string($x/gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod/gml:beginPosition)<="2015-06-22"
and
$x/gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:resourceConstraints/gmd:MD_LegalConstraints/gmd:otherConstraints/gmx:Anchor/text()
= ("unrestricted") return db:node-pre($x)
Optimized Query:
for $x_1 in db:text("CDI",
"unrestricted")/parent::gmx:Anchor/parent::gmd:otherConstraints/parent::gmd:MD_LegalConstraints/parent::gmd:resourceConstraints/parent::sdn:SDN_DataIdentification/parent::gmd:identificationInfo/parent::gmd:MD_Metadata/..[self::document-node()]["-5.8447265625"
<=
gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:westBoundLongitude/gco:Decimal][gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:eastBoundLongitude/gco:Decimal
<= "20.5224609375"]["33.02708758002874" <=
gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:southBoundLatitude/gco:Decimal][gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:northBoundLatitude/gco:Decimal
<= "46.46813299215554"]["2012-03-17" <=
string(gmd:MD_Metadata/gmd:identificationInfo/sdn:SDN_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod/gml:beginPosition)
<= "2015-06-22"] return db:node-pre($x_1)
Result:
- Hit(s): 2 Items
- Updated: 0 Items
- Printed: 13 Bytes
- Read Locking: local [CDI]
- Write Locking: none
Timing:
- Parsing: 6.01 ms
- Compiling: 27.59 ms
- Evaluating: 74.45 ms
- Printing: 1.04 ms
- Total Time: 109.09 ms
Query plan:
<QueryPlan compiled="true">
<GFLWOR>
<For>
<Var name="$x" id="1"/>
<CachedPath>
<ValueAccess data="CDI" type="TEXT">
<Str value="unrestricted" type="xs:string"/>
</ValueAccess>
<IterStep axis="parent" test="gmx:Anchor"/>
<IterStep axis="parent" test="gmd:otherConstraints"/>
<IterStep axis="parent" test="gmd:MD_LegalConstraints"/>
<IterStep axis="parent" test="gmd:resourceConstraints"/>
<IterStep axis="parent" test="sdn:SDN_DataIdentification"/>
<IterStep axis="parent" test="gmd:identificationInfo"/>
<IterStep axis="parent" test="gmd:MD_Metadata"/>
<CachedStep axis="parent" test="node()">
<CachedPath>
<IterStep axis="self" test="document-node()"/>
</CachedPath>
<CmpSR min="-5.8447265625" max="">
<CachedPath>
<IterStep axis="child" test="gmd:MD_Metadata"/>
<IterStep axis="child" test="gmd:identificationInfo"/>
<IterStep axis="child" test="sdn:SDN_DataIdentification"/>
<IterStep axis="child" test="gmd:extent"/>
<IterStep axis="child" test="gmd:EX_Extent"/>
<IterStep axis="child" test="gmd:geographicElement"/>
<IterStep axis="child" test="gmd:EX_GeographicBoundingBox"/>
<IterStep axis="child" test="gmd:westBoundLongitude"/>
<IterStep axis="child" test="gco:Decimal"/>
</CachedPath>
</CmpSR>
<CmpSR min="" max="20.5224609375">
<CachedPath>
<IterStep axis="child" test="gmd:MD_Metadata"/>
<IterStep axis="child" test="gmd:identificationInfo"/>
<IterStep axis="child" test="sdn:SDN_DataIdentification"/>
<IterStep axis="child" test="gmd:extent"/>
<IterStep axis="child" test="gmd:EX_Extent"/>
<IterStep axis="child" test="gmd:geographicElement"/>
<IterStep axis="child" test="gmd:EX_GeographicBoundingBox"/>
<IterStep axis="child" test="gmd:eastBoundLongitude"/>
<IterStep axis="child" test="gco:Decimal"/>
</CachedPath>
</CmpSR>
<CmpSR min="33.02708758002874" max="">
<CachedPath>
<IterStep axis="child" test="gmd:MD_Metadata"/>
<IterStep axis="child" test="gmd:identificationInfo"/>
<IterStep axis="child" test="sdn:SDN_DataIdentification"/>
<IterStep axis="child" test="gmd:extent"/>
<IterStep axis="child" test="gmd:EX_Extent"/>
<IterStep axis="child" test="gmd:geographicElement"/>
<IterStep axis="child" test="gmd:EX_GeographicBoundingBox"/>
<IterStep axis="child" test="gmd:southBoundLatitude"/>
<IterStep axis="child" test="gco:Decimal"/>
</CachedPath>
</CmpSR>
<CmpSR min="" max="46.46813299215554">
<CachedPath>
<IterStep axis="child" test="gmd:MD_Metadata"/>
<IterStep axis="child" test="gmd:identificationInfo"/>
<IterStep axis="child" test="sdn:SDN_DataIdentification"/>
<IterStep axis="child" test="gmd:extent"/>
<IterStep axis="child" test="gmd:EX_Extent"/>
<IterStep axis="child" test="gmd:geographicElement"/>
<IterStep axis="child" test="gmd:EX_GeographicBoundingBox"/>
<IterStep axis="child" test="gmd:northBoundLatitude"/>
<IterStep axis="child" test="gco:Decimal"/>
</CachedPath>
</CmpSR>
<CmpSR min="2012-03-17" max="2015-06-22">
<FnString name="string([item])">
<CachedPath>
<IterStep axis="child" test="gmd:MD_Metadata"/>
<IterStep axis="child" test="gmd:identificationInfo"/>
<IterStep axis="child" test="sdn:SDN_DataIdentification"/>
<IterStep axis="child" test="gmd:extent"/>
<IterStep axis="child" test="gmd:EX_Extent"/>
<IterStep axis="child" test="gmd:temporalElement"/>
<IterStep axis="child" test="gmd:EX_TemporalExtent"/>
<IterStep axis="child" test="gmd:extent"/>
<IterStep axis="child" test="gml:TimePeriod"/>
<IterStep axis="child" test="gml:beginPosition"/>
</CachedPath>
</FnString>
</CmpSR>
</CachedStep>
</CachedPath>
</For>
<DbNodePre name="node-pre(nodes)">
<VarRef>
<Var name="$x" id="1"/>
</VarRef>
</DbNodePre>
</GFLWOR>
</QueryPlan>