Package dovetaildb.querynode

Examples of dovetaildb.querynode.QueryNode


 
  @Override
  public QueryNode getRange(final Range range, long revNum) {
    ArrayList<EditRec> all = revs.get((int)revNum);
    if (all.size() == 0) return null;
    QueryNode world = new WorldQueryNode(all);
    return FilteredQueryNode.make(world, range);
  }
View Full Code Here


  @Override
  public QueryNode getTerms(List<Bytes> terms, long revNum) {
    ArrayList<QueryNode> termNodes = new ArrayList<QueryNode>();
    for (Bytes term : terms) {
      QueryNode node = getRange(new Range(term, ArrayBytes.EMPTY_BYTES,
          ArrayBytes.EMPTY_BYTES, true, true), revNum);
      if (node != null) termNodes.add(node);
    }
    return OrderedOrQueryNode.make(termNodes);
  }
View Full Code Here

      table = rec.getTokenTable();
    }
    range.propagatePrefixIntoRange(slice.getSlicePosition());
    range.prefix = range.prefix.flatten();
    if (table == null || (matchesAll && rec != null)) {
      QueryNode n = new BlueSteelPostingListQuery(range.prefix, rec);
      return FilteredQueryNode.make(n, range);
    } else {
      return makeMatching(table, range);
    }
  }
View Full Code Here

    for(Iterator<TokenRec> recItr = table.getTokenRecs(); recItr.hasNext();) {
      TokenRec rec = recItr.next();
      int tok = rec.token & 0xFF;
      if (top <= tok && tok <= bottom) {
        Bytes subPrefix = CompoundBytes.make(range.prefix, ArrayBytes.SINGLE_BYTE_OBJECTS[tok]);
        QueryNode n = new BlueSteelPostingListQuery(subPrefix, rec);
        if (top == tok || tok == bottom) {
          n = FilteredQueryNode.make(n, range);
        }
        if (n != null) nodes.add(n);
      }
View Full Code Here

    }
    if (minTerm == maxTerm && minTerm != null) {
      maxTerm = minTerm.copy();
    }
    range.setBoundsAndExtractPrefix(minTerm, maxTerm);
    QueryNode node = getRange(range, revNum);
    if (node == null) return null;
    return FilterLiteralsQueryNode.make(node, terms);
  }
View Full Code Here

    if (i==0) return 0;
    return 63-Long.numberOfLeadingZeros(i);
  }
  public static Bytes[] determineCompressionTable(BagIndex index, double lengthToRowRatio) {
    long forkThreshold = 25;
    QueryNode query = index.getRange(Range.OPEN_RANGE, index.getCurrentRevNum());
    ByteTable root = new ByteTable();
    if (query == null) return EMPTY_BYTE_ARRAY;
    SlicedBytes slice = new SlicedBytes(ArrayBytes.EMPTY_BYTES, 0);
    do {
      Bytes term = query.term();
      slice.reInitialize(query.term(), 0, term.getLength());
      root.count(slice, forkThreshold);
    } while(query.anyNext());
    long counted = root.hits;
    int numSlots = 1 << integerLogBase2RoundDown((long)(Math.sqrt(counted)/lengthToRowRatio));
    long minHits = (counted / numSlots) >> 8;
    SlotBuffer slotBuffer = new SlotBuffer();
    root.buildSlotBuffer(ArrayBytes.EMPTY_BYTES, minHits, slotBuffer);
View Full Code Here

        range.propagatePrefixIntoRange(0);
        range.setBoundsAndExtractPrefix(
            compress(range.getMinSuffix()),
            compress(range.getMaxSuffix()));
      }
      QueryNode subRet = subQueryNode.specialize(range);
      if (subRet == subQueryNode) return this;
      if (subRet == null) return null;
      return new PrefixUncompressedQueryNode(subRet);
    }
View Full Code Here

    } catch (Exception e) {
      throw new RuntimeException(e);
    }
    // figure out headTxn
    long revNum = map.getCurrentRevNum();
    QueryNode query = map.getRange(Range.OPEN_RANGE, revNum);
    if (query == null) {
      headTxn = -1;
    } else {
      long docId = query.doc();
      do {
        if (!query.positionSet(docId, ArrayBytes.EMPTY_BYTES)) {
          throw new RuntimeException();
        }
        do {
          Bytes nameTxn = query.term();
          int nameTxnLen = nameTxn.getLength();
          long txn = Util.beBytesToLong(nameTxn.getBytes(nameTxnLen - 8, 8), 0);
          if (txn > headTxn) headTxn = txn;
        } while (query.positionNext());
        docId = query.nextValidDocId(docId + 1);
      } while (docId < Long.MAX_VALUE);
//      do {
//        long txn = Util.beBytesToLong(query.term().getBytes(0, 8), 0);
//        if (txn > headTxn) headTxn = txn;
//      } while (query.next());
View Full Code Here

    long mapRevNum = map.getCurrentRevNum();
    Range range = new Range(ArrayBytes.EMPTY_BYTES, null, null, true, true);
    range.setBoundsAndExtractPrefix(
        termForTxnBag(bag, 0),
        termForTxnBag(bag, txnId));
    QueryNode query = map.getRange(range, mapRevNum);
    long revNum = 0;
    if (query != null) {
      do {
        long curRev = query.doc();
        if (curRev > revNum) revNum = curRev;
      } while(query.nextTerm() != NextStatus.AT_END);
    }
    return revNum;
    /*
    QueryNode query = map.getTerm(termForTxnBag(txnId, bag), revNum);
    if (query != null) {
View Full Code Here

    assertEquals(null,index.getTerm(t1, revNum));
  }
 
  public void checkTwoInserts(long revNum) {
    long doc0, doc1, doc2;
    QueryNode s;
    QueryNode allTerms = index.getRange(ArrayBytes.EMPTY_BYTES, null, null, false, false, revNum);
    s = index.getTerm(t1, revNum);
    assertTrue(s.next());
    doc0 = s.doc();
    assertFalse(s.next());
   
    assertTrue(allTerms.skipTo(doc0));
    assertEquals(0, allTerms.term().compareTo(t1));
    assertEquals(NextStatus.NEXT_TERM, allTerms.nextTerm());
    assertEquals(0, allTerms.term().compareTo(t2));
    assertEquals(NextStatus.NEXT_TERM, allTerms.nextTerm());
    assertEquals(0, allTerms.term().compareTo(t4));
    assertEquals(NextStatus.NEXT_TERM, allTerms.nextTerm());
    assertEquals(0, allTerms.term().compareTo(t5));
    assertEquals(NextStatus.AT_END, allTerms.nextTerm());
   
    s = index.getTerm(t1, revNum);
    doc1 = s.doc();
    assertTrue(s.next());
    doc2 = s.doc();
    assertFalse(s.next());
    assertTrue(doc1 < doc2);
   
    allTerms = index.getRange(ArrayBytes.EMPTY_BYTES, null, null, false, false, revNum);
    assertTrue(allTerms.skipTo(doc1));
    assertEquals(0, allTerms.term().compareTo(t1));
    assertEquals(NextStatus.NEXT_TERM, allTerms.nextTerm());
    assertEquals(0, allTerms.term().compareTo(t3));
    assertEquals(NextStatus.NEXT_DOC, allTerms.nextTerm());
   
    s = index.getRange(t0, t3, t4, true,  true,  revNum);
    assertNull(s);
    s = index.getRange(t0, t3, t4, true,  false, revNum);
    assertNotNull(s);
View Full Code Here

TOP

Related Classes of dovetaildb.querynode.QueryNode

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.