Class ClientIndexMultiRangeScanRequest

java.lang.Object
org.apache.ignite.client.handler.requests.table.ClientIndexMultiRangeScanRequest

public class ClientIndexMultiRangeScanRequest extends Object
Client request: scan rows by multiple index-key prefix ranges, returning one cursor per range.

Each range's partition results are merged in index-key order via indexKeyOrderedMerge into their own cursor, and the response carries the cursors positionally: cursor i holds the rows for range i, so no value comparison is needed to attribute rows to ranges.

The prefetch-mode byte selects the cursor mode. ClientIndexCommon.CursorMode.PER_KEY_LAZY (lazy): only the first range's first page is delivered in the response; the rest arrive empty with hasMore=true and start their scans on the first INDEX_CURSOR_NEXT_PAGE request. ClientIndexCommon.CursorMode.PER_KEY_EAGER (eager): every range's first page is prefetched before the response is written.

Request wire layout (in order):

  • int index id;
  • tx meta (nil -> server starts an explicit RO tx);
  • BitSet column bitmap for projection (null or empty = all columns);
  • partition list (nil = scan every partition; otherwise an int count followed by that many int partition ids, scoping the scan to those partitions - read-only tx only);
  • int range count N (must be positive);
  • N ranges, each a lower then an upper bound: bool present, and when present bool inclusive followed by binary prefix bytes (BinaryTuplePrefix-encoded);
  • byte direction (0 = forward, 1 = reverse) applied to every range;
  • byte prefetch mode (0 = lazy, 1 = eager);
  • int page size (must be positive);
  • long client observable timestamp.

The response carries one self-delimiting block per cursor in range order; see ClientIndexCommon for the exact framing.

  • Constructor Details

    • ClientIndexMultiRangeScanRequest

      public ClientIndexMultiRangeScanRequest()
  • Method Details

    • process

      public static CompletableFuture<ResponseWriter> process(org.apache.ignite.internal.client.proto.ClientMessageUnpacker in, org.apache.ignite.internal.table.IgniteTablesInternal tables, org.apache.ignite.internal.catalog.CatalogService catalogService, org.apache.ignite.internal.schema.SchemaSyncService schemaSyncService, org.apache.ignite.internal.network.ClusterService clusterService, ClientResourceRegistry resources, ClientHandlerMetricSource metrics, org.apache.ignite.internal.tx.TxManager txManager, ClientPrimaryReplicaTracker primaryReplicaTracker, org.apache.ignite.internal.hlc.ClockService clockService, org.gridgain.internal.license.LicenseFeatureChecker licenseFeatureChecker, org.apache.ignite.internal.hlc.HybridTimestampTracker tsTracker, @Nullable @Nullable NotificationSender notificationSender, long requestId, Map<Long,Long> reqToTxMap)
      Processes the request.