Skip to content

Revert MySQL source versioning changes#36211

Merged
patrickwwbutler merged 4 commits intoMaterializeInc:mainfrom
patrickwwbutler:patrick/mysql-revert
Apr 22, 2026
Merged

Revert MySQL source versioning changes#36211
patrickwwbutler merged 4 commits intoMaterializeInc:mainfrom
patrickwwbutler:patrick/mysql-revert

Conversation

@patrickwwbutler
Copy link
Copy Markdown
Contributor

These changes have been determined to be the cause of incident-971.

There is a fix for the issue in #36195, but to be safe, and give us more time to verify and test these changes, we will revert the original breaking changes as a mitigation, until we are confident in the fixes.

@patrickwwbutler patrickwwbutler requested review from a team as code owners April 22, 2026 15:03
Copy link
Copy Markdown
Contributor

@martykulma martykulma left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm!

Copy link
Copy Markdown
Contributor

@def- def- left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Triggered full nightly just in case: https://buildkite.com/materialize/nightly/builds/16176

@def-
Copy link
Copy Markdown
Contributor

def- commented Apr 22, 2026

There might be problems with upgrading: https://buildkite.com/materialize/nightly/builds/16176

15:1: executing query failed: db error: ERROR: MYSQL source validation: The MySQL system variable 'binlog_row_metadata' is set to an unsupported value: MINIMAL. Materialize requires this variable to be set to 'FULL' to use the "CREATE TABLE FROM SOURCE" syntax for MySQL sources.
     |
   2 | $ postgres-execute c ... [rest of line truncated for security]
   5 | $ mysql-connect name ... [rest of line truncated for security]
  14 |   FROM MYSQL CONNECTION mysql2_true;
  15 | > CREATE TABLE mysql_source_tableB_true FROM SOURCE mysql_source2_true (REFERENCE public.mysql_source_table_true);
     | ^

Or maybe the tests just need to be updated?

@patrickwwbutler
Copy link
Copy Markdown
Contributor Author

There might be problems with upgrading: https://buildkite.com/materialize/nightly/builds/16176

15:1: executing query failed: db error: ERROR: MYSQL source validation: The MySQL system variable 'binlog_row_metadata' is set to an unsupported value: MINIMAL. Materialize requires this variable to be set to 'FULL' to use the "CREATE TABLE FROM SOURCE" syntax for MySQL sources.
     |
   2 | $ postgres-execute c ... [rest of line truncated for security]
   5 | $ mysql-connect name ... [rest of line truncated for security]
  14 |   FROM MYSQL CONNECTION mysql2_true;
  15 | > CREATE TABLE mysql_source_tableB_true FROM SOURCE mysql_source2_true (REFERENCE public.mysql_source_table_true);
     | ^

Or maybe the tests just need to be updated?

I reverted the code that throws that error - that error type has literally been deleted. I think this is a case where the python code running the test is updated, but the rust isn't?

@def-
Copy link
Copy Markdown
Contributor

def- commented Apr 22, 2026

Yes, that's how the upgrade test works, the new Python code runs against old Materialize version when we upgrade it. You can use conditional versions to run different code if it's required: https://github.com/MaterializeInc/materialize/blob/main/doc/developer/testdrive.md#run-an-actionquery-conditionally-on-version
Tell me if you want me to take a closer look and fix up the tests!

@def-
Copy link
Copy Markdown
Contributor

def- commented Apr 22, 2026

Pushed a potential fix for the test, verifying: https://buildkite.com/materialize/nightly/builds/16178

It's a bit unfortunate that we now always have FULL set in MySQL for testing. @patrickwwbutler How bad is that?

I'm hoping it's a temporary bandaid and we'll reapply the PR soon anyway.

Copy link
Copy Markdown
Contributor

@def- def- left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nightly seems fine now, I'm signing off soon for today.

@patrickwwbutler
Copy link
Copy Markdown
Contributor Author

patrickwwbutler commented Apr 22, 2026

It's a bit unfortunate that we now always have FULL set in MySQL for testing. @patrickwwbutler How bad is that?

I'm hoping it's a temporary bandaid and we'll reapply the PR soon anyway.

Well having FULL always set is actually how I missed the bug that caused the incident in the first place, so I guess it's not great, but it shouldn't matter at all for now besides the upgrade tests, and when we reapply I will set up proper testing of both FULL and MINIMAL to avoid this

Thank you for staying late to help!

@patrickwwbutler patrickwwbutler merged commit fc8d9dc into MaterializeInc:main Apr 22, 2026
338 of 342 checks passed
@def-
Copy link
Copy Markdown
Contributor

def- commented Apr 23, 2026

What we could do is use MINIMAL in all tests except feature-benchmark, workload-replay and platform-checks with upgrades, which stay on FULL

patrickwwbutler added a commit to patrickwwbutler/materialize that referenced this pull request Apr 23, 2026
This reverts commit fc8d9dc.
This effectively unreverts the mysql source versioning revert
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants