• unknown's avatar
    Scrum task 845. Thi is a behaviour change : · e8336c8a
    unknown authored
    now by default, FLUSH, OPTIMIZE, ANALYZE, REPAIR commands are written to the
    binlog, unless the new NO_WRITE_TO_BINLOG keyword was used :
    OPTIMIZE NO_WRITE_TO_BINLOG table t;
    
    Previously these commands were never written to the binlog, but there are
    2 reasons to change this :
    - the RENAME TABLE in MERGE table bug (#175) on slave
    - the possible "differently optimised queries may lead to different
    updates on the master and slave" bug, until we have automatic ORDER BY.
    
    FLUSH LOGS/SLAVE/MASTER/TABLES WITH READ LOCK are never written to the binlog.
    New test for the new logging behaviour.
    Other small change : reload_acl_and_cache() and reset_slave() don't send their errors themselves,
    this is more usual.
    
    
    mysql-test/mysql-test-run.sh:
      rpl_flush_tables.test generates 'table xx is open on rename'.
      This is normal and done on purpose, so don't report it.
    sql/lex.h:
      New keyword NO_WRITE_TO_BINLOG
    sql/mysql_priv.h:
      reload_acl_and_cache() now decides if we want to write the FLUSH command
      to the binlog or not (FLUSH MASTER, FLUSH SLAVE, FLUSH TABLES
      WITH READ LOCK, FLUSH LOGS cannot go into the binlog).
    sql/mysqld.cc:
      updated for new prototype of reload_acl_and_cache().
    sql/sql_lex.h:
      New boolean no_write_to_binlog in the lex structure.
    sql/sql_parse.cc:
      reload_acl_and_cache() now does not send its errors itself;
      it saves the error and the caller sends it.
      FLUSH, OPTIMIZE, ANALYZE, REPAIR commands don't write to the binlog
      if the NO_WRITE_TO_BINLOG keyword was used.
    sql/sql_repl.cc:
      reset_slave() does not send its errors himself.
    sql/sql_yacc.yy:
      New optional keyword NO_WRITE_TO_BINLOG for OPTIMIZE/ANALYZE/REPAIR/FLUSH :
      OPTIMIZE NO_WRITE_TO_BINLOG TABLE t;
      ANALYZE NO_WRITE_TO_BINLOG TABLE t;
      REPAIR NO_WRITE_TO_BINLOG TABLE t;
      FLUSH NO_WRITE_TO_BINLOG TABLE t;
    e8336c8a
sql_repl.cc 30.8 KB