• Sven Sandberg's avatar
    BUG#49222: Mark RAND() as unsafe · 4dc7be62
    Sven Sandberg authored
    Problem: When RAND() is binlogged in statement mode, the seed is
    binlogged too, so the replication slave generates the same
    sequence of random numbers. This makes replication work in many
    cases, but not in all cases: the order of rows is not guaranteed
    for, e.g., UPDATE or INSERT...SELECT statements, so the row data
    will be different if master and slave retrieve the rows in
    different orders.
    Fix: Mark RAND() as unsafe. It will generate a warning if
    binlog_format=STATEMENT and switch to row-logging if
    binlog_format=ROW.
    
    
    mysql-test/extra/rpl_tests/rpl_row_func003.test:
      updated test case to ignore new warnings
    mysql-test/suite/binlog/r/binlog_unsafe.result:
      updated result file
    mysql-test/suite/binlog/t/binlog_unsafe.test:
      Added test for RAND().
      Also clarified some old comments.
    mysql-test/suite/rpl/r/rpl_misc_functions.result:
      updated result file
    mysql-test/suite/rpl/r/rpl_nondeterministic_functions.result:
      updated test case to ignore new warnings
    mysql-test/suite/rpl/r/rpl_optimize.result:
      updated result file
    mysql-test/suite/rpl/r/rpl_row_func003.result:
      updated result file
    mysql-test/suite/rpl/t/rpl_misc_functions.test:
      updated test case to ignore new warnings
    mysql-test/suite/rpl/t/rpl_nondeterministic_functions.test:
      updated test case to ignore new warnings
    mysql-test/suite/rpl/t/rpl_optimize.test:
      updated test case to ignore new warnings
    mysql-test/suite/rpl/t/rpl_trigger.test:
      updated test case to ignore new warnings
    mysql-test/suite/rpl_ndb/r/rpl_ndb_func003.result:
      updated result file
    sql/item_create.cc:
      Mark RAND() unsafe.
    4dc7be62
rpl_row_func003.result 911 Bytes