java.lang.Object
org.apache.beam.sdk.io.gcp.spanner.changestreams.model.DataChangeRecord
All Implemented Interfaces:
Serializable, ChangeStreamRecord

@DefaultCoder(AvroCoder.class) public class DataChangeRecord extends Object implements ChangeStreamRecord
A data change record encodes modifications to Cloud Spanner rows. A record will contain one or more modifications made in one table with the same ModType. There can be multiple data change records for a transaction and commit timestamp.
See Also:
  • Constructor Details

    • DataChangeRecord

      public DataChangeRecord(String partitionToken, com.google.cloud.Timestamp commitTimestamp, String serverTransactionId, boolean isLastRecordInTransactionInPartition, String recordSequence, String tableName, List<ColumnType> rowType, List<Mod> mods, ModType modType, ValueCaptureType valueCaptureType, long numberOfRecordsInTransaction, long numberOfPartitionsInTransaction, String transactionTag, boolean isSystemTransaction, ChangeStreamRecordMetadata metadata)
      Constructs a data change record for a given partition, at a given timestamp, for a given transaction. The data change record needs to be given information about the table modified, the type of primary keys and modified columns, the modifications themselves and other metadata.
      Parameters:
      partitionToken - the unique identifier of the partition that generated this record
      commitTimestamp - the timestamp at which the modifications within were committed in Cloud Spanner
      serverTransactionId - the unique transaction id in which the modifications occurred
      isLastRecordInTransactionInPartition - indicates whether this record is the last emitted for the given transaction in the given partition
      recordSequence - indicates the order in which this record was put into the change stream in the scope of a partition, commit timestamp and transaction tuple
      tableName - the name of the table in which the modifications occurred
      rowType - the type of the primary keys and modified columns
      mods - the modifications occurred
      modType - the operation that caused the modification to occur
      valueCaptureType - the capture type of the change stream
      numberOfRecordsInTransaction - the total number of records for the given transaction
      numberOfPartitionsInTransaction - the total number of partitions within the given transaction
      transactionTag - the transaction tag associated with the given transaction
      isSystemTransaction - whether the given transaction is Spanner system transaction (or user transaction)
      metadata - connector execution metadata for the given record
  • Method Details

    • getRecordTimestamp

      public com.google.cloud.Timestamp getRecordTimestamp()
      The timestamp at which the modifications within were committed in Cloud Spanner.
      Specified by:
      getRecordTimestamp in interface ChangeStreamRecord
      Returns:
      the timestamp at which this record has occurred.
    • getPartitionToken

      public String getPartitionToken()
      The unique identifier of the partition that generated this record.
    • getCommitTimestamp

      public com.google.cloud.Timestamp getCommitTimestamp()
      The timestamp at which the modifications within were committed in Cloud Spanner.
    • getServerTransactionId

      public String getServerTransactionId()
      The unique transaction id in which the modifications occurred.
    • isLastRecordInTransactionInPartition

      public boolean isLastRecordInTransactionInPartition()
      Indicates whether this record is the last emitted for the given transaction in the given partition.
    • getRecordSequence

      public String getRecordSequence()
      Indicates the order in which this record was put into the change stream in the scope of a partition, commit timestamp and transaction tuple.
    • getTableName

      public String getTableName()
      The name of the table in which the modifications within this record occurred.
    • getRowType

      public List<ColumnType> getRowType()
      The type of the primary keys and modified columns within this record.
    • getMods

      public List<Mod> getMods()
      The modifications within this record.
    • getModType

      public ModType getModType()
      The type of operation that caused the modifications within this record.
    • getValueCaptureType

      public ValueCaptureType getValueCaptureType()
      The capture type of the change stream that generated this record.
    • getNumberOfRecordsInTransaction

      public long getNumberOfRecordsInTransaction()
      The total number of data change records for the given transaction.
    • getNumberOfPartitionsInTransaction

      public long getNumberOfPartitionsInTransaction()
      The total number of partitions for the given transaction.
    • getTransactionTag

      public String getTransactionTag()
      The transaction tag associated with the given transaction.
    • isSystemTransaction

      public boolean isSystemTransaction()
      Whether the given transaction is Spanner system transaction. Otherwise it is user/application transaction.
    • getMetadata

      public ChangeStreamRecordMetadata getMetadata()
      The connector execution metadata for this record.
    • equals

      public boolean equals(@Nullable Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object