-- source include/have_log_bin.inc set sql_log_bin=0; --disable_warnings drop table if exists t1,v1,v2,v3,v4,v1badcheck; drop view if exists t1,v1,v2,v3,v4,v1badcheck; --enable_warnings create table t1(a int); create table kv(k varchar(30) NOT NULL PRIMARY KEY,v varchar(50)); let $MYSQLD_DATADIR= `select @@datadir`; --copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/v1.frm $MYSQLD_DATADIR/test/v1.frm --copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/v1badcheck.frm $MYSQLD_DATADIR/test/v1badcheck.frm --copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/v2.frm $MYSQLD_DATADIR/test/v2.frm --copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/v3.frm $MYSQLD_DATADIR/test/v3.frm flush tables; --replace_result $MYSQLTEST_VARDIR var --exec $MYSQL_UPGRADE --force 2>&1 # "Phase 1/4: Fixing views - skipped - not required" expected show create view v1; show create view v2; show create view v3; # Now force a mariadb version to be added set sql_log_bin=1; REPAIR VIEW v1,v2; REPAIR VIEW v1badcheck; REPAIR NO_WRITE_TO_BINLOG VIEW v3; set sql_log_bin=0; --source include/show_binlog_events.inc --replace_result $MYSQLD_DATADIR MYSQLD_DATADIR eval LOAD DATA INFILE '$MYSQLD_DATADIR/test/v1.frm' REPLACE INTO TABLE kv FIELDS TERMINATED BY '='; SELECT k,v from kv where k in ('md5','algorithm'); SELECT k from kv where k ='mariadb-version'; truncate table kv; --replace_result $MYSQLD_DATADIR MYSQLD_DATADIR eval LOAD DATA INFILE '$MYSQLD_DATADIR/test/v2.frm' REPLACE INTO TABLE kv FIELDS TERMINATED BY '='; SELECT k,v from kv where k in ('md5','algorithm'); SELECT k from kv where k ='mariadb-version'; truncate table kv; --replace_result $MYSQLD_DATADIR MYSQLD_DATADIR eval LOAD DATA INFILE '$MYSQLD_DATADIR/test/v3.frm' REPLACE INTO TABLE kv FIELDS TERMINATED BY '='; SELECT k,v from kv where k in ('md5','algorithm'); SELECT k from kv where k ='mariadb-version'; truncate table kv; --replace_result $MYSQLD_DATADIR MYSQLD_DATADIR eval LOAD DATA INFILE '$MYSQLD_DATADIR/test/v1badcheck.frm' REPLACE INTO TABLE kv FIELDS TERMINATED BY '='; SELECT k,v from kv where k in ('md5','algorithm'); SELECT k from kv where k ='mariadb-version'; truncate table kv; --disable_warnings drop view if exists v1,v2,v3,v1badcheck; --enable_warnings # Make it look like a MySQL directory now --copy_file $MYSQLD_DATADIR/mysql/event.MYI $MYSQLD_DATADIR/mysql/ev_bk.MYI --copy_file $MYSQLD_DATADIR/mysql/event.MYD $MYSQLD_DATADIR/mysql/ev_bk.MYD --copy_file $MYSQLD_DATADIR/mysql/event.frm $MYSQLD_DATADIR/mysql/ev_bk.frm --remove_file $MYSQLD_DATADIR/mysql/event.MYI --remove_file $MYSQLD_DATADIR/mysql/event.MYD --remove_file $MYSQLD_DATADIR/mysql/event.frm --copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/event.MYI $MYSQLD_DATADIR/mysql/event.MYI --copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/event.MYD $MYSQLD_DATADIR/mysql/event.MYD --copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/event.frm $MYSQLD_DATADIR/mysql/event.frm --copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/v1.frm $MYSQLD_DATADIR/test/v1.frm --copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/v2.frm $MYSQLD_DATADIR/test/v2.frm --copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/v3.frm $MYSQLD_DATADIR/test/v3.frm flush tables; create algorithm=temptable view v4 as select a from t1; show create view v1; show create view v2; show create view v3; show create view v4; # here we test the fixing views does occur --replace_result $MYSQLTEST_VARDIR var --exec $MYSQL_UPGRADE --force 2>&1 show create view v1; show create view v2; show create view v3; show create view v4; --replace_result $MYSQLD_DATADIR MYSQLD_DATADIR eval LOAD DATA INFILE '$MYSQLD_DATADIR/test/v1.frm' REPLACE INTO TABLE kv FIELDS TERMINATED BY '='; SELECT k,v from kv where k in ('md5','algorithm'); SELECT k from kv where k ='mariadb-version'; truncate table kv; --disable_warnings drop view if exists v1,v2,v3; --enable_warnings --remove_file $MYSQLD_DATADIR/mysql/event.MYI --remove_file $MYSQLD_DATADIR/mysql/event.MYD --remove_file $MYSQLD_DATADIR/mysql/event.frm --copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/event.MYI $MYSQLD_DATADIR/mysql/event.MYI --copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/event.MYD $MYSQLD_DATADIR/mysql/event.MYD --copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/event.frm $MYSQLD_DATADIR/mysql/event.frm --copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/v1.frm $MYSQLD_DATADIR/test/v1.frm --copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/v2.frm $MYSQLD_DATADIR/test/v2.frm --copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/v3.frm $MYSQLD_DATADIR/test/v3.frm flush tables; # check of binlog --exec $MYSQL_CHECK --write-binlog --fix-view-algorithm --skip-fix-tables --all-databases 2>&1 --source include/show_binlog_events.inc # back to mariadb default --remove_file $MYSQLD_DATADIR/mysql/event.MYI --remove_file $MYSQLD_DATADIR/mysql/event.MYD --remove_file $MYSQLD_DATADIR/mysql/event.frm --copy_file $MYSQLD_DATADIR/mysql/ev_bk.MYI $MYSQLD_DATADIR/mysql/event.MYI --copy_file $MYSQLD_DATADIR/mysql/ev_bk.MYD $MYSQLD_DATADIR/mysql/event.MYD --copy_file $MYSQLD_DATADIR/mysql/ev_bk.frm $MYSQLD_DATADIR/mysql/event.frm --remove_file $MYSQLD_DATADIR/mysql/ev_bk.MYI --remove_file $MYSQLD_DATADIR/mysql/ev_bk.MYD --remove_file $MYSQLD_DATADIR/mysql/ev_bk.frm flush tables; drop table if exists kv; drop view v1,v2,v3,v4; drop table t1;