Details
-
Bug
-
Status: Open (View Workflow)
-
Critical
-
Resolution: Unresolved
-
13.1
-
None
-
Not for Release Notes
-
Q3/2026 Server Maintenance
Description
MIXED binlog format fails to ROW-switch an unsafe-for-SBR dynamic SQL statement via PS (e.g: containing UUID()), causing replica divergence.
MTR Test case
--source include/have_innodb.inc
|
--source include/have_binlog_format_mixed.inc
|
--source include/master-slave.inc
|
|
|
connection master; |
CREATE TABLE td (id INT PRIMARY KEY AUTO_INCREMENT, |
ts_now DATETIME(6), rnd DOUBLE, uu CHAR(36), usr_var INT) ENGINE=InnoDB; |
|
|
DELIMITER $$;
|
CREATE FUNCTION f_nd(seed INT) RETURNS INT |
BEGIN
|
SET @uv = seed * 7; |
EXECUTE IMMEDIATE 'INSERT INTO td (ts_now, rnd, uu, usr_var) |
VALUES (NOW(6), RAND(?), UUID(), @uv)'
|
USING seed;
|
RETURN seed; |
END $$ |
CREATE PROCEDURE p_nd(seed INT) |
BEGIN
|
DECLARE r INT DEFAULT f_nd(seed); |
END $$ |
DELIMITER ;$$
|
|
|
--let $i = 1
|
while ($i <= 5)
|
{
|
--eval CALL p_nd($i) |
--inc $i |
}
|
|
|
SELECT * FROM td; |
|
|
--sync_slave_with_master
|
--echo # ---- MIXED should NOT diverge ----
|
|
|
connection slave; |
SELECT * FROM td; |
|
|
|
|
connection master; |
DROP PROCEDURE p_nd; |
DROP FUNCTION f_nd; |
DROP TABLE td; |
--sync_slave_with_master
|
--source include/rpl_end.inc |
MTR Out
connection master; |
CREATE TABLE td (id INT PRIMARY KEY AUTO_INCREMENT, |
ts_now DATETIME(6), rnd DOUBLE, uu CHAR(36), usr_var INT) ENGINE=InnoDB; |
CREATE FUNCTION f_nd(seed INT) RETURNS INT |
BEGIN
|
SET @uv = seed * 7; |
EXECUTE IMMEDIATE 'INSERT INTO td (ts_now, rnd, uu, usr_var) |
VALUES (NOW(6), RAND(?), UUID(), @uv)'
|
USING seed;
|
RETURN seed; |
END $$ |
CREATE PROCEDURE p_nd(seed INT) |
BEGIN
|
DECLARE r INT DEFAULT f_nd(seed); |
END $$ |
CALL p_nd(1);
|
CALL p_nd(2);
|
CALL p_nd(3);
|
CALL p_nd(4);
|
CALL p_nd(5);
|
SELECT * FROM td; |
id ts_now rnd uu usr_var
|
1 2026-07-09 10:30:48.795449 0.40540353712197724 1b2ed470-7b68-11f1-98dd-001a4a160140 7
|
2 2026-07-09 10:30:48.807406 0.6555866465490187 1b2efc87-7b68-11f1-98dd-001a4a160140 14
|
3 2026-07-09 10:30:48.808360 0.9057697559760601 1b2f2a22-7b68-11f1-98dd-001a4a160140 21
|
4 2026-07-09 10:30:48.809334 0.15595286540310166 1b2f47ff-7b68-11f1-98dd-001a4a160140 28
|
5 2026-07-09 10:30:48.810343 0.40613597483014313 1b2f6ecb-7b68-11f1-98dd-001a4a160140 35
|
connection slave; |
# ---- MIXED should NOT diverge ---- |
connection slave; |
SELECT * FROM td; |
id ts_now rnd uu usr_var
|
1 2026-07-09 10:30:48.795449 0.40540353712197724 1b3092e9-7b68-11f1-9911-001a4a160140 7
|
2 2026-07-09 10:30:48.807406 0.6555866465490187 1b30b55e-7b68-11f1-9911-001a4a160140 14
|
3 2026-07-09 10:30:48.808360 0.9057697559760601 1b30e962-7b68-11f1-9911-001a4a160140 21
|
4 2026-07-09 10:30:48.809334 0.15595286540310166 1b3100e0-7b68-11f1-9911-001a4a160140 28
|
5 2026-07-09 10:30:48.810343 0.40613597483014313 1b311486-7b68-11f1-9911-001a4a160140 35
|
connection master; |
DROP PROCEDURE p_nd; |
DROP FUNCTION f_nd; |
DROP TABLE td; |
connection slave; |
include/rpl_end.inc
|
Attachments
Issue Links
- is caused by
-
MDEV-39518 Allow prepared statements in stored functions in assignment right hand
-
- In Testing
-