Commit a4c1111a authored by unknown's avatar unknown
Browse files

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
Loading
Loading
Loading
Loading
+16 −1
Original line number Diff line number Diff line
@@ -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;
  }
  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);
  }

  /* Check if table already exists */
  if ((create_info->options & HA_LEX_CREATE_TMP_TABLE)
+0 −8
Original line number Diff line number Diff line
@@ -1614,10 +1614,6 @@ bool check_db_name(char *name)
    if (*name == '/' || *name == '\\' || *name == FN_LIBCHAR ||
	*name == FN_EXTCHAR)
      return 1;
#ifdef FN_DEVCHAR
    if (*name == FN_DEVCHAR)
      return 1;
#endif
    name++;
  }
  return last_char_is_space || (uint) (name - start) > NAME_LEN;
@@ -1660,10 +1656,6 @@ bool check_table_name(const char *name, uint length)
#endif
    if (*name == '/' || *name == '\\' || *name == FN_EXTCHAR)
      return 1;
#ifdef FN_DEVCHAR
    if (*name == FN_DEVCHAR)
      return 1;
#endif
    name++;
  }
#if defined(USE_MB) && defined(USE_MB_IDENT)