summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
authorMichael Widenius <monty@askmonty.org>2014-01-22 15:16:57 +0200
committerMichael Widenius <monty@askmonty.org>2014-01-22 15:16:57 +0200
commit04bee0af2e8d663fd06e5dc4ecdc2b64b30440ea (patch)
tree5fe06b88ed779592ae59b33690cae7223a4ef22f /mysql-test
parent5e02635eb846214b462ed4ab45b2142a08dc5a91 (diff)
downloadmariadb-git-04bee0af2e8d663fd06e5dc4ecdc2b64b30440ea.tar.gz
Fix for MDEV-5547: Bad error message when moving very old .frm files to MariaDB 5.5.
mysql_upgrade --help now also prints out --default options and variable values. mysql_upgrade now prints permission errors. mysql_upgrade doesn't print some non essential info if --silent is used. Added handler error message about incompatible versions Fixed that mysqlbug and mysql_install_db have the executable flag set. Removed executable flag for some non executable files. Changed in mysql_install_db askmonty.org to mariadb.com. Ensured that all client executables prints --default options the same way. Allow REPAIR ... USE_FRM for old .frm files if the are still compatible. Extended shown error for storage engine messages. client/mysql.cc: print_defaults() should be first (as in all other programs) client/mysql_upgrade.c: --help now also prints out --default options and variable values Print out error if wrong permissions Don't print info if --silent client/mysqladmin.cc: print_defaults() should be first (as in all other programs) client/mysqlbinlog.cc: Added print_defaults() to --help client/mysqlcheck.c: Added empty line in --help client/mysqlimport.c: Added empty line in --help client/mysqlshow.c: Made --help compatible client/mysqlslap.c: Made --help compatible client/mysqltest.cc: Added print_defaults() to --help include/handler_ername.h: Added handler error message include/my_base.h: Added handler error message mysql-test/r/mysql_upgrade.result: Updated results mysql-test/r/repair.result: Added test case for better error messages mysql-test/std_data/host_old.MYD: Added test case for better error messages mysql-test/std_data/host_old.MYI: Added test case for better error messages mysql-test/std_data/host_old.frm: Added test case for better error messages mysql-test/t/repair.test: Added test case for better error messages mysys/my_handler_errors.h: Added handler error message scripts/CMakeLists.txt: Fixed that mysqlbug and mysql_install_db have the executable flag set scripts/mysql_install_db.sh: askmonty.org -> mariadb.com sql/ha_partition.cc: Sometimes table_type() can be called for errors even if partition didn't manage to open any files sql/handler.cc: Write clear text for not handled, but defined error messages. sql/share/errmsg-utf8.txt: Extended shown error for storage engine messages sql/sql_admin.cc: Allow REPAIR ... USE_FRM for old .frm files if the are still compatible storage/myisam/ha_myisam.cc: Use new error message
Diffstat (limited to 'mysql-test')
-rw-r--r--mysql-test/r/mysql_upgrade.result3
-rw-r--r--mysql-test/r/repair.result34
-rw-r--r--mysql-test/std_data/host_old.MYD0
-rw-r--r--mysql-test/std_data/host_old.MYIbin0 -> 1024 bytes
-rw-r--r--mysql-test/std_data/host_old.frmbin0 -> 8958 bytes
-rw-r--r--mysql-test/t/mysql_upgrade.test5
-rw-r--r--mysql-test/t/repair.test20
7 files changed, 57 insertions, 5 deletions
diff --git a/mysql-test/r/mysql_upgrade.result b/mysql-test/r/mysql_upgrade.result
index 7c745d83e5d..285b00ae27f 100644
--- a/mysql-test/r/mysql_upgrade.result
+++ b/mysql-test/r/mysql_upgrade.result
@@ -108,6 +108,9 @@ test
Phase 3/3: Running 'mysql_fix_privilege_tables'...
OK
DROP USER mysqltest1@'%';
+Version check failed. Got the following error when calling the 'mysql' command line client
+ERROR 1045 (28000): Access denied for user 'mysqltest1'@'localhost' (using password: YES)
+FATAL ERROR: Upgrade failed
Run mysql_upgrade with a non existing server socket
mysqlcheck: Got error: 2005: Unknown MySQL server host 'not_existing_host' (errno) when trying to connect
FATAL ERROR: Upgrade failed
diff --git a/mysql-test/r/repair.result b/mysql-test/r/repair.result
index 1a98f2f0f36..52ae9c38792 100644
--- a/mysql-test/r/repair.result
+++ b/mysql-test/r/repair.result
@@ -130,26 +130,25 @@ test.t1 check error Table upgrade required. Please do "REPAIR TABLE `t1`" or dum
# REPAIR old table USE_FRM should fail
REPAIR TABLE t1 USE_FRM;
Table Op Msg_type Msg_text
-t1 repair error Failed repairing incompatible .frm file
+test.t1 repair warning Number of rows changed from 0 to 1
+test.t1 repair status OK
# Run REPAIR TABLE to upgrade .frm file
REPAIR TABLE t1;
Table Op Msg_type Msg_text
test.t1 repair status OK
SHOW TABLE STATUS LIKE 't1';
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
-t1 MyISAM 10 Fixed 2 7 14 1970324836974591 1024 0 NULL # # NULL latin1_swedish_ci NULL
+t1 MyISAM 10 Fixed 1 7 7 1970324836974591 1024 0 NULL # # NULL latin1_swedish_ci NULL
SELECT * FROM t1;
id
1
-2
REPAIR TABLE t1 USE_FRM;
Table Op Msg_type Msg_text
-test.t1 repair warning Number of rows changed from 0 to 2
+test.t1 repair warning Number of rows changed from 0 to 1
test.t1 repair status OK
SELECT * FROM t1;
id
1
-2
DROP TABLE t1;
DROP TABLE IF EXISTS tt1;
CREATE TEMPORARY TABLE tt1 (c1 INT);
@@ -183,3 +182,28 @@ test.t1 repair status OK
test.t2 repair status OK
set @@autocommit= default;
drop tables t1, t2;
+#
+# Check that we have decent error messages when using crashed
+# .frm file from MySQL 3.23
+#
+# Test with a saved table from 3.23
+select count(*) from t1;
+ERROR HY000: Got error 185 'Incompatible key or row definition between the MariaDB .frm file and the information in the storage engine. You have to dump and restore the table to fix this' from MyISAM
+check table t1;
+Table Op Msg_type Msg_text
+test.t1 check Error Got error 185 'Incompatible key or row definition between the MariaDB .frm file and the information in the storage engine. You have to dump and restore the table to fix this' from MyISAM
+test.t1 check error Corrupt
+repair table t1;
+Table Op Msg_type Msg_text
+test.t1 repair Error Got error 185 'Incompatible key or row definition between the MariaDB .frm file and the information in the storage engine. You have to dump and restore the table to fix this' from MyISAM
+test.t1 repair error Corrupt
+repair table t1 use_frm;
+Table Op Msg_type Msg_text
+test.t1 repair status OK
+select count(*) from t1;
+count(*)
+0
+check table t1;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+drop table t1;
diff --git a/mysql-test/std_data/host_old.MYD b/mysql-test/std_data/host_old.MYD
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/mysql-test/std_data/host_old.MYD
diff --git a/mysql-test/std_data/host_old.MYI b/mysql-test/std_data/host_old.MYI
new file mode 100644
index 00000000000..c4c3f225e25
--- /dev/null
+++ b/mysql-test/std_data/host_old.MYI
Binary files differ
diff --git a/mysql-test/std_data/host_old.frm b/mysql-test/std_data/host_old.frm
new file mode 100644
index 00000000000..10ef3ec58be
--- /dev/null
+++ b/mysql-test/std_data/host_old.frm
Binary files differ
diff --git a/mysql-test/t/mysql_upgrade.test b/mysql-test/t/mysql_upgrade.test
index 3bdaf4ceadb..820144216ab 100644
--- a/mysql-test/t/mysql_upgrade.test
+++ b/mysql-test/t/mysql_upgrade.test
@@ -40,6 +40,11 @@ GRANT ALL ON *.* TO mysqltest1@'%';
DROP USER mysqltest1@'%';
+#
+# check that we get proper error messages if wrong user
+
+--error 1
+--exec $MYSQL_UPGRADE --force --user=mysqltest1 --password=sakila 2>&1
#
# Bug #26639 mysql_upgrade exits successfully even if external command failed
diff --git a/mysql-test/t/repair.test b/mysql-test/t/repair.test
index 3c55f06ff4c..337b73f37d1 100644
--- a/mysql-test/t/repair.test
+++ b/mysql-test/t/repair.test
@@ -188,3 +188,23 @@ set @@autocommit= 0;
repair table t1, t2;
set @@autocommit= default;
drop tables t1, t2;
+
+--echo #
+--echo # Check that we have decent error messages when using crashed
+--echo # .frm file from MySQL 3.23
+--echo #
+
+--echo # Test with a saved table from 3.23
+let $MYSQLD_DATADIR= `select @@datadir`;
+--copy_file std_data/host_old.frm $MYSQLD_DATADIR/test/t1.frm
+--copy_file std_data/host_old.MYD $MYSQLD_DATADIR/test/t1.MYD
+--copy_file std_data/host_old.MYI $MYSQLD_DATADIR/test/t1.MYI
+
+--error ER_GET_ERRMSG
+select count(*) from t1;
+check table t1;
+repair table t1;
+repair table t1 use_frm;
+select count(*) from t1;
+check table t1;
+drop table t1;