216 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			216 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Embedded server doesn't support external clients
							 | 
						||
| 
								 | 
							
								--source include/not_embedded.inc
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# check that CSV engine was compiled in, as the result of the test
							 | 
						||
| 
								 | 
							
								# depends on the presence of the log tables (which are CSV-based).
							 | 
						||
| 
								 | 
							
								--source include/have_csv.inc
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Clean up after previous tests
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--disable_warnings
							 | 
						||
| 
								 | 
							
								DROP TABLE IF EXISTS t1, `t``1`, `t 1`;
							 | 
						||
| 
								 | 
							
								drop view if exists v1;
							 | 
						||
| 
								 | 
							
								drop database if exists client_test_db;
							 | 
						||
| 
								 | 
							
								# Repair any tables in mysql, sometimes the slow_log is marked as crashed
							 | 
						||
| 
								 | 
							
								# after server has been killed
							 | 
						||
| 
								 | 
							
								--exec $MYSQL_CHECK --repair  --databases mysql > /dev/null 2>&1
							 | 
						||
| 
								 | 
							
								--enable_warnings
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug #13783  mysqlcheck tries to optimize and analyze information_schema
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								--replace_result 'Table is already up to date' OK
							 | 
						||
| 
								 | 
							
								--exec $MYSQL_CHECK --all-databases --analyze --optimize
							 | 
						||
| 
								 | 
							
								--replace_result 'Table is already up to date' OK
							 | 
						||
| 
								 | 
							
								--exec $MYSQL_CHECK --analyze --optimize  --databases test information_schema mysql
							 | 
						||
| 
								 | 
							
								--exec $MYSQL_CHECK --analyze --optimize information_schema schemata
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug #16502: mysqlcheck tries to check views
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								create table t1 (a int);
							 | 
						||
| 
								 | 
							
								create view v1 as select * from t1;
							 | 
						||
| 
								 | 
							
								--replace_result 'Table is already up to date' OK
							 | 
						||
| 
								 | 
							
								--exec $MYSQL_CHECK --analyze --optimize --databases test
							 | 
						||
| 
								 | 
							
								--replace_result 'Table is already up to date' OK
							 | 
						||
| 
								 | 
							
								--exec $MYSQL_CHECK --all-in-1 --analyze --optimize --databases test
							 | 
						||
| 
								 | 
							
								drop view v1;
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug #30654: mysqlcheck fails during upgrade of tables whose names include backticks
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								create table `t``1`(a int);
							 | 
						||
| 
								 | 
							
								create table `t 1`(a int);
							 | 
						||
| 
								 | 
							
								--replace_result 'Table is already up to date' OK
							 | 
						||
| 
								 | 
							
								--exec $MYSQL_CHECK --databases test
							 | 
						||
| 
								 | 
							
								drop table `t``1`, `t 1`;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug#25347: mysqlcheck -A -r doesn't repair table marked as crashed
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								create database d_bug25347;
							 | 
						||
| 
								 | 
							
								use d_bug25347;
							 | 
						||
| 
								 | 
							
								create table t_bug25347 (a int);
							 | 
						||
| 
								 | 
							
								create view v_bug25347 as select * from t_bug25347;
							 | 
						||
| 
								 | 
							
								insert into t_bug25347 values (1),(2),(3);
							 | 
						||
| 
								 | 
							
								flush tables;
							 | 
						||
| 
								 | 
							
								let $MYSQLD_DATADIR= `select @@datadir`;
							 | 
						||
| 
								 | 
							
								--echo removing and creating
							 | 
						||
| 
								 | 
							
								--remove_file $MYSQLD_DATADIR/d_bug25347/t_bug25347.MYI
							 | 
						||
| 
								 | 
							
								--write_file $MYSQLD_DATADIR/d_bug25347/t_bug25347.MYI
							 | 
						||
| 
								 | 
							
								EOF
							 | 
						||
| 
								 | 
							
								--exec $MYSQL_CHECK --repair --databases d_bug25347
							 | 
						||
| 
								 | 
							
								--error 130
							 | 
						||
| 
								 | 
							
								insert into t_bug25347 values (4),(5),(6);
							 | 
						||
| 
								 | 
							
								--exec $MYSQL_CHECK --repair --use-frm --databases d_bug25347
							 | 
						||
| 
								 | 
							
								insert into t_bug25347 values (7),(8),(9);
							 | 
						||
| 
								 | 
							
								select * from t_bug25347;
							 | 
						||
| 
								 | 
							
								select * from v_bug25347;
							 | 
						||
| 
								 | 
							
								drop view v_bug25347;
							 | 
						||
| 
								 | 
							
								drop table t_bug25347;
							 | 
						||
| 
								 | 
							
								drop database d_bug25347;
							 | 
						||
| 
								 | 
							
								use test;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug#39541 CHECK TABLE on information_schema myisam tables produces error
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								create view v1 as select * from information_schema.routines;
							 | 
						||
| 
								 | 
							
								check table v1, information_schema.routines;
							 | 
						||
| 
								 | 
							
								drop view v1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug#37527: mysqlcheck fails to report entire database 
							 | 
						||
| 
								 | 
							
								# when frm file corruption
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1(a INT);
							 | 
						||
| 
								 | 
							
								CREATE TABLE t2(a INT);
							 | 
						||
| 
								 | 
							
								# backup then null t1.frm
							 | 
						||
| 
								 | 
							
								--copy_file $MYSQLD_DATADIR/test/t1.frm $MYSQLD_DATADIR/test/t1.frm.bak
							 | 
						||
| 
								 | 
							
								--remove_file $MYSQLD_DATADIR/test/t1.frm
							 | 
						||
| 
								 | 
							
								--write_file $MYSQLD_DATADIR/test/t1.frm
							 | 
						||
| 
								 | 
							
								EOF
							 | 
						||
| 
								 | 
							
								--exec $MYSQL_CHECK test
							 | 
						||
| 
								 | 
							
								# restore t1.frm
							 | 
						||
| 
								 | 
							
								--remove_file $MYSQLD_DATADIR/test/t1.frm
							 | 
						||
| 
								 | 
							
								--copy_file $MYSQLD_DATADIR/test/t1.frm.bak $MYSQLD_DATADIR/test/t1.frm
							 | 
						||
| 
								 | 
							
								--remove_file $MYSQLD_DATADIR/test/t1.frm.bak
							 | 
						||
| 
								 | 
							
								DROP TABLE t1, t2;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--echo End of 5.0 tests
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug #30679: 5.1 name encoding not performed for views during upgrade
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								create table t1(a int);
							 | 
						||
| 
								 | 
							
								create view v1 as select * from t1;
							 | 
						||
| 
								 | 
							
								show tables;
							 | 
						||
| 
								 | 
							
								let $MYSQLD_DATADIR= `select @@datadir`;
							 | 
						||
| 
								 | 
							
								--copy_file $MYSQLD_DATADIR/test/v1.frm $MYSQLD_DATADIR/test/v-1.frm
							 | 
						||
| 
								 | 
							
								show tables;
							 | 
						||
| 
								 | 
							
								--exec $MYSQL_CHECK --check-upgrade --fix-table-names --databases test
							 | 
						||
| 
								 | 
							
								show tables;
							 | 
						||
| 
								 | 
							
								drop view v1, `v-1`;
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug #33094: Error in upgrading from 5.0 to 5.1 when table contains triggers
							 | 
						||
| 
								 | 
							
								# Bug #41385: Crash when attempting to repair a #mysql50# upgraded table with
							 | 
						||
| 
								 | 
							
								#             triggers
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								SET NAMES utf8;
							 | 
						||
| 
								 | 
							
								CREATE TABLE `#mysql50#@` (a INT);
							 | 
						||
| 
								 | 
							
								SHOW TABLES;
							 | 
						||
| 
								 | 
							
								SET NAMES DEFAULT;
							 | 
						||
| 
								 | 
							
								--echo mysqlcheck --fix-table-names --databases test
							 | 
						||
| 
								 | 
							
								--exec $MYSQL_CHECK --fix-table-names --databases test
							 | 
						||
| 
								 | 
							
								SET NAMES utf8;
							 | 
						||
| 
								 | 
							
								SHOW TABLES;
							 | 
						||
| 
								 | 
							
								DROP TABLE `@`;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE TABLE `я` (a INT);
							 | 
						||
| 
								 | 
							
								SET NAMES DEFAULT;
							 | 
						||
| 
								 | 
							
								--echo mysqlcheck --default-character-set="latin1" --databases test
							 | 
						||
| 
								 | 
							
								# Error returned depends on platform, replace it with "Table doesn't exist"
							 | 
						||
| 
								 | 
							
								call mtr.add_suppression("Can't find file: '..test.@003f.frm'");
							 | 
						||
| 
								 | 
							
								--replace_result "Can't find file: './test/@003f.frm' (errno: 22)" "Table doesn't exist" "Table 'test.?' doesn't exist" "Table doesn't exist"
							 | 
						||
| 
								 | 
							
								--exec $MYSQL_CHECK --default-character-set="latin1" --databases test
							 | 
						||
| 
								 | 
							
								--echo mysqlcheck --default-character-set="utf8" --databases test
							 | 
						||
| 
								 | 
							
								--exec $MYSQL_CHECK --default-character-set="utf8" --databases test
							 | 
						||
| 
								 | 
							
								SET NAMES utf8;
							 | 
						||
| 
								 | 
							
								DROP TABLE `я`;
							 | 
						||
| 
								 | 
							
								SET NAMES DEFAULT;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE DATABASE `#mysql50#a@b`;
							 | 
						||
| 
								 | 
							
								USE `#mysql50#a@b`;
							 | 
						||
| 
								 | 
							
								CREATE TABLE `#mysql50#c@d` (a INT);
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 (a INT);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Create 5.0 like triggers
							 | 
						||
| 
								 | 
							
								let $MYSQLTEST_VARDIR= `select @@datadir`;
							 | 
						||
| 
								 | 
							
								--write_file $MYSQLTEST_VARDIR/a@b/c@d.TRG
							 | 
						||
| 
								 | 
							
								TYPE=TRIGGERS
							 | 
						||
| 
								 | 
							
								triggers='CREATE DEFINER=`root`@`localhost` TRIGGER tr1 BEFORE INSERT ON `c@d` FOR EACH ROW SET NEW.a = 10 * NEW.a'
							 | 
						||
| 
								 | 
							
								sql_modes=0
							 | 
						||
| 
								 | 
							
								definers='root@localhost'
							 | 
						||
| 
								 | 
							
								EOF
							 | 
						||
| 
								 | 
							
								--write_file $MYSQLTEST_VARDIR/a@b/tr1.TRN
							 | 
						||
| 
								 | 
							
								TYPE=TRIGGERNAME
							 | 
						||
| 
								 | 
							
								trigger_table=c@d
							 | 
						||
| 
								 | 
							
								EOF
							 | 
						||
| 
								 | 
							
								--write_file $MYSQLTEST_VARDIR/a@b/t1.TRG
							 | 
						||
| 
								 | 
							
								TYPE=TRIGGERS
							 | 
						||
| 
								 | 
							
								triggers='CREATE DEFINER=`root`@`localhost` TRIGGER tr2 BEFORE INSERT ON `a@b`.t1 FOR EACH ROW SET NEW.a = 100 * NEW.a'
							 | 
						||
| 
								 | 
							
								sql_modes=0
							 | 
						||
| 
								 | 
							
								definers='root@localhost'
							 | 
						||
| 
								 | 
							
								EOF
							 | 
						||
| 
								 | 
							
								--write_file $MYSQLTEST_VARDIR/a@b/tr2.TRN
							 | 
						||
| 
								 | 
							
								TYPE=TRIGGERNAME
							 | 
						||
| 
								 | 
							
								trigger_table=t1
							 | 
						||
| 
								 | 
							
								EOF
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								SELECT * FROM INFORMATION_SCHEMA.TRIGGERS
							 | 
						||
| 
								 | 
							
								  WHERE TRIGGER_SCHEMA="#mysql50#a@b" ORDER BY trigger_name;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--echo mysqlcheck --fix-db-names --fix-table-names --all-databases
							 | 
						||
| 
								 | 
							
								--exec $MYSQL_CHECK --fix-db-names --fix-table-names --all-databases
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								USE `a@b`;
							 | 
						||
| 
								 | 
							
								SELECT * FROM INFORMATION_SCHEMA.TRIGGERS
							 | 
						||
| 
								 | 
							
								  WHERE TRIGGER_SCHEMA="a@b" ORDER BY trigger_name;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								INSERT INTO `c@d` VALUES (2), (1);
							 | 
						||
| 
								 | 
							
								SELECT * FROM `c@d`;
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (3), (5);
							 | 
						||
| 
								 | 
							
								SELECT * FROM t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DROP DATABASE `a@b`;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								USE test;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--echo #
							 | 
						||
| 
								 | 
							
								--echo # Bug #31821: --all-in-1 and --fix-table-names don't work together
							 | 
						||
| 
								 | 
							
								--echo #
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--disable_warnings
							 | 
						||
| 
								 | 
							
								drop table if exists `#mysql50#t1-1`;
							 | 
						||
| 
								 | 
							
								--enable_warnings
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								create table `#mysql50#t1-1` (a int);
							 | 
						||
| 
								 | 
							
								--exec $MYSQL_CHECK --all-in-1 --fix-table-names --databases test
							 | 
						||
| 
								 | 
							
								show tables like 't1-1';
							 | 
						||
| 
								 | 
							
								drop table `t1-1`;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								create table `#mysql50#t1-1` (a int);
							 | 
						||
| 
								 | 
							
								--exec $MYSQL_CHECK --all-in-1 --fix-table-names test "#mysql50#t1-1"
							 | 
						||
| 
								 | 
							
								show tables like 't1-1';
							 | 
						||
| 
								 | 
							
								drop table `t1-1`;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--echo End of 5.1 tests
							 |