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="&gt;">
        <FNAcc name="position()"/>
        <VarRef name="$i1"/>
      </CmpG>
      <CmpG op="&lt;">
        <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="&lt;">
        <FNAcc name="position()"/>
        <VarRef name="$i2"/>
      </CmpG>
      <CmpG op="&gt;">
        <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>
On Wed, Oct 19, 2011 at 7:04 AM, Truong An Nguyen <ngtruongan@gmail.com> wrote:
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