p, transformer, scanQry.getPartition(), isKeepBinary, scanQry.isLocal(), scanQry.isDataPageScanEnabled()); if (scanQry.getPageSize() > 0) qry.pageSize(scanQry.getPageSize());
/** Handle scan query. */ private QueryCursor<Cache.Entry<K, V>> scanQuery(ScanQuery<K, V> qry) { Consumer<BinaryOutputStream> qryWriter = out -> { writeCacheInfo(out); if (qry.getFilter() == null) out.writeByte(GridBinaryMarshaller.NULL); else { serDes.writeObject(out, qry.getFilter()); out.writeByte((byte)1); // Java platform } out.writeInt(qry.getPageSize()); out.writeInt(qry.getPartition() == null ? -1 : qry.getPartition()); out.writeBoolean(qry.isLocal()); }; return new ClientQueryCursor<>(new ClientQueryPager<>( ch, ClientOperation.QUERY_SCAN, ClientOperation.QUERY_SCAN_CURSOR_GET_PAGE, qryWriter, keepBinary, marsh )); }
/** * @param scanQry ScanQry. * @param transformer Transformer * @param grp Optional cluster group. * @return Cursor. * @throws IgniteCheckedException If failed. */ @SuppressWarnings("unchecked") private <T, R> QueryCursor<R> query( final ScanQuery scanQry, @Nullable final IgniteClosure<T, R> transformer, @Nullable ClusterGroup grp) throws IgniteCheckedException { CacheOperationContext opCtxCall = ctx.operationContextPerCall(); boolean isKeepBinary = opCtxCall != null && opCtxCall.isKeepBinary(); IgniteBiPredicate<K, V> p = scanQry.getFilter(); final CacheQuery<R> qry = ctx.queries().createScanQuery( p, transformer, scanQry.getPartition(), isKeepBinary, scanQry.isLocal()); if (scanQry.getPageSize() > 0) qry.pageSize(scanQry.getPageSize()); if (grp != null) qry.projection(grp); final GridCloseableIterator<R> iter = ctx.kernalContext().query().executeQuery(GridCacheQueryType.SCAN, ctx.name(), ctx, new IgniteOutClosureX<GridCloseableIterator<R>>() { @Override public GridCloseableIterator<R> applyx() throws IgniteCheckedException { return qry.executeScanQuery(); } }, true); return new QueryCursorImpl<>(iter); }
/** Handle scan query. */ private QueryCursor<Cache.Entry<K, V>> scanQuery(ScanQuery<K, V> qry) { Consumer<BinaryOutputStream> qryWriter = out -> { writeCacheInfo(out); if (qry.getFilter() == null) out.writeByte(GridBinaryMarshaller.NULL); else { serDes.writeObject(out, qry.getFilter()); out.writeByte((byte)1); // Java platform } out.writeInt(qry.getPageSize()); out.writeInt(qry.getPartition() == null ? -1 : qry.getPartition()); out.writeBoolean(qry.isLocal()); }; return new ClientQueryCursor<>(new ClientQueryPager<>( ch, ClientOperation.QUERY_SCAN, ClientOperation.QUERY_SCAN_CURSOR_GET_PAGE, qryWriter, keepBinary, marsh )); }