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 forChangeRecordEmitter
implementations 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.Logger
logger
static String
PK_UPDATE_NEWKEY_FIELD
static String
PK_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 void
emitChangeRecords(DataCollectionSchema schema, ChangeRecordEmitter.Receiver receiver)
Emits the change record(s) corresponding to data change represented by this emitter.protected void
emitCreateRecord(ChangeRecordEmitter.Receiver receiver, TableSchema tableSchema)
Emits change record(s) associated with an insert operation.protected void
emitDeleteRecord(ChangeRecordEmitter.Receiver receiver, TableSchema tableSchema)
Emits change record(s) associated with a delete operation.protected void
emitReadRecord(ChangeRecordEmitter.Receiver receiver, TableSchema tableSchema)
Emits change record(s) associated with a snapshot.protected void
emitTruncateRecord(ChangeRecordEmitter.Receiver receiver, TableSchema schema)
protected void
emitUpdateRecord(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.Operation
getOperation()
Returns the operation done by the represented change.protected boolean
skipEmptyMessages()
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:ChangeRecordEmitter
Emits the change record(s) corresponding to data change represented by this emitter.- Specified by:
emitChangeRecords
in interfaceChangeRecordEmitter
- Overrides:
emitChangeRecords
in classAbstractChangeRecordEmitter<TableSchema>
- Throws:
InterruptedException
-
emitCreateRecord
protected void emitCreateRecord(ChangeRecordEmitter.Receiver receiver, TableSchema tableSchema) throws InterruptedException
Description copied from class:AbstractChangeRecordEmitter
Emits change record(s) associated with an insert operation.- Specified by:
emitCreateRecord
in 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:AbstractChangeRecordEmitter
Emits change record(s) associated with a snapshot.- Specified by:
emitReadRecord
in 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:AbstractChangeRecordEmitter
Emits change record(s) associated with an update operation.- Specified by:
emitUpdateRecord
in 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:AbstractChangeRecordEmitter
Emits change record(s) associated with a delete operation.- Specified by:
emitDeleteRecord
in 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:
getOperation
in 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.
-
-