summaryrefslogtreecommitdiff
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
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
-rw-r--r--client/mysql.cc3
-rw-r--r--client/mysql_upgrade.c35
-rw-r--r--client/mysqladmin.cc3
-rw-r--r--client/mysqlbinlog.cc2
-rw-r--r--client/mysqlcheck.c1
-rw-r--r--client/mysqldump.c3
-rw-r--r--client/mysqlimport.c3
-rw-r--r--client/mysqlshow.c1
-rw-r--r--client/mysqlslap.c2
-rw-r--r--client/mysqltest.cc3
-rw-r--r--include/handler_ername.h1
-rw-r--r--include/my_base.h3
-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
-rw-r--r--mysys/my_handler_errors.h3
-rw-r--r--scripts/CMakeLists.txt8
-rw-r--r--scripts/mysql_install_db.sh8
-rw-r--r--[-rwxr-xr-x]scripts/mysql_secure_installation.pl.in0
-rw-r--r--[-rwxr-xr-x]scripts/mytop.sh0
-rw-r--r--sql/ha_partition.cc2
-rw-r--r--sql/handler.cc13
-rw-r--r--sql/share/errmsg-utf8.txt20
-rw-r--r--sql/sql_admin.cc5
-rw-r--r--storage/myisam/ha_myisam.cc2
29 files changed, 142 insertions, 41 deletions
diff --git a/client/mysql.cc b/client/mysql.cc
index a37392c7fc5..c2bfdce2f74 100644
--- a/client/mysql.cc
+++ b/client/mysql.cc
@@ -1672,8 +1672,9 @@ static void usage(int version)
return;
puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000"));
printf("Usage: %s [OPTIONS] [database]\n", my_progname);
- my_print_help(my_long_options);
print_defaults("my", load_default_groups);
+ puts("");
+ my_print_help(my_long_options);
my_print_variables(my_long_options);
}
diff --git a/client/mysql_upgrade.c b/client/mysql_upgrade.c
index 9e39b7273ea..8529ab91015 100644
--- a/client/mysql_upgrade.c
+++ b/client/mysql_upgrade.c
@@ -22,7 +22,7 @@
#include <welcome_copyright_notice.h> /* ORACLE_WELCOME_COPYRIGHT_NOTICE */
-#define VER "1.3"
+#define VER "1.3a"
#ifdef HAVE_SYS_WAIT_H
#include <sys/wait.h>
@@ -164,6 +164,15 @@ static struct my_option my_long_options[]=
};
+static const char *load_default_groups[]=
+{
+ "client", /* Read settings how to connect to server */
+ "mysql_upgrade", /* Read special settings for mysql_upgrade */
+ "client-server", /* Reads settings common between client & server */
+ "client-mariadb", /* Read mariadb unique client settings */
+ 0
+};
+
static void free_used_memory(void)
{
/* Free memory allocated by 'load_defaults' */
@@ -180,6 +189,7 @@ static void die(const char *fmt, ...)
DBUG_ENTER("die");
/* Print the error message */
+ fflush(stdout);
va_start(args, fmt);
if (fmt)
{
@@ -259,8 +269,11 @@ get_one_option(int optid, const struct my_option *opt,
printf("%s Ver %s Distrib %s, for %s (%s)\n",
my_progname, VER, MYSQL_SERVER_VERSION, SYSTEM_TYPE, MACHINE_TYPE);
puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000"));
- puts("MariaDB utility for upgrading databases to new MariaDB versions.\n");
+ puts("MariaDB utility for upgrading databases to new MariaDB versions.");
+ print_defaults("my", load_default_groups);
+ puts("");
my_print_help(my_long_options);
+ my_print_variables(my_long_options);
die(0);
break;
@@ -736,6 +749,7 @@ static int run_mysqlcheck_upgrade(void)
!opt_silent || opt_verbose ? "--verbose": "",
opt_silent ? "--silent": "",
opt_write_binlog ? "--write-binlog" : "--skip-write-binlog",
+ "2>&1",
NULL);
}
@@ -754,6 +768,7 @@ static int run_mysqlcheck_fixnames(void)
opt_verbose ? "--verbose": "",
opt_silent ? "--silent": "",
opt_write_binlog ? "--write-binlog" : "--skip-write-binlog",
+ "2>&1",
NULL);
}
@@ -855,14 +870,11 @@ static int run_sql_fix_privilege_tables(void)
}
-static const char *load_default_groups[]=
+static void print_error(const char *error_msg, DYNAMIC_STRING *output)
{
- "client", /* Read settings how to connect to server */
- "mysql_upgrade", /* Read special settings for mysql_upgrade */
- "client-server", /* Reads settings common between client & server */
- "client-mariadb", /* Read mariadb unique client settings */
- 0
-};
+ fprintf(stderr, "%s\n", error_msg);
+ fprintf(stderr, "%s", output->str);
+}
/* Convert the specified version string into the numeric format. */
@@ -895,6 +907,8 @@ static int check_version_match(void)
&ds_version, FALSE) ||
extract_variable_from_show(&ds_version, version_str))
{
+ print_error("Version check failed. Got the following error when calling "
+ "the 'mysql' command line client", &ds_version);
dynstr_free(&ds_version);
return 1; /* Query failed */
}
@@ -963,7 +977,8 @@ int main(int argc, char **argv)
}
else
{
- printf("The --upgrade-system-tables option was used, databases won't be touched.\n");
+ if (!opt_silent)
+ printf("The --upgrade-system-tables option was used, databases won't be touched.\n");
}
/*
diff --git a/client/mysqladmin.cc b/client/mysqladmin.cc
index e4a45d52f83..dd35547a2c2 100644
--- a/client/mysqladmin.cc
+++ b/client/mysqladmin.cc
@@ -1179,9 +1179,10 @@ static void usage(void)
puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000"));
puts("Administration program for the mysqld daemon.");
printf("Usage: %s [OPTIONS] command command....\n", my_progname);
+ print_defaults("my",load_default_groups);
+ puts("");
my_print_help(my_long_options);
my_print_variables(my_long_options);
- print_defaults("my",load_default_groups);
puts("\nWhere command is a one or more of: (Commands may be shortened)\n\
create databasename Create a new database\n\
debug Instruct server to write debug information to log\n\
diff --git a/client/mysqlbinlog.cc b/client/mysqlbinlog.cc
index 408a7c36139..990fadadae2 100644
--- a/client/mysqlbinlog.cc
+++ b/client/mysqlbinlog.cc
@@ -1542,6 +1542,8 @@ static void usage()
Dumps a MySQL binary log in a format usable for viewing or for piping to\n\
the mysql command line client.\n\n");
printf("Usage: %s [options] log-files\n", my_progname);
+ print_defaults("my",load_groups);
+ puts("");
my_print_help(my_options);
my_print_variables(my_options);
}
diff --git a/client/mysqlcheck.c b/client/mysqlcheck.c
index 7462c7561f6..b9053c3a142 100644
--- a/client/mysqlcheck.c
+++ b/client/mysqlcheck.c
@@ -250,6 +250,7 @@ static void usage(void)
puts("http://kb.askmonty.org/v/mysqlcheck for latest information about");
puts("this program.");
print_defaults("my", load_default_groups);
+ puts("");
my_print_help(my_long_options);
my_print_variables(my_long_options);
DBUG_VOID_RETURN;
diff --git a/client/mysqldump.c b/client/mysqldump.c
index bf3697f2b84..88aae2d4321 100644
--- a/client/mysqldump.c
+++ b/client/mysqldump.c
@@ -612,7 +612,8 @@ static void usage(void)
puts("Dumping structure and contents of MySQL databases and tables.");
short_usage_sub();
print_defaults("my",load_default_groups);
- my_print_help(my_long_options);
+ puts("");
+my_print_help(my_long_options);
my_print_variables(my_long_options);
} /* usage */
diff --git a/client/mysqlimport.c b/client/mysqlimport.c
index 77d0cd0a7d3..686f26cebeb 100644
--- a/client/mysqlimport.c
+++ b/client/mysqlimport.c
@@ -216,8 +216,9 @@ If one uses sockets to connect to the MySQL server, the server will open and\n\
read the text file directly. In other cases the client will open the text\n\
file. The SQL command 'LOAD DATA INFILE' is used to import the rows.\n");
- printf("\nUsage: %s [OPTIONS] database textfile...",my_progname);
+ printf("\nUsage: %s [OPTIONS] database textfile...\n",my_progname);
print_defaults("my",load_default_groups);
+ puts("");
my_print_help(my_long_options);
my_print_variables(my_long_options);
}
diff --git a/client/mysqlshow.c b/client/mysqlshow.c
index 323c4282ff4..5bcdd911cfd 100644
--- a/client/mysqlshow.c
+++ b/client/mysqlshow.c
@@ -279,6 +279,7 @@ If no table is given, then all matching tables in database are shown.\n\
If no column is given, then all matching columns and column types in table\n\
are shown.");
print_defaults("my",load_default_groups);
+ puts("");
my_print_help(my_long_options);
my_print_variables(my_long_options);
}
diff --git a/client/mysqlslap.c b/client/mysqlslap.c
index 202fcf7950f..536535be294 100644
--- a/client/mysqlslap.c
+++ b/client/mysqlslap.c
@@ -732,7 +732,9 @@ static void usage(void)
puts("Run a query multiple times against the server.\n");
printf("Usage: %s [OPTIONS]\n",my_progname);
print_defaults("my",load_default_groups);
+ puts("");
my_print_help(my_long_options);
+ my_print_variables(my_long_options);
}
diff --git a/client/mysqltest.cc b/client/mysqltest.cc
index 22645c89067..68d220b26c0 100644
--- a/client/mysqltest.cc
+++ b/client/mysqltest.cc
@@ -7003,8 +7003,9 @@ void usage()
puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000"));
printf("Runs a test against the mysql server and compares output with a results file.\n\n");
printf("Usage: %s [OPTIONS] [database] < test_file\n", my_progname);
+ print_defaults("my",load_default_groups);
+ puts("");
my_print_help(my_long_options);
- printf(" --no-defaults Don't read default options from any options file.\n");
my_print_variables(my_long_options);
}
diff --git a/include/handler_ername.h b/include/handler_ername.h
index 91780be553d..50f7f535806 100644
--- a/include/handler_ername.h
+++ b/include/handler_ername.h
@@ -78,3 +78,4 @@
{ "HA_ERR_ROW_NOT_VISIBLE", HA_ERR_ROW_NOT_VISIBLE, "" },
{ "HA_ERR_ABORTED_BY_USER", HA_ERR_ABORTED_BY_USER, "" },
{ "HA_ERR_DISK_FULL", HA_ERR_DISK_FULL, "" },
+{ "HA_ERR_INCOMPATIBLE_DEFINITION", HA_ERR_INCOMPATIBLE_DEFINITION, "" },
diff --git a/include/my_base.h b/include/my_base.h
index e072bb7e2b1..36c97d61cb9 100644
--- a/include/my_base.h
+++ b/include/my_base.h
@@ -466,7 +466,8 @@ enum ha_base_keytype {
#define HA_ERR_ROW_NOT_VISIBLE 182
#define HA_ERR_ABORTED_BY_USER 183
#define HA_ERR_DISK_FULL 184
-#define HA_ERR_LAST 184 /* Copy of last error nr */
+#define HA_ERR_INCOMPATIBLE_DEFINITION 185
+#define HA_ERR_LAST 185 /* Copy of last error nr */
/* Number of different errors */
#define HA_ERR_ERRORS (HA_ERR_LAST - HA_ERR_FIRST + 1)
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;
diff --git a/mysys/my_handler_errors.h b/mysys/my_handler_errors.h
index 8b3b359ea95..bcc1ba9c476 100644
--- a/mysys/my_handler_errors.h
+++ b/mysys/my_handler_errors.h
@@ -86,7 +86,8 @@ static const char *handler_error_messages[]=
"Table is being used in foreign key check",
"Row is not visible by the current transaction",
"Operation was interrupted by end user (probably kill command?)",
- "Disk full"
+ "Disk full",
+ "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"
};
#endif /* MYSYS_MY_HANDLER_ERRORS_INCLUDED */
diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt
index 76e92899c2a..cd4cfc858d8 100644
--- a/scripts/CMakeLists.txt
+++ b/scripts/CMakeLists.txt
@@ -172,6 +172,10 @@ ENDIF()
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysqlbug.sh
${CMAKE_CURRENT_BINARY_DIR}/mysqlbug ESCAPE_QUOTES @ONLY)
+ EXECUTE_PROCESS(
+ COMMAND chmod +x ${CMAKE_CURRENT_BINARY_DIR}/mysqlbug
+ )
+
INSTALL_SCRIPT(${CMAKE_CURRENT_BINARY_DIR}/mysqlbug
DESTINATION ${INSTALL_BINDIR}
COMPONENT Server
@@ -205,6 +209,10 @@ CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysql_install_db.sh
${CMAKE_CURRENT_BINARY_DIR}/mysql_install_db ESCAPE_QUOTES @ONLY)
SET(DEST ${INSTALL_SCRIPTDIR})
SET(EXT)
+ EXECUTE_PROCESS(
+ COMMAND chmod +x ${CMAKE_CURRENT_BINARY_DIR}/mysql_install_db
+ )
+
INSTALL_SCRIPT(
"${CMAKE_CURRENT_BINARY_DIR}/mysql_install_db"
DESTINATION ${DEST}
diff --git a/scripts/mysql_install_db.sh b/scripts/mysql_install_db.sh
index a481aa836c6..10038d2cf58 100644
--- a/scripts/mysql_install_db.sh
+++ b/scripts/mysql_install_db.sh
@@ -90,7 +90,7 @@ link_to_help()
{
echo
echo "The latest information about mysql_install_db is available at"
- echo "http://kb.askmonty.org/v/installing-system-tables-mysql_install_db."
+ echo "https://mariadb.com/kb/en/installing-system-tables-mysql_install_db"
}
parse_arg()
@@ -492,7 +492,7 @@ then
echo "databases and anonymous user created by default. This is"
echo "strongly recommended for production servers."
echo
- echo "See the MariaDB Knowledgebase at http://kb.askmonty.org or the"
+ echo "See the MariaDB Knowledgebase at http://mariadb.com/kb or the"
echo "MySQL manual for more instructions."
if test "$in_rpm" -eq 0
@@ -512,9 +512,9 @@ then
echo "You can find additional information about the MySQL part at:"
echo "http://dev.mysql.com"
echo "Support MariaDB development by buying support/new features from"
- echo "Monty Program Ab. You can contact us about this at sales@montyprogram.com".
+ echo "SkySQL Ab. You can contact us about this at sales@skysql.com".
echo "Alternatively consider joining our community based development effort:"
- echo "http://kb.askmonty.org/en/contributing-to-the-mariadb-project/"
+ echo "http://mariadb.com/kb/en/contributing-to-the-mariadb-project/"
echo
fi
diff --git a/scripts/mysql_secure_installation.pl.in b/scripts/mysql_secure_installation.pl.in
index 188a6bd7104..188a6bd7104 100755..100644
--- a/scripts/mysql_secure_installation.pl.in
+++ b/scripts/mysql_secure_installation.pl.in
diff --git a/scripts/mytop.sh b/scripts/mytop.sh
index 480805e90b1..480805e90b1 100755..100644
--- a/scripts/mytop.sh
+++ b/scripts/mytop.sh
diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc
index f65ab41908d..feda3460c9f 100644
--- a/sql/ha_partition.cc
+++ b/sql/ha_partition.cc
@@ -305,7 +305,7 @@ void ha_partition::init_handler_variables()
const char *ha_partition::table_type() const
{
// we can do this since we only support a single engine type
- return m_file[0]->table_type();
+ return m_file && m_file[0] ? m_file[0]->table_type() : "Unknown";
}
diff --git a/sql/handler.cc b/sql/handler.cc
index 59ed31f6076..e6981689d19 100644
--- a/sql/handler.cc
+++ b/sql/handler.cc
@@ -44,6 +44,7 @@
#include "probes_mysql.h"
#include "debug_sync.h" // DEBUG_SYNC
#include "sql_audit.h"
+#include "../mysys/my_handler_errors.h"
#ifdef WITH_PARTITION_STORAGE_ENGINE
#include "ha_partition.h"
@@ -3139,8 +3140,18 @@ void handler::print_error(int error, myf errflag)
my_error(ER_GET_ERRMSG, errflag, error, str.c_ptr(), engine);
}
}
+ else if (error >= HA_ERR_FIRST && error <= HA_ERR_LAST)
+ {
+ const char* engine= table_type();
+ const char *errmsg= handler_error_messages[error - HA_ERR_FIRST];
+ my_error(ER_GET_ERRMSG, errflag, error, errmsg, engine);
+ SET_FATAL_ERROR;
+ }
else
- my_error(ER_GET_ERRNO,errflag,error);
+ {
+ my_error(ER_GET_ERRNO, errflag,error);
+ /* SET_FATAL_ERROR; */
+ }
DBUG_VOID_RETURN;
}
}
diff --git a/sql/share/errmsg-utf8.txt b/sql/share/errmsg-utf8.txt
index 4f22ffb04de..3259fccebd4 100644
--- a/sql/share/errmsg-utf8.txt
+++ b/sql/share/errmsg-utf8.txt
@@ -5067,17 +5067,17 @@ ER_UNSUPPORTED_PS
eng "This command is not supported in the prepared statement protocol yet"
ger "Dieser Befehl wird im Protokoll für vorbereitete Anweisungen noch nicht unterstützt"
ER_GET_ERRMSG
- dan "Modtog fejl %d '%-.100s' fra %s"
- eng "Got error %d '%-.100s' from %s"
- ger "Fehler %d '%-.100s' von %s"
- nor "Mottok feil %d '%-.100s' fa %s"
- norwegian-ny "Mottok feil %d '%-.100s' fra %s"
+ dan "Modtog fejl %d '%-.200s' fra %s"
+ eng "Got error %d '%-.200s' from %s"
+ ger "Fehler %d '%-.200s' von %s"
+ nor "Mottok feil %d '%-.200s' fa %s"
+ norwegian-ny "Mottok feil %d '%-.200s' fra %s"
ER_GET_TEMPORARY_ERRMSG
- dan "Modtog temporary fejl %d '%-.100s' fra %s"
- eng "Got temporary error %d '%-.100s' from %s"
- ger "Temporärer Fehler %d '%-.100s' von %s"
- nor "Mottok temporary feil %d '%-.100s' fra %s"
- norwegian-ny "Mottok temporary feil %d '%-.100s' fra %s"
+ dan "Modtog temporary fejl %d '%-.200s' fra %s"
+ eng "Got temporary error %d '%-.200s' from %s"
+ ger "Temporärer Fehler %d '%-.200s' von %s"
+ nor "Mottok temporary feil %d '%-.200s' fra %s"
+ norwegian-ny "Mottok temporary feil %d '%-.200s' fra %s"
ER_UNKNOWN_TIME_ZONE
eng "Unknown or incorrect time zone: '%-.64s'"
ger "Unbekannte oder falsche Zeitzone: '%-.64s'"
diff --git a/sql/sql_admin.cc b/sql/sql_admin.cc
index b8a7afbd6c5..9beeca06945 100644
--- a/sql/sql_admin.cc
+++ b/sql/sql_admin.cc
@@ -162,10 +162,11 @@ static int prepare_for_repair(THD *thd, TABLE_LIST *table_list,
- Run a normal repair using the new index file and the old data file
*/
- if (table->s->frm_version != FRM_VER_TRUE_VARCHAR)
+ if (table->s->frm_version != FRM_VER_TRUE_VARCHAR &&
+ table->s->varchar_fields)
{
error= send_check_errmsg(thd, table_list, "repair",
- "Failed repairing incompatible .frm file");
+ "Failed repairing a very old .frm file as the data file format has changed between versions. Please dump the table in your old system with mysqldump and read it into this system with mysql or mysqlimport");
goto end;
}
diff --git a/storage/myisam/ha_myisam.cc b/storage/myisam/ha_myisam.cc
index 893f3d92caf..cb023c25776 100644
--- a/storage/myisam/ha_myisam.cc
+++ b/storage/myisam/ha_myisam.cc
@@ -762,7 +762,7 @@ int ha_myisam::open(const char *name, int mode, uint test_if_locked)
true, table))
{
/* purecov: begin inspected */
- my_errno= HA_ERR_CRASHED;
+ my_errno= HA_ERR_INCOMPATIBLE_DEFINITION;
goto err;
/* purecov: end */
}