Search in sources :

Example 11 with KVIndex

use of com.questdb.store.KVIndex in project questdb by bluestreak01.

the class KvIndexSymAllHeadRowSource method prepareCursor.

@Override
public RowCursor prepareCursor(PartitionSlice slice) {
    try {
        Partition partition = rec.partition = slice.partition.open();
        KVIndex index = partition.getIndexForColumn(columnIndex);
        long lo = slice.lo - 1;
        long hi = slice.calcHi ? partition.size() : slice.hi + 1;
        rows.clear();
        for (int i = 0, n = valueCount; i < n; i++) {
            IndexCursor c = index.cursor(i);
            while (c.hasNext()) {
                long r = rec.rowid = c.next();
                if (r > lo && r < hi && (filter == null || filter.getBool(rec))) {
                    rows.add(r);
                    break;
                }
            }
        }
        rows.sort();
        cursor = 0;
        return this;
    } catch (JournalException e) {
        throw new JournalRuntimeException(e);
    }
}
Also used : Partition(com.questdb.store.Partition) JournalException(com.questdb.std.ex.JournalException) IndexCursor(com.questdb.store.IndexCursor) JournalRuntimeException(com.questdb.common.JournalRuntimeException) KVIndex(com.questdb.store.KVIndex)

Example 12 with KVIndex

use of com.questdb.store.KVIndex in project questdb by bluestreak01.

the class KvIndexSymListHeadRowSource method prepareCursor.

@Override
public RowCursor prepareCursor(PartitionSlice slice) {
    try {
        Partition partition = rec.partition = slice.partition.open();
        KVIndex index = partition.getIndexForColumn(columnIndex);
        long lo = slice.lo - 1;
        long hi = slice.calcHi ? partition.size() : slice.hi + 1;
        rows.clear();
        for (int i = 0, n = keys.size(); i < n; i++) {
            IndexCursor c = index.cursor(keys.getQuick(i));
            long r = -1;
            boolean found = false;
            while (c.hasNext()) {
                r = rec.rowid = c.next();
                if (r > lo && r < hi && (filter == null || filter.getBool(rec))) {
                    found = true;
                    break;
                }
            }
            if (found) {
                rows.add(r);
            }
        }
        rows.sort();
        keyIndex = 0;
        return this;
    } catch (JournalException e) {
        throw new JournalRuntimeException(e);
    }
}
Also used : Partition(com.questdb.store.Partition) JournalException(com.questdb.std.ex.JournalException) IndexCursor(com.questdb.store.IndexCursor) JournalRuntimeException(com.questdb.common.JournalRuntimeException) KVIndex(com.questdb.store.KVIndex)

Example 13 with KVIndex

use of com.questdb.store.KVIndex in project questdb by bluestreak01.

the class KvIndexSymLookupRowSource method prepareCursor.

@Override
public RowCursor prepareCursor(PartitionSlice slice) {
    try {
        KVIndex index = slice.partition.getIndexForColumn(columnIndex);
        this.indexCursor = newCursor ? index.newFwdCursor(symbolKey) : index.fwdCursor(symbolKey);
        this.full = slice.lo == 0 && slice.calcHi;
        this.lo = slice.lo - 1;
        this.hi = slice.calcHi ? slice.partition.open().size() : slice.hi + 1;
    } catch (JournalException e) {
        throw new JournalRuntimeException(e);
    }
    return this;
}
Also used : JournalException(com.questdb.std.ex.JournalException) JournalRuntimeException(com.questdb.common.JournalRuntimeException) KVIndex(com.questdb.store.KVIndex)

Aggregations

KVIndex (com.questdb.store.KVIndex)13 JournalException (com.questdb.std.ex.JournalException)12 JournalRuntimeException (com.questdb.common.JournalRuntimeException)9 IndexCursor (com.questdb.store.IndexCursor)9 Partition (com.questdb.store.Partition)8 FixedColumn (com.questdb.store.FixedColumn)3 VariableColumn (com.questdb.store.VariableColumn)2 IntLongPriorityQueue (com.questdb.std.IntLongPriorityQueue)1 Rnd (com.questdb.std.Rnd)1 AbstractTest (com.questdb.test.tools.AbstractTest)1 Test (org.junit.Test)1