• Guangbao Ni's avatar
    BUG#42640 mysqld crashes when unsafe statements are executed (STRICT_TRANS_TABLESmode) · 173d2953
    Guangbao Ni authored
    Mysql server crashes because unsafe statements warning is wrongly elevated to error,
    which is set the error status of Diagnostics_area of the thread in THD::binlog_query().
    Yet the caller believes that binary logging shouldn't touch the status, so it will
    set the status also later by my_ok(), my_error() or my_message() seperately
    according to the execution result of the statement or transaction.
    But the status of Diagnostics_area of the thread is allowed to set only once.
    
    Fixed to clear the error wrongly set by binary logging, but keep the warning message.
    
    mysql-test/suite/binlog/r/binlog_stm_ps.result:
      Change unsafe warning to NOTE level
    mysql-test/suite/binlog/r/binlog_unsafe.result:
      Test case result for unsafe statements to ensure mysql sever don't crash
    mysql-test/suite/binlog/t/binlog_unsafe.test:
      Test case for unsafe statements to ensure mysql sever don't crash
    mysql-test/suite/rpl/r/rpl_skip_error.result:
      Change unsafe warning to NOTE level
    mysql-test/suite/rpl/r/rpl_stm_loadfile.result:
      Change unsafe warning to NOTE level
    mysql-test/suite/rpl/r/rpl_udf.result:
      Change unsafe warning to NOTE level
    sql/sql_class.cc:
      the error status of the thread is cleared When a warning is elevated to an error
      because of unsafe warning of binary log.
    173d2953
binlog_unsafe.test 11.1 KB