Commit a4c1111a authored by unknown's avatar unknown

Bug#20616: drop_temp_table test fails on Windows platform


sql/sql_table.cc:
  Check for FN_DEVCHAR in the table name just before file creation. This allows for temporary tables to contain FN_DEVCHAR in the name.
sql/table.cc:
  Removed the check for FN_DEVCHAR is done at this level because it prevents Windows from creating any table with FN_DEVCHAR in the name.
parent 357755fc
...@@ -1657,7 +1657,22 @@ bool mysql_create_table(THD *thd,const char *db, const char *table_name, ...@@ -1657,7 +1657,22 @@ bool mysql_create_table(THD *thd,const char *db, const char *table_name,
create_info->table_options|=HA_CREATE_DELAY_KEY_WRITE; create_info->table_options|=HA_CREATE_DELAY_KEY_WRITE;
} }
else else
{
#ifdef FN_DEVCHAR
/* check if the table name contains FN_DEVCHAR when defined */
const char *start= alias;
while (*start != '\0')
{
if (*start == FN_DEVCHAR)
{
my_error(ER_WRONG_TABLE_NAME, MYF(0), alias);
DBUG_RETURN(TRUE);
}
start++;
}
#endif
build_table_path(path, sizeof(path), db, alias, reg_ext); build_table_path(path, sizeof(path), db, alias, reg_ext);
}
/* Check if table already exists */ /* Check if table already exists */
if ((create_info->options & HA_LEX_CREATE_TMP_TABLE) if ((create_info->options & HA_LEX_CREATE_TMP_TABLE)
......
...@@ -1614,10 +1614,6 @@ bool check_db_name(char *name) ...@@ -1614,10 +1614,6 @@ bool check_db_name(char *name)
if (*name == '/' || *name == '\\' || *name == FN_LIBCHAR || if (*name == '/' || *name == '\\' || *name == FN_LIBCHAR ||
*name == FN_EXTCHAR) *name == FN_EXTCHAR)
return 1; return 1;
#ifdef FN_DEVCHAR
if (*name == FN_DEVCHAR)
return 1;
#endif
name++; name++;
} }
return last_char_is_space || (uint) (name - start) > NAME_LEN; return last_char_is_space || (uint) (name - start) > NAME_LEN;
...@@ -1660,10 +1656,6 @@ bool check_table_name(const char *name, uint length) ...@@ -1660,10 +1656,6 @@ bool check_table_name(const char *name, uint length)
#endif #endif
if (*name == '/' || *name == '\\' || *name == FN_EXTCHAR) if (*name == '/' || *name == '\\' || *name == FN_EXTCHAR)
return 1; return 1;
#ifdef FN_DEVCHAR
if (*name == FN_DEVCHAR)
return 1;
#endif
name++; name++;
} }
#if defined(USE_MB) && defined(USE_MB_IDENT) #if defined(USE_MB) && defined(USE_MB_IDENT)
......
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