@Override public KeyIterator getKeys(final KeyRangeQuery query, final StoreTransaction txh) throws BackendException { return new RowIterator(kcv.subMap(query.getKeyStart(), query.getKeyEnd()).entrySet().iterator(), query, txh); }
public static boolean matches(KeyRangeQuery query, StaticBuffer key, StaticBuffer column) { return matches(query,column) && query.getKeyStart().compareTo(key)<=0 && query.getKeyEnd().compareTo(key)>0; }
@Override public KeyIterator getKeys(final KeyRangeQuery keyQuery, final StoreTransaction txh) throws BackendException { final KVQuery query = new KVQuery( concatenatePrefix(adjustToLength(keyQuery.getKeyStart()), keyQuery.getSliceStart()), concatenatePrefix(adjustToLength(keyQuery.getKeyEnd()), keyQuery.getSliceEnd()), keycolumn -> { final StaticBuffer key = getKey(keycolumn); return !(key.compareTo(keyQuery.getKeyStart()) < 0 || key.compareTo(keyQuery.getKeyEnd()) >= 0) && columnInRange(keycolumn, keyQuery.getSliceStart(), keyQuery.getSliceEnd()); }, BaseQuery.NO_LIMIT); //limit will be introduced in iterator return new KeyIteratorImpl(keyQuery,store.getSlice(query,txh)); }
@Override public KeyIterator getKeys(KeyRangeQuery query, StoreTransaction txh) throws BackendException { return executeKeySliceQuery(query.getKeyStart().as(StaticBuffer.ARRAY_FACTORY), query.getKeyEnd().as(StaticBuffer.ARRAY_FACTORY), new FilterList(FilterList.Operator.MUST_PASS_ALL), query); }
@Override public KeyIterator getKeys(final KeyRangeQuery query, final StoreTransaction txh) throws BackendException { if (!this.storeManager.getFeatures().hasOrderedScan()) { throw new PermanentBackendException("This operation is only allowed when the byteorderedpartitioner is used."); } final Metadata metadata = this.session.getCluster().getMetadata(); return Try.of(() -> new CQLResultSetKeyIterator( query, this.getter, this.session.execute(this.getKeysRanged.bind() .setToken(KEY_START_BINDING, metadata.newToken(query.getKeyStart().asByteBuffer())) .setToken(KEY_END_BINDING, metadata.newToken(query.getKeyEnd().asByteBuffer())) .setBytes(SLICE_START_BINDING, query.getSliceStart().asByteBuffer()) .setBytes(SLICE_END_BINDING, query.getSliceEnd().asByteBuffer()) .setFetchSize(this.storeManager.getPageSize()) .setConsistencyLevel(getTransaction(txh).getReadConsistencyLevel())))) .getOrElseThrow(EXCEPTION_MAPPER); }