Class DataChangeRecord

  • All Implemented Interfaces:
    java.io.Serializable, ChangeStreamRecord

    @DefaultCoder(org.apache.beam.sdk.coders.AvroCoder.class)
    public class DataChangeRecord
    extends java.lang.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:
    Serialized Form
    • Constructor Summary

      Constructors 
      Constructor Description
      DataChangeRecord​(java.lang.String partitionToken, com.google.cloud.Timestamp commitTimestamp, java.lang.String serverTransactionId, boolean isLastRecordInTransactionInPartition, java.lang.String recordSequence, java.lang.String tableName, java.util.List<ColumnType> rowType, java.util.List<Mod> mods, ModType modType, ValueCaptureType valueCaptureType, long numberOfRecordsInTransaction, long numberOfPartitionsInTransaction, java.lang.String transactionTag, boolean isSystemTransaction, ChangeStreamRecordMetadata metadata)
      Constructs a data change record for a given partition, at a given timestamp, for a given transaction.
    • Constructor Detail

      • DataChangeRecord

        public DataChangeRecord​(java.lang.String partitionToken,
                                com.google.cloud.Timestamp commitTimestamp,
                                java.lang.String serverTransactionId,
                                boolean isLastRecordInTransactionInPartition,
                                java.lang.String recordSequence,
                                java.lang.String tableName,
                                java.util.List<ColumnType> rowType,
                                java.util.List<Mod> mods,
                                ModType modType,
                                ValueCaptureType valueCaptureType,
                                long numberOfRecordsInTransaction,
                                long numberOfPartitionsInTransaction,
                                java.lang.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 Detail

      • 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 java.lang.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 java.lang.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 java.lang.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 java.lang.String getTableName()
        The name of the table in which the modifications within this record occurred.
      • getRowType

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

        public java.util.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 java.lang.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.
      • equals

        public boolean equals​(@Nullable
                              java.lang.Object o)
        Overrides:
        equals in class java.lang.Object
      • hashCode

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

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object