You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
MySQL Source Versioning V2 - reorganized boogaloo (#36333)
This PR effectively re-implements source versioning for mysql after we
reverted the initial implementation last week due to decoding problems
with exclude columns resulting in an incident. In doing so, it fixes a
number of issues that existed with the first implementation, including:
MaterializeInc/database-issues#11312MaterializeInc/database-issues#11313MaterializeInc/database-issues#11315
And provides a safer mechanism for handling schema changes and changes
to the `binlog_row_metadata` MySQL system variable.
The first commit is roughly the changes in
#36253 which should be
merged first, and is required for the other changes.
Second commit updates the decoding logic based on the binlog metadata
setting at source creation
Third commit updates the logic to verify mysql schemas with the schemas
in the upstream, allowing for certain types of schema changes when
binlog_row_metadata is FULL.
Fourth commit contains docs for how to make schema changes to your mysql
source without downtime in materialize.
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
"Table {0} was created with binlog_row_metadata=FULL but binlog_row_metadata has since been set to a different value, meaning we cannot reliably decode the columns",
307
+
output.table_name
308
+
),
309
+
)))
310
+
}else{
311
+
matchpack_mysql_row(
312
+
&mut final_row,
313
+
row_val,
314
+
&output.desc,
315
+
Some(>id_str),
316
+
output.binlog_full_metadata,
317
+
){
318
+
Ok(row) => Ok(SourceMessage{
319
+
key:Row::default(),
320
+
value: row,
321
+
metadata:Row::default(),
322
+
}),
323
+
// Produce a DefiniteError in the stream for any rows that fail to decode
0 commit comments