Package io.debezium.connector.jdbc
Class JdbcChangeEventSink
java.lang.Object
io.debezium.connector.jdbc.JdbcChangeEventSink
- All Implemented Interfaces:
ChangeEventSink,AutoCloseable
A
ChangeEventSink for a JDBC relational database.- Author:
- Chris Cranford
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final JdbcSinkConnectorConfigstatic final Stringprivate final DatabaseDialectprivate static final org.slf4j.Loggerprivate final RecordWriterstatic final Stringprivate final org.hibernate.StatelessSessionprivate final TableNamingStrategy -
Constructor Summary
ConstructorsConstructorDescriptionJdbcChangeEventSink(JdbcSinkConnectorConfig config, org.hibernate.StatelessSession session, DatabaseDialect dialect, RecordWriter recordWriter) -
Method Summary
Modifier and TypeMethodDescriptionprivate TableDescriptoralterTableIfNeeded(TableId tableId, SinkRecordDescriptor record) private SinkRecordDescriptorbuildRecordSinkDescriptor(org.apache.kafka.connect.sink.SinkRecord record) private TableDescriptorcheckAndApplyTableChangesIfNeeded(TableId tableId, SinkRecordDescriptor descriptor) voidclose()private TableDescriptorcreateTable(TableId tableId, SinkRecordDescriptor record) voidexecute(Collection<org.apache.kafka.connect.sink.SinkRecord> records) Executes this sink.private voidflushBuffer(TableId tableId, List<SinkRecordDescriptor> toFlush) private voidflushBuffers(Map<TableId, Buffer> bufferByTable) private StringgetSqlStatement(TableDescriptor table, SinkRecordDescriptor record) getTableId(org.apache.kafka.connect.sink.SinkRecord record) private booleanprivate static booleanisSchemaChange(org.apache.kafka.connect.sink.SinkRecord record) private TableDescriptorprivate BufferresolveBuffer(Map<TableId, Buffer> bufferMap, TableId tableId, SinkRecordDescriptor sinkRecordDescriptor) private voidvalidate(org.apache.kafka.connect.sink.SinkRecord record) private voidwriteTruncate(String sql)
-
Field Details
-
LOGGER
private static final org.slf4j.Logger LOGGER -
SCHEMA_CHANGE_VALUE
- See Also:
-
DETECT_SCHEMA_CHANGE_RECORD_MSG
- See Also:
-
config
-
dialect
-
session
private final org.hibernate.StatelessSession session -
tableNamingStrategy
-
recordWriter
-
-
Constructor Details
-
JdbcChangeEventSink
public JdbcChangeEventSink(JdbcSinkConnectorConfig config, org.hibernate.StatelessSession session, DatabaseDialect dialect, RecordWriter recordWriter)
-
-
Method Details
-
execute
Description copied from interface:ChangeEventSinkExecutes this sink.- Specified by:
executein interfaceChangeEventSink- Parameters:
records- the sink records, nevernull
-
validate
private void validate(org.apache.kafka.connect.sink.SinkRecord record) -
isSchemaChange
private static boolean isSchemaChange(org.apache.kafka.connect.sink.SinkRecord record) -
resolveBuffer
-
buildRecordSinkDescriptor
private SinkRecordDescriptor buildRecordSinkDescriptor(org.apache.kafka.connect.sink.SinkRecord record) -
flushBuffers
-
flushBuffer
-
getTableId
-
close
public void close()- Specified by:
closein interfaceAutoCloseable
-
checkAndApplyTableChangesIfNeeded
private TableDescriptor checkAndApplyTableChangesIfNeeded(TableId tableId, SinkRecordDescriptor descriptor) throws SQLException - Throws:
SQLException
-
hasTable
-
readTable
-
createTable
private TableDescriptor createTable(TableId tableId, SinkRecordDescriptor record) throws SQLException - Throws:
SQLException
-
alterTableIfNeeded
private TableDescriptor alterTableIfNeeded(TableId tableId, SinkRecordDescriptor record) throws SQLException - Throws:
SQLException
-
getSqlStatement
-
writeTruncate
- Throws:
SQLException
-