Package io.debezium.connector.postgresql
Class PostgresChangeRecordEmitter
java.lang.Object
io.debezium.pipeline.AbstractChangeRecordEmitter<PostgresPartition,TableSchema>
io.debezium.relational.RelationalChangeRecordEmitter<PostgresPartition>
io.debezium.connector.postgresql.PostgresChangeRecordEmitter
- All Implemented Interfaces:
ChangeRecordEmitter<PostgresPartition>
Emits change data based on a logical decoding event coming as protobuf or JSON message.
- Author:
- Horia Chiorean (hchiorea@redhat.com), Jiri Pechanec
-
Nested Class Summary
Nested classes/interfaces inherited from interface io.debezium.pipeline.spi.ChangeRecordEmitter
ChangeRecordEmitter.Receiver<P extends Partition> -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final PostgresConnectionprivate final PostgresConnectorConfigprivate static final org.slf4j.Loggerprivate final ReplicationMessageprivate final PostgresSchemaprivate final TableIdFields inherited from class io.debezium.relational.RelationalChangeRecordEmitter
PK_UPDATE_NEWKEY_FIELD, PK_UPDATE_OLDKEY_FIELD -
Constructor Summary
ConstructorsConstructorDescriptionPostgresChangeRecordEmitter(PostgresPartition partition, OffsetContext offset, Clock clock, PostgresConnectorConfig connectorConfig, PostgresSchema schema, PostgresConnection connection, TableId tableId, ReplicationMessage message) -
Method Summary
Modifier and TypeMethodDescriptionprivate Object[]columnValues(List<ReplicationMessage.Column> columns, TableId tableId, boolean refreshSchemaIfChanged, boolean sourceOfToasted, boolean oldValues) voidemitChangeRecords(DataCollectionSchema schema, ChangeRecordEmitter.Receiver<PostgresPartition> receiver) protected voidemitTruncateRecord(ChangeRecordEmitter.Receiver receiver, TableSchema tableSchema) protected Object[]protected Object[]private intgetPosition(String columnName, Table table, Object[] values) private booleanhasMissingUntoastedColumns(Table table, List<ReplicationMessage.Column> columns) private Optional<DataCollectionSchema> private voidrefreshTableFromDatabase(TableId tableId) private booleanschemaChanged(List<ReplicationMessage.Column> columns, Table table) protected booleanprivate DataCollectionSchemasynchronizeTableSchema(DataCollectionSchema tableSchema) private TabletableFromFromMessage(List<ReplicationMessage.Column> columns, Table table) (package private) static Optional<DataCollectionSchema> updateSchema(Partition partition, io.debezium.spi.schema.DataCollectionId tableId, ChangeRecordEmitter<PostgresPartition> changeRecordEmitter) Methods inherited from class io.debezium.relational.RelationalChangeRecordEmitter
emitCreateRecord, emitDeleteRecord, emitReadRecord, emitUpdateAsPrimaryKeyChangeRecord, emitUpdateRecordMethods inherited from class io.debezium.pipeline.AbstractChangeRecordEmitter
getClock, getOffset, getPartition, skipMessagesWithoutChange
-
Field Details
-
LOGGER
private static final org.slf4j.Logger LOGGER -
message
-
schema
-
connectorConfig
-
connection
-
tableId
-
cachedOldToastedValues
-
-
Constructor Details
-
PostgresChangeRecordEmitter
public PostgresChangeRecordEmitter(PostgresPartition partition, OffsetContext offset, Clock clock, PostgresConnectorConfig connectorConfig, PostgresSchema schema, PostgresConnection connection, TableId tableId, ReplicationMessage message)
-
-
Method Details
-
getOperation
-
emitChangeRecords
public void emitChangeRecords(DataCollectionSchema schema, ChangeRecordEmitter.Receiver<PostgresPartition> receiver) throws InterruptedException - Specified by:
emitChangeRecordsin interfaceChangeRecordEmitter<PostgresPartition>- Overrides:
emitChangeRecordsin classRelationalChangeRecordEmitter<PostgresPartition>- Throws:
InterruptedException
-
emitTruncateRecord
protected void emitTruncateRecord(ChangeRecordEmitter.Receiver receiver, TableSchema tableSchema) throws InterruptedException - Overrides:
emitTruncateRecordin classRelationalChangeRecordEmitter<PostgresPartition>- Throws:
InterruptedException
-
getOldColumnValues
- Specified by:
getOldColumnValuesin classRelationalChangeRecordEmitter<PostgresPartition>
-
getNewColumnValues
- Specified by:
getNewColumnValuesin classRelationalChangeRecordEmitter<PostgresPartition>
-
synchronizeTableSchema
-
columnValues
private Object[] columnValues(List<ReplicationMessage.Column> columns, TableId tableId, boolean refreshSchemaIfChanged, boolean sourceOfToasted, boolean oldValues) throws SQLException - Throws:
SQLException
-
getPosition
-
newTable
-
refreshTableFromDatabase
-
updateSchema
static Optional<DataCollectionSchema> updateSchema(Partition partition, io.debezium.spi.schema.DataCollectionId tableId, ChangeRecordEmitter<PostgresPartition> changeRecordEmitter) -
schemaChanged
-
hasMissingUntoastedColumns
-
tableFromFromMessage
-
skipEmptyMessages
protected boolean skipEmptyMessages()- Overrides:
skipEmptyMessagesin classRelationalChangeRecordEmitter<PostgresPartition>
-