mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-30 04:26:45 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			352 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			352 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| call mtr.add_suppression("Invalid .old.. table or database name");
 | |
| 
 | |
| # Embedded server doesn't support external clients
 | |
| --source include/not_embedded.inc
 | |
| 
 | |
| --source include/have_innodb.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
 | |
| let $MYSQLD_DATADIR= `select @@datadir`;
 | |
| 
 | |
| #
 | |
| # Clean up after previous tests
 | |
| #
 | |
| 
 | |
| --disable_warnings
 | |
| DROP TABLE IF EXISTS t1, `t``1`, `t 1`, test.`t.1`, v1;
 | |
| drop view if exists t1, `t``1`, `t 1`, test.`t.1`, 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
 | |
| --exec $MYSQL_CHECK --all-databases --optimize
 | |
| --replace_result 'Table is already up to date' OK
 | |
| --exec $MYSQL_CHECK --analyze --databases test information_schema mysql
 | |
| --exec $MYSQL_CHECK --optimize  --databases test information_schema mysql
 | |
| --exec $MYSQL_CHECK --analyze information_schema schemata
 | |
| --exec $MYSQL_CHECK --optimize information_schema schemata
 | |
| 
 | |
| #
 | |
| # Bug #16502: mysqlcheck tries to check views
 | |
| #
 | |
| create table t1 (a int) engine=myisam;
 | |
| create view v1 as select * from t1;
 | |
| --replace_result 'Table is already up to date' OK
 | |
| --exec $MYSQL_CHECK --analyze --databases test
 | |
| --exec $MYSQL_CHECK --optimize --databases test
 | |
| --replace_result 'Table is already up to date' OK
 | |
| --exec $MYSQL_CHECK --all-in-1 --analyze --databases test
 | |
| --exec $MYSQL_CHECK --all-in-1 --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) engine=myisam;
 | |
| create table `t 1`(a int) engine=myisam;
 | |
| --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) engine=myisam;
 | |
| create view v_bug25347 as select * from t_bug25347;
 | |
| insert into t_bug25347 values (1),(2),(3);
 | |
| flush tables;
 | |
| --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
 | |
| #
 | |
| call mtr.add_suppression("Error reading file './test/t1.frm'");
 | |
| CREATE TABLE t1(a INT) engine=myisam;
 | |
| CREATE TABLE t2(a INT) engine=myisam;
 | |
| # 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) engine=myisam;
 | |
| create view v1 as select * from t1;
 | |
| show tables;
 | |
| --copy_file $MYSQLD_DATADIR/test/v1.frm $MYSQLD_DATADIR/test/v-1.frm
 | |
| show tables;
 | |
| --exec $MYSQL_CHECK --check-upgrade --databases test
 | |
| --exec $MYSQL_CHECK --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) engine=myisam;
 | |
| 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) engine=myisam;
 | |
| SET NAMES DEFAULT;
 | |
| call mtr.add_suppression("@003f.frm' \\(errno: 22\\)");
 | |
| --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) engine=myisam;
 | |
| CREATE TABLE t1 (a INT) engine=myisam;
 | |
| 
 | |
| # Create 5.0 like triggers
 | |
| --write_file $MYSQLD_DATADIR/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 $MYSQLD_DATADIR/a@b/tr1.TRN
 | |
| TYPE=TRIGGERNAME
 | |
| trigger_table=c@d
 | |
| EOF
 | |
| --write_file $MYSQLD_DATADIR/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 $MYSQLD_DATADIR/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 --default-character-set=utf8 --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) engine=myisam;
 | |
| --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) engine=myisam;
 | |
| --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
 | |
| 
 | |
| 
 | |
| --echo #
 | |
| --echo # Bug #35269: mysqlcheck behaves different depending on order of parameters
 | |
| --echo #
 | |
| 
 | |
| --error 13
 | |
| --exec $MYSQL_CHECK -a --fix-table-names test "#mysql50#t1-1"
 | |
| --error 1
 | |
| --exec $MYSQL_CHECK -aoc test "#mysql50#t1-1"
 | |
| 
 | |
| 
 | |
| --echo #
 | |
| --echo # Bug#11755431 47205: MAP 'REPAIR TABLE' TO RECREATE +ANALYZE FOR
 | |
| --echo #              ENGINES NOT SUPPORTING NATIVE
 | |
| --echo #
 | |
| 
 | |
| --disable_warnings
 | |
| DROP TABLE IF EXISTS bug47205;
 | |
| --enable_warnings
 | |
| 
 | |
| --echo #
 | |
| --echo # Test 1: Check that ALTER TABLE ... rebuilds the table
 | |
| 
 | |
| CREATE TABLE bug47205(a VARCHAR(20) PRIMARY KEY)
 | |
|   DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci engine=innodb;
 | |
| 
 | |
| INSERT INTO bug47205 VALUES ("foobar");
 | |
| FLUSH TABLE bug47205;
 | |
| 
 | |
| --echo # Replace the FRM with a 5.0 FRM that will require upgrade
 | |
| --remove_file $MYSQLD_DATADIR/test/bug47205.frm
 | |
| --copy_file std_data/bug47205.frm $MYSQLD_DATADIR/test/bug47205.frm
 | |
| 
 | |
| --echo # Should indicate that ALTER TABLE ... FORCE is needed
 | |
| CHECK TABLE bug47205 FOR UPGRADE;
 | |
| 
 | |
| --echo # ALTER TABLE ... FORCE should rebuild the table
 | |
| ALTER TABLE bug47205 FORCE;
 | |
| 
 | |
| --echo # Table should now be ok
 | |
| CHECK TABLE bug47205 FOR UPGRADE;
 | |
| 
 | |
| DROP TABLE bug47205;
 | |
| 
 | |
| --echo #
 | |
| --echo # Test 2: InnoDB - REPAIR not supported
 | |
| 
 | |
| CREATE TABLE bug47205(a VARCHAR(20) PRIMARY KEY)
 | |
|   DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci engine=innodb;
 | |
| 
 | |
| FLUSH TABLE bug47205;
 | |
| 
 | |
| --echo # Replace the FRM with a 5.0 FRM that will require upgrade
 | |
| --remove_file $MYSQLD_DATADIR/test/bug47205.frm
 | |
| --copy_file std_data/bug47205.frm $MYSQLD_DATADIR/test/bug47205.frm
 | |
| 
 | |
| --echo # Should indicate that ALTER TABLE .. FORCE is needed
 | |
| CHECK TABLE bug47205 FOR UPGRADE;
 | |
| 
 | |
| --echo # Running mysqlcheck to check and upgrade
 | |
| --exec $MYSQL_CHECK --check-upgrade --auto-repair test
 | |
| 
 | |
| --echo # Table should now be ok
 | |
| CHECK TABLE bug47205 FOR UPGRADE;
 | |
| 
 | |
| DROP TABLE bug47205;
 | |
| 
 | |
| --echo #
 | |
| --echo # Test 3: MyISAM - REPAIR supported
 | |
| 
 | |
| --echo # Use an old FRM that will require upgrade
 | |
| --copy_file std_data/bug36055.frm $MYSQLD_DATADIR/test/bug47205.frm
 | |
| --copy_file std_data/bug36055.MYD $MYSQLD_DATADIR/test/bug47205.MYD
 | |
| --copy_file std_data/bug36055.MYI $MYSQLD_DATADIR/test/bug47205.MYI
 | |
| 
 | |
| --echo # Should indicate that REPAIR TABLE is needed
 | |
| CHECK TABLE bug47205 FOR UPGRADE;
 | |
| 
 | |
| --echo # Running mysqlcheck to check and upgrade
 | |
| --exec $MYSQL_CHECK --check-upgrade --auto-repair test
 | |
| 
 | |
| --echo # Table should now be ok
 | |
| CHECK TABLE bug47205 FOR UPGRADE;
 | |
| 
 | |
| DROP TABLE bug47205;
 | |
| 
 | |
| --echo #
 | |
| --echo #MDEV-6128:[PATCH] mysqlcheck wrongly escapes '.' in table names
 | |
| --echo #
 | |
| CREATE TABLE test.`t.1` (id int);
 | |
| 
 | |
| --echo mysqlcheck test t.1
 | |
| --exec $MYSQL_CHECK test t.1
 | |
| 
 | |
| drop table test.`t.1`;
 | |
| 
 | |
| #
 | |
| # MDEV-8123 mysqlcheck: new --process-views option conflicts with --quick, --extended and such
 | |
| #
 | |
| create view v1 as select 1;
 | |
| --echo mysqlcheck --process-views test
 | |
| --exec $MYSQL_CHECK --process-views test
 | |
| --echo mysqlcheck --process-views --extended test
 | |
| --exec $MYSQL_CHECK --process-views --extended test
 | |
| --echo mysqlcheck --process-views --fast test
 | |
| --exec $MYSQL_CHECK --process-views --fast test
 | |
| --echo mysqlcheck --process-views --quick test
 | |
| --exec $MYSQL_CHECK --process-views --quick test
 | |
| --echo mysqlcheck --process-views --check-only-changed test
 | |
| --exec $MYSQL_CHECK --process-views --check-only-changed test
 | |
| --echo mysqlcheck --process-views --medium-check test
 | |
| --exec $MYSQL_CHECK --process-views --medium-check test
 | |
| --echo mysqlcheck --process-views --check-upgrade test
 | |
| --exec $MYSQL_CHECK --process-views --check-upgrade test
 | |
| drop view v1;
 | |
| 
 | |
| 
 | |
| #
 | |
| # MDEV-8124 mysqlcheck: --auto-repair runs REPAIR TABLE instead of REPAIR VIEW on views
 | |
| #
 | |
| create table t1(a int);
 | |
| --copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/v1.frm $MYSQLD_DATADIR/test/v1.frm
 | |
| --echo mysqlcheck --process-views --check-upgrade --auto-repair test
 | |
| --exec $MYSQL_CHECK --process-views --check-upgrade --auto-repair test
 | |
| drop view v1;
 | |
| drop table t1;
 |