Hi,
I have faced some strange case as below. s1 and s variables has to have same value because their selecting operator same.
Is there anything I miss? Why xquery is not calculating boolean for each sequence?
let $ns := (4 , 5, 6, 7, 8, 3, 7)
let $ind := (2,5,7)
let $j := 1
let $i1 := $ind[$j]
let $i2 := $ind[$j+1]
let $s := $ns[fn:position() < $i2 and fn:position() > $i1]
let $s1 := $ns[fn:position() > $i1 and fn:position() < $i2 ]
return <result>
<s>{$s}</s> <s1>{$s1}</s1>
</result>
<result>
<s>6 7</s>
<s1>6 7 8 3</s1>
</result>
Query: let $ns := (4 , 5, 6, 7, 8, 3, 7)
Compiling:
- pre-evaluating (4, 5, 6, 7, 8, 3, 7)
- binding static variable $ns
- pre-evaluating (2, 5, 7)
- binding static variable $ind
- binding static variable $j
- pre-evaluating 1 + 1
- rewriting And expression to predicate(s)
- rewriting fn:boolean(fn:position() < $i2)
- rewriting fn:boolean(fn:position() > $i1)
- rewriting And expression to predicate(s)
- rewriting fn:boolean(fn:position() > $i1)
- rewriting fn:boolean(fn:position() < $i2)
- removing variable $ns
- removing variable $ind
- removing variable $j
- moving for/let clauses
Result: let $i2 := ((2, 5, 7))[position() = 2] let $i1 := ((2, 5, 7))[position() = 1] let $s1 := ((4, 5, 6, 7, 8, 3, 7))[fn:position() > $i1][fn:position() < $i2] let $s := ((4, 5, 6, 7, 8, 3, 7))[fn:position() < $i2][fn:position() > $i1] return element { "result" } { element { "s" } { $s }, element { "s1" } { $s1 } }
Timing:
- Parsing: 0.14 ms
- Compiling: 0.56 ms
- Evaluating: 0.46 ms
- Printing: 0.05 ms
- Total Time: 1.23 ms
Result:
- Results: 1 Item
- Updated: 0 Items
- Printed: 50 Bytes
Query plan:
<FLWR>
<Let var="$i2">
<IterPosFilter>
<ItrSeq size="3">
<Item value="2" type="integer"/>
<Item value="5" type="integer"/>
<Item value="7" type="integer"/>
</ItrSeq>
<Pos min="2" max="2"/>
</IterPosFilter>
</Let>
<Let var="$i1">
<IterPosFilter>
<ItrSeq size="3">
<Item value="2" type="integer"/>
<Item value="5" type="integer"/>
<Item value="7" type="integer"/>
</ItrSeq>
<Pos min="1" max="1"/>
</IterPosFilter>
</Let>
<Let var="$s1">
<Filter>
<ItrSeq size="7">
<Item value="4" type="integer"/>
<Item value="5" type="integer"/>
<Item value="6" type="integer"/>
<Item value="7" type="integer"/>
<Item value="8" type="integer"/>
</ItrSeq>
<CmpG op=">">
<FNAcc name="position()"/>
<VarRef name="$i1"/>
</CmpG>
<CmpG op="<">
<FNAcc name="position()"/>
<VarRef name="$i2"/>
</CmpG>
</Filter>
</Let>
<Let var="$s">
<Filter>
<ItrSeq size="7">
<Item value="4" type="integer"/>
<Item value="5" type="integer"/>
<Item value="6" type="integer"/>
<Item value="7" type="integer"/>
<Item value="8" type="integer"/>
</ItrSeq>
<CmpG op="<">
<FNAcc name="position()"/>
<VarRef name="$i2"/>
</CmpG>
<CmpG op=">">
<FNAcc name="position()"/>
<VarRef name="$i1"/>
</CmpG>
</Filter>
</Let>
<Return>
<CElem>
<Item value="result" type="xs:QName"/>
<CElem>
<Item value="s" type="xs:QName"/>
<VarRef name="$s"/>
</CElem>
<CElem>
<Item value="s1" type="xs:QName"/>
<VarRef name="$s1"/>
</CElem>
</CElem>
</Return>
</FLWR>
Hi,can you please tell me how I apply the fulltext index for attributes?Many thanks.Cheers,An
_______________________________________________
BaseX-Talk mailing list
BaseX-Talk@mailman.uni-konstanz.de
https://mailman.uni-konstanz.de/mailman/listinfo/basex-talk