Package io.debezium.relational
Class RelationalChangeRecordEmitter
- java.lang.Object
-
- io.debezium.pipeline.AbstractChangeRecordEmitter<TableSchema>
-
- io.debezium.relational.RelationalChangeRecordEmitter
-
- All Implemented Interfaces:
ChangeRecordEmitter
- Direct Known Subclasses:
SnapshotChangeRecordEmitter
public abstract class RelationalChangeRecordEmitter extends AbstractChangeRecordEmitter<TableSchema>
Base class forChangeRecordEmitterimplementations based on a relational database.- Author:
- Gunnar Morling
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface io.debezium.pipeline.spi.ChangeRecordEmitter
ChangeRecordEmitter.Receiver
-
-
Field Summary
Fields Modifier and Type Field Description protected org.slf4j.Loggerloggerstatic StringPK_UPDATE_NEWKEY_FIELDstatic StringPK_UPDATE_OLDKEY_FIELD
-
Constructor Summary
Constructors Constructor Description RelationalChangeRecordEmitter(OffsetContext offsetContext, Clock clock)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidemitChangeRecords(DataCollectionSchema schema, ChangeRecordEmitter.Receiver receiver)Emits the change record(s) corresponding to data change represented by this emitter.protected voidemitCreateRecord(ChangeRecordEmitter.Receiver receiver, TableSchema tableSchema)Emits change record(s) associated with an insert operation.protected voidemitDeleteRecord(ChangeRecordEmitter.Receiver receiver, TableSchema tableSchema)Emits change record(s) associated with a delete operation.protected voidemitReadRecord(ChangeRecordEmitter.Receiver receiver, TableSchema tableSchema)Emits change record(s) associated with a snapshot.protected voidemitTruncateRecord(ChangeRecordEmitter.Receiver receiver, TableSchema schema)protected voidemitUpdateRecord(ChangeRecordEmitter.Receiver receiver, TableSchema tableSchema)Emits change record(s) associated with an update operation.protected abstract Object[]getNewColumnValues()Returns the new row state in case of a CREATE or READ.protected abstract Object[]getOldColumnValues()Returns the old row state in case of an UPDATE or DELETE.protected abstract Envelope.OperationgetOperation()Returns the operation done by the represented change.protected booleanskipEmptyMessages()Whether empty data messages should be ignored.-
Methods inherited from class io.debezium.pipeline.AbstractChangeRecordEmitter
getClock, getOffset
-
-
-
-
Field Detail
-
PK_UPDATE_OLDKEY_FIELD
public static final String PK_UPDATE_OLDKEY_FIELD
- See Also:
- Constant Field Values
-
PK_UPDATE_NEWKEY_FIELD
public static final String PK_UPDATE_NEWKEY_FIELD
- See Also:
- Constant Field Values
-
logger
protected final org.slf4j.Logger logger
-
-
Constructor Detail
-
RelationalChangeRecordEmitter
public RelationalChangeRecordEmitter(OffsetContext offsetContext, Clock clock)
-
-
Method Detail
-
emitChangeRecords
public void emitChangeRecords(DataCollectionSchema schema, ChangeRecordEmitter.Receiver receiver) throws InterruptedException
Description copied from interface:ChangeRecordEmitterEmits the change record(s) corresponding to data change represented by this emitter.- Specified by:
emitChangeRecordsin interfaceChangeRecordEmitter- Overrides:
emitChangeRecordsin classAbstractChangeRecordEmitter<TableSchema>- Throws:
InterruptedException
-
emitCreateRecord
protected void emitCreateRecord(ChangeRecordEmitter.Receiver receiver, TableSchema tableSchema) throws InterruptedException
Description copied from class:AbstractChangeRecordEmitterEmits change record(s) associated with an insert operation.- Specified by:
emitCreateRecordin classAbstractChangeRecordEmitter<TableSchema>- Parameters:
receiver- the handler for which the emitted record should be dispatchedtableSchema- the schema- Throws:
InterruptedException
-
emitReadRecord
protected void emitReadRecord(ChangeRecordEmitter.Receiver receiver, TableSchema tableSchema) throws InterruptedException
Description copied from class:AbstractChangeRecordEmitterEmits change record(s) associated with a snapshot.- Specified by:
emitReadRecordin classAbstractChangeRecordEmitter<TableSchema>- Parameters:
receiver- the handler for which the emitted record should be dispatchedtableSchema- the schema- Throws:
InterruptedException
-
emitUpdateRecord
protected void emitUpdateRecord(ChangeRecordEmitter.Receiver receiver, TableSchema tableSchema) throws InterruptedException
Description copied from class:AbstractChangeRecordEmitterEmits change record(s) associated with an update operation.- Specified by:
emitUpdateRecordin classAbstractChangeRecordEmitter<TableSchema>- Parameters:
receiver- the handler for which the emitted record should be dispatchedtableSchema- the schema- Throws:
InterruptedException
-
emitDeleteRecord
protected void emitDeleteRecord(ChangeRecordEmitter.Receiver receiver, TableSchema tableSchema) throws InterruptedException
Description copied from class:AbstractChangeRecordEmitterEmits change record(s) associated with a delete operation.- Specified by:
emitDeleteRecordin classAbstractChangeRecordEmitter<TableSchema>- Parameters:
receiver- the handler for which the emitted record should be dispatchedtableSchema- the schema- Throws:
InterruptedException
-
emitTruncateRecord
protected void emitTruncateRecord(ChangeRecordEmitter.Receiver receiver, TableSchema schema) throws InterruptedException
- Throws:
InterruptedException
-
getOperation
protected abstract Envelope.Operation getOperation()
Returns the operation done by the represented change.- Specified by:
getOperationin classAbstractChangeRecordEmitter<TableSchema>
-
getOldColumnValues
protected abstract Object[] getOldColumnValues()
Returns the old row state in case of an UPDATE or DELETE.
-
getNewColumnValues
protected abstract Object[] getNewColumnValues()
Returns the new row state in case of a CREATE or READ.
-
skipEmptyMessages
protected boolean skipEmptyMessages()
Whether empty data messages should be ignored.- Returns:
- true if empty data messages coming from data source should be ignored. Typical use case are PostgreSQL changes without FULL replica identity.
-
-