diff options
author | Michael Widenius <monty@askmonty.org> | 2014-01-22 15:16:57 +0200 |
---|---|---|
committer | Michael Widenius <monty@askmonty.org> | 2014-01-22 15:16:57 +0200 |
commit | 04bee0af2e8d663fd06e5dc4ecdc2b64b30440ea (patch) | |
tree | 5fe06b88ed779592ae59b33690cae7223a4ef22f /mysql-test | |
parent | 5e02635eb846214b462ed4ab45b2142a08dc5a91 (diff) | |
download | mariadb-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.result | 3 | ||||
-rw-r--r-- | mysql-test/r/repair.result | 34 | ||||
-rw-r--r-- | mysql-test/std_data/host_old.MYD | 0 | ||||
-rw-r--r-- | mysql-test/std_data/host_old.MYI | bin | 0 -> 1024 bytes | |||
-rw-r--r-- | mysql-test/std_data/host_old.frm | bin | 0 -> 8958 bytes | |||
-rw-r--r-- | mysql-test/t/mysql_upgrade.test | 5 | ||||
-rw-r--r-- | mysql-test/t/repair.test | 20 |
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 Binary files differnew file mode 100644 index 00000000000..c4c3f225e25 --- /dev/null +++ b/mysql-test/std_data/host_old.MYI diff --git a/mysql-test/std_data/host_old.frm b/mysql-test/std_data/host_old.frm Binary files differnew file mode 100644 index 00000000000..10ef3ec58be --- /dev/null +++ b/mysql-test/std_data/host_old.frm 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; |