2006-12-14 23:51:37 +01:00
|
|
|
|
2005-10-18 11:25:03 +02:00
|
|
|
# Embedded server doesn't support external clients
|
|
|
|
--source include/not_embedded.inc
|
|
|
|
|
2006-01-19 03:56:06 +01:00
|
|
|
# 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
|
|
|
|
|
2007-01-29 00:47:35 +01:00
|
|
|
#
|
|
|
|
# Clean up after previous tests
|
|
|
|
#
|
|
|
|
|
2006-06-05 05:16:08 +02:00
|
|
|
--disable_warnings
|
2007-10-30 09:51:57 +01:00
|
|
|
DROP TABLE IF EXISTS t1, `t``1`, `t 1`;
|
2007-01-29 00:47:35 +01:00
|
|
|
drop view if exists v1;
|
2006-06-05 05:16:08 +02:00
|
|
|
drop database if exists client_test_db;
|
2008-03-12 12:19:36 +01:00
|
|
|
# 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
|
2006-06-05 05:16:08 +02:00
|
|
|
--enable_warnings
|
|
|
|
|
2005-10-18 11:25:03 +02:00
|
|
|
#
|
|
|
|
# Bug #13783 mysqlcheck tries to optimize and analyze information_schema
|
|
|
|
#
|
|
|
|
--replace_result 'Table is already up to date' OK
|
2010-10-08 09:09:47 +02:00
|
|
|
--exec $MYSQL_CHECK --all-databases --analyze
|
|
|
|
--exec $MYSQL_CHECK --all-databases --optimize
|
2005-10-18 11:25:03 +02:00
|
|
|
--replace_result 'Table is already up to date' OK
|
2010-10-08 09:09:47 +02:00
|
|
|
--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
|
2006-07-24 22:31:20 +02:00
|
|
|
|
|
|
|
#
|
|
|
|
# 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
|
2010-10-08 09:09:47 +02:00
|
|
|
--exec $MYSQL_CHECK --analyze --databases test
|
|
|
|
--exec $MYSQL_CHECK --optimize --databases test
|
2006-07-24 22:31:20 +02:00
|
|
|
--replace_result 'Table is already up to date' OK
|
2010-10-08 09:09:47 +02:00
|
|
|
--exec $MYSQL_CHECK --all-in-1 --analyze --databases test
|
|
|
|
--exec $MYSQL_CHECK --all-in-1 --optimize --databases test
|
2006-07-24 22:31:20 +02:00
|
|
|
drop view v1;
|
|
|
|
drop table t1;
|
|
|
|
|
2007-10-30 09:51:57 +01:00
|
|
|
#
|
|
|
|
# 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`;
|
|
|
|
|
2007-04-04 00:12:31 +02:00
|
|
|
#
|
|
|
|
# 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;
|
2007-04-16 21:00:16 +02:00
|
|
|
insert into t_bug25347 values (1),(2),(3);
|
|
|
|
flush tables;
|
2008-02-28 18:55:46 +01:00
|
|
|
let $MYSQLD_DATADIR= `select @@datadir`;
|
2007-04-04 00:12:31 +02:00
|
|
|
--echo removing and creating
|
2008-02-28 18:55:46 +01:00
|
|
|
--remove_file $MYSQLD_DATADIR/d_bug25347/t_bug25347.MYI
|
|
|
|
--write_file $MYSQLD_DATADIR/d_bug25347/t_bug25347.MYI
|
2007-04-10 22:47:07 +02:00
|
|
|
EOF
|
2007-04-04 00:12:31 +02:00
|
|
|
--exec $MYSQL_CHECK --repair --databases d_bug25347
|
2007-04-16 21:00:16 +02:00
|
|
|
--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;
|
2007-04-04 00:12:31 +02:00
|
|
|
drop view v_bug25347;
|
|
|
|
drop table t_bug25347;
|
|
|
|
drop database d_bug25347;
|
|
|
|
use test;
|
|
|
|
|
2008-11-13 14:06:48 +01:00
|
|
|
#
|
|
|
|
# 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;
|
|
|
|
|
2008-11-14 08:40:46 +01:00
|
|
|
#
|
|
|
|
# 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
|
2008-12-18 20:37:18 +01:00
|
|
|
--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
|
2008-11-14 08:40:46 +01:00
|
|
|
EOF
|
|
|
|
--exec $MYSQL_CHECK test
|
|
|
|
# restore t1.frm
|
2008-12-18 20:37:18 +01:00
|
|
|
--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
|
2008-11-14 08:40:46 +01:00
|
|
|
DROP TABLE t1, t2;
|
|
|
|
|
|
|
|
|
2006-07-24 22:31:20 +02:00
|
|
|
--echo End of 5.0 tests
|
2007-10-24 19:36:57 +02:00
|
|
|
|
2008-12-18 20:37:18 +01:00
|
|
|
|
2007-10-24 19:36:57 +02:00
|
|
|
#
|
|
|
|
# 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;
|
2008-02-28 18:55:46 +01:00
|
|
|
let $MYSQLD_DATADIR= `select @@datadir`;
|
|
|
|
--copy_file $MYSQLD_DATADIR/test/v1.frm $MYSQLD_DATADIR/test/v-1.frm
|
2007-10-24 19:36:57 +02:00
|
|
|
show tables;
|
2010-10-08 09:09:47 +02:00
|
|
|
--exec $MYSQL_CHECK --check-upgrade --databases test
|
|
|
|
--exec $MYSQL_CHECK --fix-table-names --databases test
|
2007-10-24 19:36:57 +02:00
|
|
|
show tables;
|
|
|
|
drop view v1, `v-1`;
|
|
|
|
drop table t1;
|
2008-12-18 20:37:18 +01:00
|
|
|
|
|
|
|
|
2009-01-14 15:50:51 +01:00
|
|
|
#
|
|
|
|
# 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
|
2009-01-14 21:54:25 +01:00
|
|
|
# Error returned depends on platform, replace it with "Table doesn't exist"
|
|
|
|
--replace_result "Can't find file: './test/@003f.frm' (errno: 22)" "Table doesn't exist" "Table 'test.?' doesn't exist" "Table doesn't exist"
|
2009-01-14 15:50:51 +01:00
|
|
|
--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
|
2009-01-23 13:22:05 +01:00
|
|
|
let $MYSQLTEST_VARDIR= `select @@datadir`;
|
|
|
|
--write_file $MYSQLTEST_VARDIR/a@b/c@d.TRG
|
2009-01-14 15:50:51 +01:00
|
|
|
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
|
2009-01-23 13:22:05 +01:00
|
|
|
--write_file $MYSQLTEST_VARDIR/a@b/tr1.TRN
|
2009-01-14 15:50:51 +01:00
|
|
|
TYPE=TRIGGERNAME
|
|
|
|
trigger_table=c@d
|
|
|
|
EOF
|
2009-01-23 13:22:05 +01:00
|
|
|
--write_file $MYSQLTEST_VARDIR/a@b/t1.TRG
|
2009-01-14 15:50:51 +01:00
|
|
|
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
|
2009-01-23 13:22:05 +01:00
|
|
|
--write_file $MYSQLTEST_VARDIR/a@b/tr2.TRN
|
2009-01-14 15:50:51 +01:00
|
|
|
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
|
2009-10-21 14:59:47 +02:00
|
|
|
--exec $MYSQL_CHECK --default-character-set=utf8 --fix-db-names --fix-table-names --all-databases
|
2009-01-14 15:50:51 +01:00
|
|
|
|
|
|
|
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;
|
|
|
|
|
2009-05-21 03:31:10 +02:00
|
|
|
--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`;
|
2009-01-23 13:22:05 +01:00
|
|
|
|
2008-12-18 20:37:18 +01:00
|
|
|
--echo End of 5.1 tests
|
2010-10-08 09:09:47 +02:00
|
|
|
|
|
|
|
|
|
|
|
--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"
|
|
|
|
|