Class Db2ChunkSplitter
- java.lang.Object
-
- org.apache.flink.cdc.connectors.base.source.assigner.splitter.JdbcSourceChunkSplitter
-
- org.apache.flink.cdc.connectors.db2.source.dialect.Db2ChunkSplitter
-
- All Implemented Interfaces:
ChunkSplitter
@Internal public class Db2ChunkSplitter extends JdbcSourceChunkSplitter
The splitter to split the table into chunks using primary-key (by default) or a given split key.
-
-
Field Summary
-
Fields inherited from class org.apache.flink.cdc.connectors.base.source.assigner.splitter.JdbcSourceChunkSplitter
dialect, sourceConfig
-
-
Constructor Summary
Constructors Constructor Description Db2ChunkSplitter(JdbcSourceConfig sourceConfig, JdbcDataSourceDialect dialect, ChunkSplitterState chunkSplitterState)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected org.apache.flink.table.types.DataTypefromDbzColumn(io.debezium.relational.Column splitColumn)Get a corresponding Flink data type from a debeziumColumn.protected LongqueryApproximateRowCnt(io.debezium.jdbc.JdbcConnection jdbc, io.debezium.relational.TableId tableId)Approximate total number of entries in the lookup table.protected ObjectqueryNextChunkMax(io.debezium.jdbc.JdbcConnection jdbc, io.debezium.relational.TableId tableId, io.debezium.relational.Column column, int chunkSize, Object includedLowerBound)Query the maximum value of the next chunk, and the next chunk must be greater than or equal toincludedLowerBoundvalue [min_1, max_1), [min_2, max_2),...-
Methods inherited from class org.apache.flink.cdc.connectors.base.source.assigner.splitter.JdbcSourceChunkSplitter
calculateDistributionFactor, close, generateSplits, getCurrentSplittingTableId, getSplitColumn, hasNextChunk, isChunkEndGeMax, isChunkEndLeMax, isEvenlySplitColumn, open, queryMin, queryMinMax, snapshotState
-
-
-
-
Constructor Detail
-
Db2ChunkSplitter
public Db2ChunkSplitter(JdbcSourceConfig sourceConfig, JdbcDataSourceDialect dialect, ChunkSplitterState chunkSplitterState)
-
-
Method Detail
-
fromDbzColumn
protected org.apache.flink.table.types.DataType fromDbzColumn(io.debezium.relational.Column splitColumn)
Description copied from class:JdbcSourceChunkSplitterGet a corresponding Flink data type from a debeziumColumn.- Specified by:
fromDbzColumnin classJdbcSourceChunkSplitter- Parameters:
splitColumn- dbz split column.- Returns:
- flink data type
-
queryNextChunkMax
protected Object queryNextChunkMax(io.debezium.jdbc.JdbcConnection jdbc, io.debezium.relational.TableId tableId, io.debezium.relational.Column column, int chunkSize, Object includedLowerBound) throws SQLException
Description copied from class:JdbcSourceChunkSplitterQuery the maximum value of the next chunk, and the next chunk must be greater than or equal toincludedLowerBoundvalue [min_1, max_1), [min_2, max_2),... [min_n, null). Each time this method is called it will return max1, max2...Each database has different grammar to get limit number of data, for example, `limit N` in mysql or postgres, `top(N)` in sqlserver , `FETCH FIRST %S ROWS ONLY` in DB2.
- Specified by:
queryNextChunkMaxin classJdbcSourceChunkSplitter- Parameters:
jdbc- JDBC connection.tableId- table identity.column- column.chunkSize- chunk size.includedLowerBound- the previous chunk end value.- Returns:
- next chunk end value.
- Throws:
SQLException
-
queryApproximateRowCnt
protected Long queryApproximateRowCnt(io.debezium.jdbc.JdbcConnection jdbc, io.debezium.relational.TableId tableId) throws SQLException
Description copied from class:JdbcSourceChunkSplitterApproximate total number of entries in the lookup table.Each database has different system table to lookup up approximate total number. For example, `pg_class` in postgres, `sys.dm_db_partition_stats` in sqlserver, `SYSCAT.TABLE` in db2.
- Specified by:
queryApproximateRowCntin classJdbcSourceChunkSplitter- Parameters:
jdbc- JDBC connection.tableId- table identity.- Returns:
- approximate row count.
- Throws:
SQLException
-
-