Compatibility Issue with MySQL Integration Test `default_value` in TiCDC When Using Go 1.23.2
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 464
- Forks
- 313
- Avg merge
- 4d 7h
- Merged PRs (30d)
- 14
Description
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
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the make integration_test_build and make integration_test CASE=default_value entry points on master, reproducing the failure under Go 1.23.2 and the passing result under Go 1.21.7. Compare the integration-test output and the default_value case behavior; the work is done when the case passes under Go 1.23.2 and the compatibility cause is addressed.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go, mysql
- Domain
- databases, testing-qa
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100