• Brandon Nesterenko's avatar
    MDEV-25444: mysql --binary-mode is not able to replay some mysqlbinlog outputs · 1ce35c32
    Brandon Nesterenko authored
    Note: This patch backports commits 10cd2818 and 1755ea4b from 10.3.
    
    10cd2818:
    Problem:- Some binary data is inserted into the table using
    Jconnector. When binlog dump of the data is applied using mysql
    client it gives syntax error.
    
    Reason:-
    After investigating it turns out to be a issue of mysql client not
    able to properly handle  \\0 <0 in binary>. In all binary files
    where mysql client fails to insert
    these 2 bytes are common (0x5c00)
    
    Solution:-
    I have changed mysql.cc to include for the possibility that binary
    string can have \\0 in it
    
    1755ea4b:
    Changes on top of Sachin’s patch. Specifically:
     1) Refined the parsing break condition to only change the parser’s
    behavior for parsing strings in binary mode (behavior of \0 outside
    of strings is unchanged).
     2) Prefixed binary_zero_insert.test with ‘mysql_’ to more clearly
    associate the  purpose of the test.
     3) As the input of the test contains binary zeros (0x5c00),
    different text editors can visualize this sequence differently, and
    Github would not display it at all. Therefore, the input itself was
    consolidated into the test and created out of hex sequences to make
    it easier to understand what is happening.
     4) Extended test to validate that the rows which correspond to the
    INSERTS with 0x5c00 have the correct binary zero data.
    
    Reviewed By:
    ============
    Andrei Elkin <andrei.elkin@mariadb.com>
    1ce35c32
mysql.cc 152 KB