Class SnapshotChunkQueryBuilder

java.lang.Object
io.debezium.pipeline.source.snapshot.chunked.SnapshotChunkQueryBuilder

public class SnapshotChunkQueryBuilder extends Object
Builds SQL queries for snapshot chunks with boundary conditions.
Author:
Chris Cranford
  • Field Details

  • Constructor Details

    • SnapshotChunkQueryBuilder

      public SnapshotChunkQueryBuilder(JdbcConnection jdbcConnection)
  • Method Details

    • buildChunkQuery

      public String buildChunkQuery(SnapshotChunk chunk, List<Column> keyColumns, String baseSelect)
      Build a SELECT query for a chunk with appropriate WHERE clause.
      Parameters:
      chunk - The snapshot chunk
      keyColumns - The key columns used for chunking
      baseSelect - The base select statement (without WHERE for boundaries)
      Returns:
      Complete SELECT statement with chunk boundary conditions
    • addLowerBound

      protected void addLowerBound(List<Column> keyColumns, StringBuilder sql)
      Add lower bound condition: (k1, k2, ...) >= (?, ?, ...) For composite keys, uses cascading OR conditions.
    • addUpperBound

      protected void addUpperBound(List<Column> keyColumns, StringBuilder sql, boolean inclusive)
      Add upper bound condition: (k1, k2, ...) invalid input: '<' (?, ?, ...)
    • injectWhereClause

      private String injectWhereClause(String baseSelect, String whereClause, List<Column> keyColumns)
      Inject WHERE clause into base select, adding ORDER BY for key columns.
    • prepareChunkStatement

      public PreparedStatement prepareChunkStatement(SnapshotChunk chunk, List<Column> keyColumns, String sql) throws SQLException
      Prepare a statement and bind chunk boundary parameters.
      Throws:
      SQLException