Compatibility Issue with MySQL Integration Test `default_value` in TiCDC When Using Go 1.23.2
What did you do?
While working on upgrading TiCDC from Go 1.21.7 to Go 1.23.2, I encountered an issue where the MySQL integration test case default_value fails when compiled and run with Go 1.23.2, but passes successfully with Go 1.21.7. The failure happens despite no changes in the TiCDC codebase, as I only switched the Go version between test runs.
Details:
- TiCDC version: Current
masterbranch - Go versions tested: 1.21.7 (successful) and 1.23.2 (failure)
- Go version management tool:
gvm
The default_value test case is a part of TiCDC's MySQL integration test suite. Using Go 1.21.7, the case runs without any issues, but when I switch to Go 1.23.2, the same test case consistently fails. This suggests that there may be a breaking change or subtle behavior difference introduced in Go 1.23.2 that affects how TiCDC handles this test case, particularly around MySQL compatibility or the handling of default values in DDL operations.
Steps to Reproduce:
- Check out the latest
masterbranch of TiCDC. - Compile TiCDC (
make integration_test_build) with Go 1.23.2 and run the MySQL integration tests (make integration_test CASE=default_value), focusing on thedefault_valuecase. - Compile TiCDC with Go 1.21.7 and run the same test suite.
What did you expect to see?
The default_value test case passes when using compiled and run with Go 1.23.2.
What did you see instead?
- Go 1.21.7: The
default_valuetest passes without any issues. - Go 1.23.2: The same test fails, with no code changes made to TiCDC between runs.
Given that only the Go version was changed, I suspect that there may be an incompatibility between TiCDC and Go 1.23.2, possibly related to changes in how default values are handled in MySQL or Go's interaction with SQL types.
Versions of the cluster
TiCDC version (execute cdc version):
master