Class ClientTxBatchUpdateAllRequest

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

public class ClientTxBatchUpdateAllRequest extends Object
Mixed upsert + merge + delete batch on a single partition inside an explicit transaction.

Wire layout:

   int      tableId
   long     txId            // resource id of the caller's explicit transaction (nil is rejected)
   int      partitionId
   int      schemaId
   int      count
   BitSet?  deleted          // one bit per row; set means DELETE (key-only tuple)
   BitSet?  merged           // one bit per row; set means MERGE (partial row)
                            // neither bit set means UPSERT of the full row
   count x  (BitSet noValueSet, bytes binaryTuple)
 

Semantics: an UPSERT is a blind insert-or-replace; a DELETE removes the row (a missing key is a server-side no-op); a MERGE applies only the columns the row actually carries and leaves every other column at its stored value (a missing key is a no-op here too, so a merge cannot stage a new row).

A merge names its columns through noValueSet: the protocol already distinguishes "no value supplied" from "explicitly null", and the former is exactly the "leave the stored value alone" case. So the merge mask is the complement of that row's noValueSet, which means the mask cannot contradict the tuple it came from. Key columns must carry values, since the row is resolved by its key.

The batch is applied atomically inside the caller's explicit transaction — the client is responsible for committing or rolling back the tx. Implicit transactions are not supported by this op; the C++ client and any other thin client must begin an explicit RW transaction before calling.

  • Constructor Details

    • ClientTxBatchUpdateAllRequest

      public ClientTxBatchUpdateAllRequest()
  • Method Details

    • process

      public static CompletableFuture<ResponseWriter> process(org.apache.ignite.internal.client.proto.ClientMessageUnpacker in, org.apache.ignite.internal.table.IgniteTablesInternal tables, ClientResourceRegistry resources, ClientHandlerMetricSource metrics, org.apache.ignite.internal.tx.TxManager txManager, org.apache.ignite.internal.hlc.ClockService clockService, org.gridgain.internal.license.LicenseFeatureChecker licenseFeatureChecker, NotificationSender notificationSender, org.apache.ignite.internal.hlc.HybridTimestampTracker tsTracker, long requestId, Map<Long,Long> reqToTxMap)
      Processes the request.
      Returns:
      Response future.