Bug #121129 The binlog event inconsistency error
Submitted: 19 Aug 13:44
Reporter: huahua xu Email Updates:
Status: Open Impact on me:
None 
Category:MySQL Utilities: Binlog Events Severity:S3 (Non-critical)
Version:8.4.0 OS:Any
Assigned to: CPU Architecture:Any

[19 Aug 13:44] huahua xu
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/*!*/;