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 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<P extends Partition>
-
-
Field Summary
Fields Modifier and Type Field Description private static org.slf4j.Logger
LOGGER
static String
PK_UPDATE_NEWKEY_FIELD
static String
PK_UPDATE_OLDKEY_FIELD
-
Constructor Summary
Constructors Constructor Description RelationalChangeRecordEmitter(P partition, 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<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
emitUpdateRecord(ChangeRecordEmitter.Receiver<P> 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 boolean
skipEmptyMessages()
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 Detail
-
LOGGER
private static final org.slf4j.Logger LOGGER
-
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
-
-
Constructor Detail
-
RelationalChangeRecordEmitter
public RelationalChangeRecordEmitter(P partition, OffsetContext offsetContext, Clock clock)
-
-
Method Detail
-
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
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.
-
-