--source include/not_embedded.inc --source include/mysql_upgrade_preparation.inc --source include/have_innodb.inc # # This is like the upgrade test in statistics_upgrade.test, except that we also # check what happens if one doesn't do the upgrade and attempts to use the new # server with the old mysql.column_stats table # --echo # Create the old-version of the table call mtr.add_suppression(".*Incorrect definition of table mysql.column_stats:.*"); alter table mysql.column_stats rename test.t1; CREATE TABLE mysql.column_stats ( `db_name` varchar(64) COLLATE utf8mb3_bin NOT NULL, `table_name` varchar(64) COLLATE utf8mb3_bin NOT NULL, `column_name` varchar(64) COLLATE utf8mb3_bin NOT NULL, `min_value` varbinary(255) DEFAULT NULL, `max_value` varbinary(255) DEFAULT NULL, `nulls_ratio` decimal(12,4) DEFAULT NULL, `avg_length` decimal(12,4) DEFAULT NULL, `avg_frequency` decimal(12,4) DEFAULT NULL, `hist_size` tinyint(3) unsigned DEFAULT NULL, `hist_type` enum('SINGLE_PREC_HB','DOUBLE_PREC_HB') COLLATE utf8mb3_bin DEFAULT NULL, `histogram` varbinary(255) DEFAULT NULL, PRIMARY KEY (`db_name`,`table_name`,`column_name`) ) ENGINE=Aria DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin PAGE_CHECKSUM=1 TRANSACTIONAL=0 COMMENT='Statistics on Columns'; create table t0(a int); insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); INSERT INTO mysql.column_stats VALUES ('test','t0','a','0','9',0.0000,4.0000,1.0000,5,'DOUBLE_PREC_HB', x'5555AAAA00'); flush tables; analyze select * from t0 where a<3; # Restart the server --source include/restart_mysqld.inc select hex(histogram) from mysql.column_stats where table_name='t0' and db_name='test'; analyze select * from t0 where a<3; create table t2 (a int); -- echo # This currently just pretends that the histogram was collected. analyze table t2 persistent for all; select * from mysql.column_stats where table_name='t2' and db_name='test'; --exec $MYSQL_UPGRADE --upgrade-system-tables --force --silent 2>&1 let $MYSQLD_DATADIR= `select @@datadir`; --file_exists $MYSQLD_DATADIR/mysql_upgrade_info --remove_file $MYSQLD_DATADIR/mysql_upgrade_info analyze select * from t0 where a<3; drop table t0, t1, t2;