• Sven Sandberg's avatar
    BUG#47995: Mark system functions as unsafe · 146bb95f
    Sven Sandberg authored
    Problem: Some system functions that could return different values on
    master and slave were not marked unsafe. In particular:
     GET_LOCK
     IS_FREE_LOCK
     IS_USED_LOCK
     MASTER_POS_WAIT
     RELEASE_LOCK
     SLEEP
     SYSDATE
     VERSION
    Fix: Mark these functions unsafe.
    
    
    mysql-test/extra/rpl_tests/rpl_stm_000001.test:
      - The test does not work in mixed mode any more, since it tries to
        simulate an error in the sql thread in a query that uses get_lock.
        Since get_lock now causes the query to be logged in row format,
        the error didn't happen. Hence, we now force statement mode.
      - Warnings must be disabled when the unsafe query is issued.
      - Replaced some save_master_pos+connection slave+sync_with_master
        by sync_slave_with_master.
    mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result:
      updated result file
    mysql-test/suite/binlog/r/binlog_stm_row.result:
      updated result file
    mysql-test/suite/binlog/r/binlog_unsafe.result:
      updated result file
    mysql-test/suite/binlog/t/binlog_killed.test:
      binlog_killed only works in statement format now, since
      it switches to row mode in mixed mode.
    mysql-test/suite/binlog/t/binlog_stm_mix_innodb_myisam.test:
      suppress warnings for unsafe statements
    mysql-test/suite/binlog/t/binlog_stm_row.test:
      - Suppress warnings in test that causes warnings.
      - The test sets binlog format explicitly, so no need to execute it
        twice.
    mysql-test/suite/binlog/t/binlog_unsafe.test:
      Added test for all unsafe system functions. This test also includes
      system functions that were unsafe prior to BUG#47995.
    mysql-test/suite/rpl/r/rpl_err_ignoredtable.result:
      updated result file
    mysql-test/suite/rpl/r/rpl_get_lock.result:
      updated result file
    mysql-test/suite/rpl/r/rpl_nondeterministic_functions.result:
      new result file
    mysql-test/suite/rpl/r/rpl_stm_000001.result:
      updated result file
    mysql-test/suite/rpl/r/rpl_trigger.result:
      updated result file
    mysql-test/suite/rpl/t/rpl_err_ignoredtable.test:
      - suppress warnings for unsafe statement
      - replaced save_master_pos+connection slave+sync_with_master
        with sync_slave_with_master
    mysql-test/suite/rpl/t/rpl_get_lock.test:
      update test case that causes new warnings
    mysql-test/suite/rpl/t/rpl_nondeterministic_functions.test:
      Added new test case for nondeterministic functions.
    mysql-test/suite/rpl/t/rpl_trigger.test:
      update test case that causes new warnings
    sql/item_create.cc:
      Marked some system functions unsafe.
    sql/item_strfunc.cc:
      Clarified comment related to this bug.
    sql/sql_yacc.yy:
      Marked sysdate unsafe.
    146bb95f
item_create.cc 114 KB