[xquery-talk] where clause

daniela florescu dflorescu at me.com
Thu Mar 28 08:23:02 PST 2013


in addition to the queries I already gave you with count and groupby, here is another one in 
pure XQuery  1.0  that cannot be reduced

declare function foo($x) 
    if ($x/@a) then $x else <b/>

for $x in Blah1
for $y in Blah2
let $z := foo($y)
where $z is $z
return $x

(variable $z cannot be unfolded because of the generation of new nodes, and then the where cannot be move up because
of the let)

Sorry, I felt like being twisted minded this morning :-)

XQuery is wicked :-)


On Mar 27, 2013, at 7:10 PM, Michael Sokolov wrote:

> (forwarding Daniela's message)
> Michael,
> I think the ones with grouby and a where after the groupby are impossible to rewrite
> in general (remember this from my optimizing SQL days). In this case the WHERE is the good old
> HAVING clause of SQL.
> Something along the lines of
> for $x in blah
> for $y in blah
> group by $z:= $x/a, $t:= $y/b
> where $z+$t >25
> return $z
> I am putting an informal syntax, obviously.
> Another case is when the COUNT clause exists. You cannot move the where up and down in the tuple stream in
> such a case.
> for $x in Blah1
> for $y in Blah2
> count $i
> where $x/a eq $y/b
> return something using $i
> Dana
> On Mar 27, 2013, at 5:31 AM, Michael Sokolov wrote:
>> I'm trying to come up with examples in which "where" clauses cannot be rewritten as XPath predicates.  So far, the ones I have all involve an "at" counter.  Are there others?
>> --
>> Michael Sokolov
>> Senior Architect
>> Safari Books Online
>> _______________________________________________
>> talk at x-query.com
>> http://x-query.com/mailman/listinfo/talk
> _______________________________________________
> talk at x-query.com
> http://x-query.com/mailman/listinfo/talk

More information about the talk mailing list