[MarkLogic Dev General] weird xpath behaviour
geert.josten at dayon.nl
Thu Feb 23 06:21:07 PST 2012
Evan pointed out the following to me recently. / at the start of an XPath
expression is interpreted within MarkLogic as ‘collection()/’. A / within a
predicate, however, is not. It is effectively interpreted as ‘root()/ ‘.
*Van:* general-bounces at developer.marklogic.com [mailto:
general-bounces at developer.marklogic.com] *Namens *Szabolcs Illes
*Verzonden:* donderdag 23 februari 2012 13:54
*Aan:* general at developer.marklogic.com
*Onderwerp:* [MarkLogic Dev General] weird xpath behaviour
I have seen this before, but came across again, so I thought ask this time.
Same/similar xquery but different results:
let $ids := /HorseRacingCard/Meeting[@country eq "England" and
return (/HorseRacing/Meeting[@id = $ids] )
returns expected results.
*Version 2*: Same as 1 but ids vatriable is just inlined
(/HorseRacing/Meeting[@id = /HorseRacingCard/Meeting[@country eq "England"
and AdvancedGoing]/@id ] )
returns nothing [ slow, but that’s expected: ]
Other than Version 2 is NOT optimal since the expression inside the
predicate is evaluated for each sequence item, I guess it should return the
(/HorseRacing/Meeting[@id =* fn:collection()/*HorseRacingCard/Meeting[@country
eq "England" and AdvancedGoing]/@id ] )
Returns expected results and it’s fast, expression is only evaluated once
Can someone shed some light why Version 2 is not returning any results?
Could it be a bug in the optimizer?
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the General