Commit 15c936e4 authored by Sergei Golubchik's avatar Sergei Golubchik

open_table_def() no longer probes for the old pre-5.1 table file names.

SELECT * FROM `t-1` will no longer read "t-1.frm" file, use `#mysql50#t-1` for this.
parent 9594107f
......@@ -621,49 +621,16 @@ enum open_frm_error open_table_def(THD *thd, TABLE_SHARE *share, uint flags)
share->error= OPEN_FRM_OPEN_ERROR;
strxmov(path, share->normalized_path.str, reg_ext, NullS);
if ((file= mysql_file_open(key_file_frm,
path, O_RDONLY | O_SHARE, MYF(0))) < 0)
{
if (!has_disabled_path_chars(share->table_name.str) &&
!has_disabled_path_chars(share->db.str))
{
/* Try unencoded 5.0 name */
uint length;
strxnmov(path, sizeof(path)-1,
mysql_data_home, "/", share->db.str, "/",
share->table_name.str, reg_ext, NullS);
length= unpack_filename(path, path) - reg_ext_length;
/*
The following is a safety test and should never fail
as the old file name should never be longer than the new one.
*/
DBUG_ASSERT(length <= share->normalized_path.length);
/*
If the old and the new names have the same length,
then table name does not have tricky characters,
so no need to check the old file name.
*/
if (length != share->normalized_path.length &&
(file= mysql_file_open(key_file_frm,
path, O_RDONLY | O_SHARE, MYF(0))) >= 0)
{
/* Unencoded 5.0 table name found */
path[length]= '\0'; // Remove .frm extension
strmov(share->normalized_path.str, path);
share->normalized_path.length= length;
}
}
/* still no luck? try to discover the table */
file= mysql_file_open(key_file_frm, path, O_RDONLY | O_SHARE, MYF(0));
if (file < 0)
{
if (flags & GTS_TABLE && flags & GTS_FORCE_DISCOVERY)
if ((flags & GTS_TABLE) && (flags & GTS_FORCE_DISCOVERY))
{
ha_discover_table(thd, share);
error_given= true;
}
goto err_not_open;
}
}
if (mysql_file_read(file, head, sizeof(head), MYF(MY_NABP)))
{
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment