Hi Szabolcs,
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()/ ‘. Kind regards, Geert *Van:* general-boun...@developer.marklogic.com [mailto: general-boun...@developer.marklogic.com] *Namens *Szabolcs Illes *Verzonden:* donderdag 23 februari 2012 13:54 *Aan:* general@developer.marklogic.com *Onderwerp:* [MarkLogic Dev General] weird xpath behaviour Hi, I have seen this before, but came across again, so I thought ask this time. Same/similar xquery but different results: *Version 1:* let $ids := /HorseRacingCard/Meeting[@country eq "England" and AdvancedGoing]/@id return (/HorseRacing/Meeting[@id = $ids] )[1] 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 ] )[1] 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 same results. *Version 3:* (/HorseRacing/Meeting[@id =* fn:collection()/*HorseRacingCard/Meeting[@country eq "England" and AdvancedGoing]/@id ] )[1] 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? Thanks, Szabolcs
_______________________________________________ General mailing list General@developer.marklogic.com http://developer.marklogic.com/mailman/listinfo/general