Release Notes for Debezium 1.5

All notable changes for Debezium releases are documented in this file. Release numbers follow Semantic Versioning.

Release 1.5.0.Final (April 7th, 2021)

Kafka compatibility

This release has been built against Kafka Connect 2.7.0 and has been tested with version 2.7.0 of the Kafka brokers. See the Kafka documentation for compatibility with other versions of Kafka brokers.

Upgrading

Before upgrading any connector, be sure to check the backward-incompatible changes that have been made since the release you were using.

When you decide to upgrade one of these connectors to 1.5.0.Final from any earlier versions, first check the migration notes for the version you’re using. Gracefully stop the running connector, remove the old plugin files, install the 1.5.0.Final plugin files, and restart the connector using the same configuration. Upon restart, the 1.5.0.Final connectors will continue where the previous connector left off. As one might expect, all change events previously written to Kafka by the old connector will not be modified.

If you are using our docker images then do not forget to pull them fresh from Docker registry.

Breaking changes

There are no breaking changes in the release.

New Features

  • Add support for Redis Streams target in Debezium Server DBZ-2879

  • Provide LSN coordinates as standardized sequence field DBZ-2911

Fixes

  • Do not mine Data Guard archive log entries DBZ-3341

  • Debezium stuck in an infinite loop on boot DBZ-3343

  • Schema change SourceRecords have null partition DBZ-3347

  • LogMiner can incorrectly resolve that SCN is available DBZ-3348

  • The event.deserialization.failure.handling.mode is documented incorrectly DBZ-3353

  • DB2 Function wrong DBZ-3362

  • LogMiner parser incorrectly parses UNISTR function DBZ-3367

  • Invalid Decimal schema: scale parameter not found DBZ-3371

Other changes

  • Allow Debezium Server to be used with Apicurio converters DBZ-2388

  • Remove connector properties from descriptors on the /connector-types response DBZ-3316

  • Literal attribute rendered in deployment instructions for the downstream PostgreSQL connector DBZ-3338

  • Fix test failures due to existing database object artifacts DBZ-3344

  • Use correct repository level PAT for building debezium website DBZ-3345

  • Document configuration of max.request.size DBZ-3355

  • Use Java 8 for Cassandra workflow DBZ-3357

  • Trigger workflow on workflow definition update DBZ-3358

  • Prefer DDL before logical schema in history recovery DBZ-3361

  • Add missing space and omitted command to PostgreSQL connector doc DBZ-3372

  • Wrong badge on Docker Hub DBZ-3383

Release 1.5.0.CR1 (March 24th, 2021)

Kafka compatibility

This release has been built against Kafka Connect 2.7.0 and has been tested with version 2.7.0 of the Kafka brokers. See the Kafka documentation for compatibility with other versions of Kafka brokers.

Upgrading

Before upgrading any connector, be sure to check the backward-incompatible changes that have been made since the release you were using.

When you decide to upgrade one of these connectors to 1.5.0.CR1 from any earlier versions, first check the migration notes for the version you’re using. Gracefully stop the running connector, remove the old plugin files, install the 1.5.0.CR1 plugin files, and restart the connector using the same configuration. Upon restart, the 1.5.0.CR1 connectors will continue where the previous connector left off. As one might expect, all change events previously written to Kafka by the old connector will not be modified.

If you are using our docker images then do not forget to pull them fresh from Docker registry.

Breaking changes

Oracle connector was promoted from incubation to stable state (DBZ-3290). As the result the following changes were included to prevent future breaking changes

  • configuration option database.oracle.version has been removed

  • the LogMiner specific metrics has been incorporated to the streaming metrics

  • scn and commit_scn fields in the source info block are no longer LONG but STRING to enable very large SCN values (DBZ-2994)

New Features

  • Upgrade to Apache Kafka 2.7.0 DBZ-2872

  • Add more parameters to TLS support DBZ-3262

Fixes

  • Debezium logs "is not a valid Avro schema name" can be too verbose DBZ-2511

  • message.key.columns Regex Validation Time Complexity DBZ-2957

  • OID values don’t fit to INT32 schema DBZ-3033

  • Connector automatically restart on ORA-26653 DBZ-3236

  • UI container has no assets (JS artifacts, fonts, etc) and randomly fails building DBZ-3247

  • Revert Clob behavior for Oracle LogMiner to avoid null values DBZ-3257

  • SQL Server misses description for decimal.handling.mode DBZ-3267

  • Oracle connector ignores time.precision.mode and just uses adaptive mode DBZ-3268

  • commons-logging JAR is missing from Debezium Server distro DBZ-3277

  • MongoDB timeouts crash the whole connector DBZ-3278

  • Prefer archive logs over redo logs of the same SCN range DBZ-3292

  • LogMiner mining query may unintentionally skip records DBZ-3295

  • IndexOutOfBoundsException when LogMiner DML update statement contains a function as last column’s value DBZ-3305

  • Out of memory with mysql snapshots (regression of DBZ-94) DBZ-3309

  • Keyword ORDER is a valid identifier in MySQL grammar DBZ-3310

  • DDL statement couldn’t be parsed for ROW_FORMAT=TOKUDB_QUICKLZ DBZ-3311

  • LogMiner can miss a log switch event if too many switches occur. DBZ-3319

  • Function MOD is missing from MySQL grammar DBZ-3333

  • Incorrect SR label names in OCP testusite DBZ-3336

  • DB2 upstream tests are still using master as the default branch DBZ-3337

Other changes

  • Demo: Exploring non-key joins of Kafka Streams 2.4 DBZ-2100

  • Publish Debezium BOM POM DBZ-2145

  • Use BigInteger as SCN rather than BigDecimal DBZ-2457

  • Document ChangeConsumer usage for Debezium Engine DBZ-2520

  • Add check that target release is set DBZ-2536

  • Consolidate multiple JMX beans during Oracle streaming with LogMiner DBZ-2537

  • Create script for listing all contributors of a release DBZ-2592

  • Explicitly mention Debezium Engine database history config for different connectors DBZ-2665

  • Cleanup by restructuring Debezium UI REST API structure DBZ-3031

  • Make Debezium main repo build checks artifacts for CI/CD checks in sibling repositories available on Maven Central DBZ-3142

  • Handle duplicate warnings for deprecated options DBZ-3218

  • Upgrade Jackson as per AK 2.7 DBZ-3221

  • Document the need of qualified names in snapshot.include.collection.list DBZ-3244

  • Add snapshot.select.statement.override options to Oracle documentation DBZ-3250

  • Remove all possible backend calls from non-validation mode DBZ-3255

  • Document delayed TX END markers DBZ-3261

  • Extended scripting SMT docs with handling of non-data events DBZ-3269

  • Unify column inclusion/exclusion handling DBZ-3271

  • Downstream conditional spans topic boundary in db2 doc DBZ-3272

  • Add info about languge dependencies into scripting SMTs DBZ-3280

  • Copyright check script should take additional connector repos into consideration DBZ-3281

  • Intermittent failure of MyMetricsIT.testStreamingOnlyMetrics DBZ-3304

  • Remove references to supported configurations from Db2 connector documentation DBZ-3308

  • Use separate API calls to get the connector info(name, id etc) and details(Properties) DBZ-3314

  • Documentation updates should trigger a website build DBZ-3320

  • Cassandra connector is not part of core CI build DBZ-3335

Release 1.5.0.Beta2 (March 12th, 2021)

Kafka compatibility

This release has been built against Kafka Connect 2.6.1 and has been tested with version 2.6.1 of the Kafka brokers. See the Kafka documentation for compatibility with other versions of Kafka brokers.

Upgrading

Before upgrading any connector, be sure to check the backward-incompatible changes that have been made since the release you were using.

When you decide to upgrade one of these connectors to 1.5.0.Beta2 from any earlier versions, first check the migration notes for the version you’re using. Gracefully stop the running connector, remove the old plugin files, install the 1.5.0.Beta2 plugin files, and restart the connector using the same configuration. Upon restart, the 1.5.0.Beta2 connectors will continue where the previous connector left off. As one might expect, all change events previously written to Kafka by the old connector will not be modified.

If you are using our docker images then do not forget to pull them fresh from Docker registry.

Breaking changes

The Oracle connector emits NUMBER(1) columns as int8 now by default. To emit them as boolean instead, use the io.debezium.connector.oracle.converters.NumberOneToBooleanConverter as described in the connector documentation (DBZ-3208).

The Debezium connector for Oracle now uses the LogMiner-based capturing implementation by default. In order to use the XStream-based implementation, set the connector option database.connection.adapter to xstream (DBZ-3241).

New Features

  • Detect and skip non-parent index-organized tables DBZ-3036

  • Capture additional JMX metrics for LogMiner DBZ-3038

  • Incorrect information in Debezium connector for Postgres documentation DBZ-3197

  • Add support for SET column type DBZ-3199

  • Improve relocation logic for processed commitLog files DBZ-3224

  • Disable log.mining.transaction.retention.hours logic by default DBZ-3242

  • Provide a signalling table DBZ-3141

  • Update sensitive env vars for connect-base image DBZ-3223

  • Support specifying kinesis endpoint in debezium server DBZ-3246

  • Add log4j.properties file DBZ-3248

Fixes

  • Error in LSN DBZ-2417

  • Connector restarts with an SCN that was previously processed. DBZ-2875

  • Misleading error message for filtered publication with misconfigured filters DBZ-2885

  • There are still important problems with Oracle LogMiner DBZ-2976

  • Don’t execute initial statements upon connector validation DBZ-3030

  • Forever stuck with new binlog parser (1.3 and later) when processing big JSON column data DBZ-3106

  • Change Events are not captured after initial load DBZ-3128

  • Repeating Unknown schema error even after recent schema_recovery DBZ-3146

  • CloudEvent value id field is not unique DBZ-3157

  • Oracle connector fails when using database.tablename.case.insensitive=true DBZ-3190

  • DML parser IndexOutOfRangeException with where-clause using "IS NULL" DBZ-3193

  • ORA-01284 file cannot be opened error when file locked by another process DBZ-3194

  • CommitThroughput metrics can raise division by zero error DBZ-3200

  • LogMiner does not process NUMBER(1) data DBZ-3208

  • Update MongoDB driver version DBZ-3212

  • Extra connectors are not buildable unless main Debezium is built locally DBZ-3213

  • Docker image debezium/server:1.5 won’t start DBZ-3217

  • Debezium Oracle Connector not excluding table columns DBZ-3219

  • LogMiner parse failure with Update DML with no where condition DBZ-3235

  • Debezium 1.4.2.Final and onwards unable to parse sasl.jaas.config from env var DBZ-3245

  • Debezium engine should call stop on task even when start fails DBZ-3251

  • No meaningful message provided when oracle driver is missing DBZ-3254

Other changes

  • Discuss capture job configuration as a tuning option for SQL Server and Db2 DBZ-2122

  • Prepare customizing auto-created topics doc for downstream DBZ-2654

  • Wrong warning about deprecated options DBZ-3084

  • Have non-validating mode in the UI DBZ-3088

  • Move container image builds to GH Actions DBZ-3131

  • Exclude CommonConnectorConfig.PROVIDE_TRANSACTION_METADATA from connectors not supporting it DBZ-3132

  • Add example for Debezium UI to debezium-examples repo DBZ-3134

  • Clarify required privileges for using pgoutput DBZ-3138

  • Do not rely on Max SCN seed value w/LogMiner DBZ-3145

  • Postgres documentation improvements DBZ-3149

  • Support running Oracle test suite in non-CDB (no PDB name) mode DBZ-3154

  • Update Oracle documentation DBZ-3156

  • Move the Oracle connector to the main repostory DBZ-3166

  • Minor editorial update to PostgreSQL connector documentation DBZ-3192

  • Incorrect link/anchor pair for truncate.handling.mode property in PG properties documentation DBZ-3195

  • Update oracle-vagrant-box DBZ-3206

  • Update Oracle versions tested DBZ-3215

  • Oracle test suite does not always clean-up tables after tests DBZ-3237

  • Update Oracle tutorial example DBZ-3239

  • Use LogMiner adapter by default for Oracle connector DBZ-3241

  • Avoid reference to upstream Docker set-up DBZ-3259

Release 1.5.0.Beta1 (February 23rd, 2021)

Kafka compatibility

This release has been built against Kafka Connect 2.6.1 and has been tested with version 2.6.1 of the Kafka brokers. See the Kafka documentation for compatibility with other versions of Kafka brokers.

Upgrading

Before upgrading any connector, be sure to check the backward-incompatible changes that have been made since the release you were using.

When you decide to upgrade one of these connectors to 1.5.0.Beta1 from any earlier versions, first check the migration notes for the version you’re using. Gracefully stop the running connector, remove the old plugin files, install the 1.5.0.Beta1 plugin files, and restart the connector using the same configuration. Upon restart, the 1.5.0.Beta1 connectors will continue where the previous connector left off. As one might expect, all change events previously written to Kafka by the old connector will not be modified.

If you are using our docker images then do not forget to pull them fresh from Docker registry.

Breaking changes

A regression in the binlog client used by Debezium was identified where large JSON documents in a MySQL JSON column cause a severe performance degredation (DBZ-3106). This issue is under active discussion with the maintainer of the binlog client library.

In earlier versions of Debezium, the MySQL connector incorrectly emitted snapshot events using the c (create) operation type instead of the correct type r (read). If you have consumers which rely on that earlier behavior, you can use the io.debezium.connector.mysql.transforms.ReadToInsertEvent single message transform to emulate that earlier behavior (DBZ-2788). A connector option which accidentally was introduced in 1.4.0 for this same purpose, snapshot.events.as.inserts, got removed again, and the SMT should be used instead in this situation. This SMT is meant for migration purposes only and will be removed in a future Debezium version.

The (incubating) Debezium connector for Oracle emits transaction ids in lower-case now, differing from the previous behavior of returning them as upper-case (DBZ-3165).

The previously deprecated snapshot mode INITIAL_SCHEMA_ONLY of the Oracle connector has been removed. Please use SCHEMA_ONLY instead (DBZ-3034).

New Features

  • Make field descriptions consistent for time values (milliseconds, ms, sec, seconds, etc) DBZ-2858

  • DebeziumEngine RecordChangeEvents cannot be modified DBZ-2897

  • Add license headers and related checkstyle checks for Debezium UI files DBZ-2985

  • Display commit SHA of UI frontend/backend somewhere in the footer DBZ-3052

  • Implement UX suggestions for display of connector type DBZ-3054

  • SqlServerConnector does not implement validate DBZ-3056

  • Database History Producer does not close with a timeout DBZ-3075

  • Improve DML parser performance DBZ-3078

  • Connector list table UI improvement desktop/mobile DBZ-3079

  • Vitess Connector adds support for Vitess 9.0.0 GA DBZ-3100

  • Improve layout for Column Truncate - Mask Component DBZ-3101

  • Improve layout for Data options component and main wizard nav DBZ-3105

  • Add ability to skip tests based on available database options DBZ-3110

  • Support for Transaction Metadata in MySql connector DBZ-3114

  • Add support for JSON column type DBZ-3115

  • Add support for ENUM column type DBZ-3124

  • Enable easy downloading of Camel Kafka Connectors DBZ-3136

  • Capture LogMiner session parameters when session fails to start DBZ-3153

  • Process special values in temporal datatypes DBZ-2614

Fixes

  • Negative timestamps are converted to positive during snapshot DBZ-2616

  • Wrong reference to KafkaConnector in setting up Debezium DBZ-2745

  • Oracle Connector(Using Logminer) with Oracle RDS (v12) does not capture changes DBZ-2754

  • Oracle connector causes ORA-65090 when connecting to an Oracle instance running in non-CDB mode DBZ-2795

  • Warnings and notifications from PostgreSQL are ignored by the connector until the connection is closed DBZ-2865

  • Add support for MySQL to UI Backend DBZ-2950

  • ExtractNewRecord SMT incorrectly extracts ts_ms from source info DBZ-2984

  • Replication terminates with ORA-01291: missing log file DBZ-3001

  • Kafka Docker image the HEAP_OPTS variable is not used DBZ-3006

  • Support multiple schemas with Oracle LogMiner DBZ-3009

  • Function calls does not allow parentheses for functions with non-mandatory parentheses DBZ-3017

  • Complete support for properties that contain hyphens DBZ-3019

  • UI issues with connectors table row expansion state DBZ-3049

  • SQLException for Global temp tables from OracleDatabaseMetaData.getIndexInfo() makes Debezium snapshotting fail DBZ-3057

  • Cassandra Connector doesn’t support Cassandra version >=3.11.5 DBZ-3060

  • Make Cassandra Connector work with CommitLogTransfer better DBZ-3063

  • no viable alternative at input 'create or replace index' DBZ-3067

  • Connect image propagates env vars starting with CONNECT prefix DBZ-3070

  • PgOutputMessageDecoder doesn’t order primary keys DBZ-3074

  • Strange transaction metadata for Oracle logminer connector DBZ-3090

  • Getting RejectedExecutionException when checking topic settings from KafkaDatabaseHistory.checkTopicSettings DBZ-3096

  • Environment Variables with spaces are truncated when written to properties file DBZ-3103

  • Error: Supplemental logging not configured for table. Use command: ALTER TABLE DBZ-3109

  • Uncaught (in promise) TypeError: Cannot read property 'call' of undefined DBZ-3125

  • Final stage of snapshot analyzes tables not present in table.include.list thus stumbles upon unsupported XMLTYPE table DBZ-3151

  • Missing Prometheus port in kafka network policy DBZ-3170

  • XStream does not process NUMER(1) data DBZ-3172

Other changes

  • Setup CI job for DB2 DBZ-2235

  • Integration with Service Registry promoted to GA DBZ-2815

  • Remove DECIMAL string sanitisation once Vitess upstream bug is fixed DBZ-2908

  • Review format and configuration options for Db2 for GA DBZ-2977

  • Test with Postgres 13 DBZ-3022

  • Prepare Debezium UI to participate in upstream releases DBZ-3027

  • Upgrade testcontainers to 1.15.1 DBZ-3066

  • Use new deployment endpoint for releases to Maven Central DBZ-3069

  • Remove obsolete Awestruct container image DBZ-3072

  • "JDBC driver" doesn’t make sense for non-relational connectors DBZ-3076

  • Replace RecordMakers with MySqlChangeRecordEmitter DBZ-3077

  • Make CI builds resilient against disconnects on GH Actions infrastructure DBZ-3083

  • Separate SourceInfo and MySQL offset context DBZ-3086

  • Remove zero-width whitespace from option names DBZ-3087

  • Adapt UI for MySQL connector type DBZ-3091

  • Change MySQL database schema contract to support separate parsing and processing phase DBZ-3093

  • MySQL build stuck for 6h DBZ-3095

  • Rewrite legacy reader tests DBZ-3099

  • Intermittent test failure in Postgres PostgresConnectorIT#customSnapshotterSkipsTablesOnRestart DBZ-3107

  • Remove duplicate anchor links in Connector properties DBZ-3111

  • Upgrade to Quarkus 1.12.0.Final DBZ-3116

  • Config validation for Vitess DBZ-3117

  • Config validation for Oracle DBZ-3119

  • Avoid naming conflict between connection classes DBZ-3147

  • Set up commit message check for Vitess DBZ-3152

  • Put IIDR license requirement into NOTE box DBZ-3163

  • Consistent logging of connection validation failure DBZ-3164

  • Remove COLUMN_BLACK_LIST option in Oracle connector DBZ-3167

Release 1.5.0.Alpha1 (February 4th, 2021)

Kafka compatibility

This release has been built against Kafka Connect 2.6.1 and has been tested with version 2.6.1 of the Kafka brokers. See the Kafka documentation for compatibility with other versions of Kafka brokers.

Upgrading

Before upgrading any connector, be sure to check the backward-incompatible changes that have been made since the release you were using.

When you decide to upgrade one of these connectors to 1.5.0.Alpha1 from any earlier versions, first check the migration notes for the version you’re using. Gracefully stop the running connector, remove the old plugin files, install the 1.5.0.Alpha1 plugin files, and restart the connector using the same configuration. Upon restart, the 1.5.0.Alpha1 connectors will continue where the previous connector left off. As one might expect, all change events previously written to Kafka by the old connector will not be modified.

If you are using our docker images then do not forget to pull them fresh from Docker registry.

Breaking changes

A new capturing implementation for the Debezium MySQL connector has been created (DBZ-1865) based on the common connector framework used by all the other Kafka Connect connectors of Debezium. The connector behaviour is almost in parity with previous implementation, with the exception of the experimental parallel snapshotting feature (DBZ-175), which isn’t available with the new implementation yet and which is planned to be re-introduced later in a different form. If you encounter any issues with the new MySQL connector implementation, please log a Jira issue; in this case, you can use the legacy implementation by setting the internal.implementation=legacy connector configuration option.

New Features

  • Support emitting TRUNCATE events in PostgreSQL pgoutput plugin DBZ-2382

  • Migrate DebeziumContainer enhancements for DBZ-2950 and DBZ-2952 into main repository DBZ-3024

  • Implement meta tags DBZ-2620

  • Improve performance for very large postgres schemas DBZ-2575

Fixes

  • Extra connectors are not buildable unless main Debezium is built locally DBZ-2901

  • java.sql.SQLException: ORA-01333: failed to establish Logminer Dictionary DBZ-2939

  • Add support for connector/task lifecycle ops to UI backend DBZ-2951

  • Cassandra CDC failed to deserialize list<UserType> column correct DBZ-2974

  • Debezium Oracle Connector will appear stuck on large SCN jumps DBZ-2982

  • Invalid regex patterns should fail validation when validation database.include/exclude.list properties for MySQL connector DBZ-3008

  • Fix repository config for Jenkis snapshot deployment DBZ-3011

  • Unable to parse non-constant SIGNAL option value DBZ-3018

  • Cannot parse expression in DEFAULT column definition DBZ-3020

  • Key being used as value in pubsub batch handler DBZ-3037

  • Table creation DDL with CHARACTER SET = DEFAULT causes MySQL connector failure DBZ-3023

  • Missing some MariaDB existence predicates in ALTER TABLE DBZ-3039

Other changes

  • Improved resiliency of release process against OSS failures DBZ-2274

  • Pull up HOSTNAME, PORT, DATABASE_NAME, USER and PASSWORD to RelationalDatabaseConnectorConfig DBZ-2420

  • Db2 Connector doesn’t declare database related config options DBZ-2424

  • Fix build status badge in README files DBZ-2802

  • Merge and complete web components PR DBZ-2804

  • IBM Db2 Connector promoted to GA DBZ-2814

  • Document several Oracle frequently encountered problems DBZ-2970

  • No syntax highlighting on website listings DBZ-2978

  • Admonition icons missing DBZ-2986

  • Improve logging for Logminer adapter DBZ-2999

  • CI build not required for changes in README files DBZ-3012

  • Execute ZZZGtidSetIT as the last test DBZ-3047

  • Capture and report LogMiner state when mining session fails to start DBZ-3055