# ==== Purpose ==== # # Test warnings for Unsafe statement generated inside DEFAULT expression # # ==== Requirements ==== # # R1. `ALTER TABLE` with a non-deterministic function as a `DEFAULT` expression # for an added column should always succeed and log a warning for # `BINLOG_FORMAT=STATEMENT`, specifically an unsafe statement warning - # ER_BINLOG_UNSAFE_SYSTEM_FUNCTION # # R2. `ALTER TABLE` with a deterministic function as a `DEFAULT` expression for # an added column should always succeed with `BINLOG_FORMAT=STATEMENT`. # # ==== Implementation ==== # # Test `ALTER TABLE ... ADD COLUMN ... DEFAULT` statement with both a # deterministic and non-deterministic function as the `DEFAULT` expression # # ==== References ==== # WL#9418 Permit default value to be a function or expression, support for LOBs # BUG#28799939 DISALLOW ALTER TABLE ADD COLUMN WITH NONDETERMINISTIC DEFAULT, IF BINLOG ENABLED # --source include/have_binlog_format_statement.inc --source include/master-slave.inc CALL mtr.add_suppression('.statement is unsafe because it uses a system function that may return a different value on the slave.'); --echo # Create tables on master CREATE TABLE t1 (z VARCHAR(36)); ALTER TABLE t1 ADD COLUMN a char(36) DEFAULT (PI()); ALTER TABLE t1 ADD COLUMN b char(36) DEFAULT (RAND()); --let $assert_text = Found 1 warning in the error log --let $assert_file = $MYSQLTEST_VARDIR/log/mysqld.1.err --let $assert_select = statement is unsafe because it uses a system function that may return a different value on the slave --let $assert_count = 1 --source include/assert_grep.inc # Clean up DROP TABLE t1; --source include/rpl_end.inc