Package io.debezium.connector.postgresql
Class PostgresChangeRecordEmitter
- java.lang.Object
-
- io.debezium.pipeline.AbstractChangeRecordEmitter<TableSchema>
-
- io.debezium.relational.RelationalChangeRecordEmitter
-
- io.debezium.connector.postgresql.PostgresChangeRecordEmitter
-
- All Implemented Interfaces:
ChangeRecordEmitter
public class PostgresChangeRecordEmitter extends RelationalChangeRecordEmitter
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
-
-
Field Summary
Fields Modifier and Type Field Description private Map<String,Object>cachedOldToastedValuesprivate PostgresConnectionconnectionprivate PostgresConnectorConfigconnectorConfigprivate static org.slf4j.LoggerLOGGERprivate ReplicationMessagemessageprivate booleannullToastedValuesMissingFromOldprivate PostgresSchemaschemaprivate TableIdtableIdprivate booleanunchangedToastColumnMarkerMissing-
Fields inherited from class io.debezium.relational.RelationalChangeRecordEmitter
PK_UPDATE_NEWKEY_FIELD, PK_UPDATE_OLDKEY_FIELD
-
-
Constructor Summary
Constructors Constructor Description PostgresChangeRecordEmitter(Partition partition, OffsetContext offset, Clock clock, PostgresConnectorConfig connectorConfig, PostgresSchema schema, PostgresConnection connection, TableId tableId, ReplicationMessage message)
-
Method Summary
-
Methods inherited from class io.debezium.relational.RelationalChangeRecordEmitter
emitCreateRecord, emitDeleteRecord, emitReadRecord, emitUpdateRecord
-
Methods inherited from class io.debezium.pipeline.AbstractChangeRecordEmitter
getClock, getOffset, getPartition
-
-
-
-
Field Detail
-
LOGGER
private static final org.slf4j.Logger LOGGER
-
message
private final ReplicationMessage message
-
schema
private final PostgresSchema schema
-
connectorConfig
private final PostgresConnectorConfig connectorConfig
-
connection
private final PostgresConnection connection
-
tableId
private final TableId tableId
-
unchangedToastColumnMarkerMissing
private final boolean unchangedToastColumnMarkerMissing
-
nullToastedValuesMissingFromOld
private final boolean nullToastedValuesMissingFromOld
-
-
Constructor Detail
-
PostgresChangeRecordEmitter
public PostgresChangeRecordEmitter(Partition partition, OffsetContext offset, Clock clock, PostgresConnectorConfig connectorConfig, PostgresSchema schema, PostgresConnection connection, TableId tableId, ReplicationMessage message)
-
-
Method Detail
-
getOperation
protected Envelope.Operation getOperation()
- Specified by:
getOperationin classRelationalChangeRecordEmitter
-
emitChangeRecords
public void emitChangeRecords(DataCollectionSchema schema, ChangeRecordEmitter.Receiver receiver) throws InterruptedException
- Specified by:
emitChangeRecordsin interfaceChangeRecordEmitter- Overrides:
emitChangeRecordsin classRelationalChangeRecordEmitter- Throws:
InterruptedException
-
emitTruncateRecord
protected void emitTruncateRecord(ChangeRecordEmitter.Receiver receiver, TableSchema tableSchema) throws InterruptedException
- Overrides:
emitTruncateRecordin classRelationalChangeRecordEmitter- Throws:
InterruptedException
-
getOldColumnValues
protected Object[] getOldColumnValues()
- Specified by:
getOldColumnValuesin classRelationalChangeRecordEmitter
-
getNewColumnValues
protected Object[] getNewColumnValues()
- Specified by:
getNewColumnValuesin classRelationalChangeRecordEmitter
-
synchronizeTableSchema
private DataCollectionSchema synchronizeTableSchema(DataCollectionSchema tableSchema)
-
columnValues
private Object[] columnValues(List<ReplicationMessage.Column> columns, TableId tableId, boolean refreshSchemaIfChanged, boolean metadataInMessage, boolean sourceOfToasted, boolean oldValues) throws SQLException
- Throws:
SQLException
-
newTable
private Optional<DataCollectionSchema> newTable(TableId tableId)
-
refreshTableFromDatabase
private void refreshTableFromDatabase(TableId tableId)
-
updateSchema
static Optional<DataCollectionSchema> updateSchema(TableId tableId, ChangeRecordEmitter changeRecordEmitter)
-
schemaChanged
private boolean schemaChanged(List<ReplicationMessage.Column> columns, Table table, boolean metadataInMessage)
-
hasMissingUntoastedColumns
private boolean hasMissingUntoastedColumns(Table table, List<ReplicationMessage.Column> columns)
-
tableFromFromMessage
private Table tableFromFromMessage(List<ReplicationMessage.Column> columns, Table table)
-
skipEmptyMessages
protected boolean skipEmptyMessages()
- Overrides:
skipEmptyMessagesin classRelationalChangeRecordEmitter
-
-