Description:
A binlog event inconsistency error occurs when modifying both computed index columns and data partitions simultaneously.
How to repeat:
mysql> CREATE TABLE `test_blob` (
`uid` int NOT NULL,
`name` varchar(100) DEFAULT NULL,
`raw_data` varchar(8000) DEFAULT NULL,
`data` blob GENERATED ALWAYS AS (cast(`raw_data` as char charset binary)) VIRTUAL,
PRIMARY KEY (`uid`),
KEY `idx_name` (`name`),
KEY `idx_data` (`data`(100))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
/*!50100 PARTITION BY RANGE (`uid`)
(PARTITION p0 VALUES LESS THAN (3000000) ENGINE = InnoDB,
PARTITION p1 VALUES LESS THAN (6000000) ENGINE = InnoDB) */;
mysql> insert into test_blob (uid, name, raw_data) values (1, 'a', '11111111111111111111111111111111111111111111111111111111111111111111111111111');
mysql> update test_blob set raw_data = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', uid = 4000001 where uid = 1;
Use the mysqlbinlog tool to view the binlog events corresponding to the recent update operation:
BINLOG '
TamFahNsIAAARgAAAK8BAAAAAGcAAAAAAAEABHRlc3QACXRlc3RfYmxvYgAEAw8P/AWQAQB9Ag4B
AQACBfz/AAI/hRMjfw==
TamFah9sIAAAbwEAAB4DAAAAAGcAAAAAAAEABwABAQAAAAT//wABAAAAAQBhTQAxMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMU0AMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEAAQk9AAEAYUoAYWFhYWFhYWFhYWFhYWFh
YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh
YWFKADExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExuMfnjg==
'/*!*/;
### Extra row info for partitioning: source_partition: 0 target_partition: 1
### UPDATE `test`.`test_blob`
### WHERE
### @1=1 /* INT meta=0 nullable=0 is_null=0 */
### @2='a' /* VARSTRING(400) meta=400 nullable=1 is_null=0 */
### @3='11111111111111111111111111111111111111111111111111111111111111111111111111111' /* VARSTRING(32000) meta=32000 nullable=1 is_null=0 */
### @4='11111111111111111111111111111111111111111111111111111111111111111111111111111' /* BLOB/TEXT meta=2 nullable=1 is_null=0 */
### SET
### @1=4000001 /* INT meta=0 nullable=0 is_null=0 */
### @2='a' /* VARSTRING(400) meta=400 nullable=1 is_null=0 */
### @3='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' /* VARSTRING(32000) meta=32000 nullable=1 is_null=0 */
### @4='11111111111111111111111111111111111111111111111111111111111111111111111111' /* BLOB/TEXT meta=2 nullable=1 is_null=0 */
# at 798
#260819 21:02:05 server id 8300 end_log_pos 829 CRC32 0x47fdd684 Xid = 33
COMMIT/*!*/;
Description: A binlog event inconsistency error occurs when modifying both computed index columns and data partitions simultaneously. How to repeat: mysql> CREATE TABLE `test_blob` ( `uid` int NOT NULL, `name` varchar(100) DEFAULT NULL, `raw_data` varchar(8000) DEFAULT NULL, `data` blob GENERATED ALWAYS AS (cast(`raw_data` as char charset binary)) VIRTUAL, PRIMARY KEY (`uid`), KEY `idx_name` (`name`), KEY `idx_data` (`data`(100)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci /*!50100 PARTITION BY RANGE (`uid`) (PARTITION p0 VALUES LESS THAN (3000000) ENGINE = InnoDB, PARTITION p1 VALUES LESS THAN (6000000) ENGINE = InnoDB) */; mysql> insert into test_blob (uid, name, raw_data) values (1, 'a', '11111111111111111111111111111111111111111111111111111111111111111111111111111'); mysql> update test_blob set raw_data = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', uid = 4000001 where uid = 1; Use the mysqlbinlog tool to view the binlog events corresponding to the recent update operation: BINLOG ' TamFahNsIAAARgAAAK8BAAAAAGcAAAAAAAEABHRlc3QACXRlc3RfYmxvYgAEAw8P/AWQAQB9Ag4B AQACBfz/AAI/hRMjfw== TamFah9sIAAAbwEAAB4DAAAAAGcAAAAAAAEABwABAQAAAAT//wABAAAAAQBhTQAxMTExMTExMTEx MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx MTExMTExMTExMU0AMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEAAQk9AAEAYUoAYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFKADExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx MTExMTExMTExMTExMTExMTExMTExuMfnjg== '/*!*/; ### Extra row info for partitioning: source_partition: 0 target_partition: 1 ### UPDATE `test`.`test_blob` ### WHERE ### @1=1 /* INT meta=0 nullable=0 is_null=0 */ ### @2='a' /* VARSTRING(400) meta=400 nullable=1 is_null=0 */ ### @3='11111111111111111111111111111111111111111111111111111111111111111111111111111' /* VARSTRING(32000) meta=32000 nullable=1 is_null=0 */ ### @4='11111111111111111111111111111111111111111111111111111111111111111111111111111' /* BLOB/TEXT meta=2 nullable=1 is_null=0 */ ### SET ### @1=4000001 /* INT meta=0 nullable=0 is_null=0 */ ### @2='a' /* VARSTRING(400) meta=400 nullable=1 is_null=0 */ ### @3='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' /* VARSTRING(32000) meta=32000 nullable=1 is_null=0 */ ### @4='11111111111111111111111111111111111111111111111111111111111111111111111111' /* BLOB/TEXT meta=2 nullable=1 is_null=0 */ # at 798 #260819 21:02:05 server id 8300 end_log_pos 829 CRC32 0x47fdd684 Xid = 33 COMMIT/*!*/;