Package io.debezium.relational
Class RelationalChangeRecordEmitter<P extends Partition>
java.lang.Object
io.debezium.pipeline.AbstractChangeRecordEmitter<P,TableSchema>
io.debezium.relational.RelationalChangeRecordEmitter<P>
- All Implemented Interfaces:
ChangeRecordEmitter<P>
- Direct Known Subclasses:
SnapshotChangeRecordEmitter
public abstract class RelationalChangeRecordEmitter<P extends Partition>
extends AbstractChangeRecordEmitter<P,TableSchema>
Base class for
ChangeRecordEmitter
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<P extends Partition>
-
Field Summary
-
Constructor Summary
ConstructorDescriptionRelationalChangeRecordEmitter
(P partition, OffsetContext offsetContext, Clock clock) -
Method Summary
Modifier and TypeMethodDescriptionvoid
emitChangeRecords
(DataCollectionSchema schema, ChangeRecordEmitter.Receiver<P> receiver) Emits the change record(s) corresponding to data change represented by this emitter.protected void
emitCreateRecord
(ChangeRecordEmitter.Receiver<P> receiver, TableSchema tableSchema) Emits change record(s) associated with an insert operation.protected void
emitDeleteRecord
(ChangeRecordEmitter.Receiver<P> receiver, TableSchema tableSchema) Emits change record(s) associated with a delete operation.protected void
emitReadRecord
(ChangeRecordEmitter.Receiver<P> receiver, TableSchema tableSchema) Emits change record(s) associated with a snapshot.protected void
emitTruncateRecord
(ChangeRecordEmitter.Receiver<P> receiver, TableSchema schema) protected void
emitUpdateAsPrimaryKeyChangeRecord
(ChangeRecordEmitter.Receiver<P> receiver, TableSchema tableSchema, org.apache.kafka.connect.data.Struct oldKey, org.apache.kafka.connect.data.Struct newKey, org.apache.kafka.connect.data.Struct oldValue, org.apache.kafka.connect.data.Struct newValue) protected void
emitUpdateRecord
(ChangeRecordEmitter.Receiver<P> receiver, TableSchema tableSchema) Emits change record(s) associated with an update operation.protected abstract Object[]
Returns the new row state in case of a CREATE or READ.protected abstract Object[]
Returns the old row state in case of an UPDATE or DELETE.protected boolean
Whether empty data messages should be ignored.Methods inherited from class io.debezium.pipeline.AbstractChangeRecordEmitter
getClock, getOffset, getPartition
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface io.debezium.pipeline.spi.ChangeRecordEmitter
getOperation
-
Field Details
-
LOGGER
private static final org.slf4j.Logger LOGGER -
PK_UPDATE_OLDKEY_FIELD
- See Also:
-
PK_UPDATE_NEWKEY_FIELD
- See Also:
-
-
Constructor Details
-
RelationalChangeRecordEmitter
-
-
Method Details
-
emitChangeRecords
public void emitChangeRecords(DataCollectionSchema schema, ChangeRecordEmitter.Receiver<P> 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<P extends Partition>
- Overrides:
emitChangeRecords
in classAbstractChangeRecordEmitter<P extends Partition,
TableSchema> - Throws:
InterruptedException
-
emitCreateRecord
protected void emitCreateRecord(ChangeRecordEmitter.Receiver<P> receiver, TableSchema tableSchema) throws InterruptedException Description copied from class:AbstractChangeRecordEmitter
Emits change record(s) associated with an insert operation.- Specified by:
emitCreateRecord
in classAbstractChangeRecordEmitter<P extends Partition,
TableSchema> - Parameters:
receiver
- the handler for which the emitted record should be dispatchedtableSchema
- the schema- Throws:
InterruptedException
-
emitReadRecord
protected void emitReadRecord(ChangeRecordEmitter.Receiver<P> receiver, TableSchema tableSchema) throws InterruptedException Description copied from class:AbstractChangeRecordEmitter
Emits change record(s) associated with a snapshot.- Specified by:
emitReadRecord
in classAbstractChangeRecordEmitter<P extends Partition,
TableSchema> - Parameters:
receiver
- the handler for which the emitted record should be dispatchedtableSchema
- the schema- Throws:
InterruptedException
-
emitUpdateRecord
protected void emitUpdateRecord(ChangeRecordEmitter.Receiver<P> receiver, TableSchema tableSchema) throws InterruptedException Description copied from class:AbstractChangeRecordEmitter
Emits change record(s) associated with an update operation.- Specified by:
emitUpdateRecord
in classAbstractChangeRecordEmitter<P extends Partition,
TableSchema> - Parameters:
receiver
- the handler for which the emitted record should be dispatchedtableSchema
- the schema- Throws:
InterruptedException
-
emitDeleteRecord
protected void emitDeleteRecord(ChangeRecordEmitter.Receiver<P> receiver, TableSchema tableSchema) throws InterruptedException Description copied from class:AbstractChangeRecordEmitter
Emits change record(s) associated with a delete operation.- Specified by:
emitDeleteRecord
in classAbstractChangeRecordEmitter<P extends Partition,
TableSchema> - Parameters:
receiver
- the handler for which the emitted record should be dispatchedtableSchema
- the schema- Throws:
InterruptedException
-
emitTruncateRecord
protected void emitTruncateRecord(ChangeRecordEmitter.Receiver<P> receiver, TableSchema schema) throws InterruptedException - Throws:
InterruptedException
-
getOldColumnValues
Returns the old row state in case of an UPDATE or DELETE. -
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.
-
emitUpdateAsPrimaryKeyChangeRecord
protected void emitUpdateAsPrimaryKeyChangeRecord(ChangeRecordEmitter.Receiver<P> receiver, TableSchema tableSchema, org.apache.kafka.connect.data.Struct oldKey, org.apache.kafka.connect.data.Struct newKey, org.apache.kafka.connect.data.Struct oldValue, org.apache.kafka.connect.data.Struct newValue) throws InterruptedException - Throws:
InterruptedException
-