1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00

Changes after discussion/review with Sanja

sql/parse_file.cc:
  Fix after discussion/review with Sanja: removed rename_view from sql_view to general function rename_in_schema_file
  (so it can be used for other .frm types like triggers too)
sql/parse_file.h:
  added prototype for rename_in_schema_file
sql/sql_rename.cc:
  simplified code (thanks to Sanja)
sql/sql_view.cc:
  moved rename_view_files to rename_in_schema_file (parse_file.cc)
  corrected MYF parameter from MY_WME to 0.
This commit is contained in:
unknown
2005-09-18 21:43:28 +02:00
parent bf58b698e2
commit 458aa0e34b
4 changed files with 98 additions and 62 deletions

View File

@@ -138,7 +138,7 @@ rename_tables(THD *thd, TABLE_LIST *table_list, bool skip_error)
for (ren_table= table_list; ren_table; ren_table= new_table->next_local)
{
db_type table_type;
int rc= 1;
char name[FN_REFLEN];
const char *new_alias, *old_alias;
@@ -165,36 +165,36 @@ rename_tables(THD *thd, TABLE_LIST *table_list, bool skip_error)
ren_table->db, old_alias,
reg_ext);
unpack_filename(name, name);
if ((frm_type= mysql_frm_type(name)) == FRMTYPE_TABLE &&
(table_type= get_table_type(thd, name)) == DB_TYPE_UNKNOWN)
frm_type= mysql_frm_type(name);
switch (frm_type)
{
my_error(ER_FILE_NOT_FOUND, MYF(0), name, my_errno);
if (!skip_error)
DBUG_RETURN(ren_table);
}
else {
int rc= 1;
switch (frm_type)
case FRMTYPE_TABLE:
{
case FRMTYPE_TABLE:
db_type table_type;
if ((table_type= get_table_type(thd, name)) == DB_TYPE_UNKNOWN)
my_error(ER_FILE_NOT_FOUND, MYF(0), name, my_errno);
else
rc= mysql_rename_table(table_type, ren_table->db, old_alias,
new_table->db, new_alias);
break;
case FRMTYPE_VIEW:
/* change of schema is not allowed */
if (strcmp(ren_table->db, new_table->db))
my_error(ER_FORBID_SCHEMA_CHANGE, MYF(0), ren_table->db,
new_table->db);
else
rc= mysql_rename_view(thd, new_alias, ren_table);
break;
case FRMTYPE_ERROR:
default:
my_error(ER_FILE_NOT_FOUND, MYF(0), name, my_errno);
break;
}
if (rc && !skip_error)
DBUG_RETURN(ren_table);
case FRMTYPE_VIEW:
/* change of schema is not allowed */
if (strcmp(ren_table->db, new_table->db))
my_error(ER_FORBID_SCHEMA_CHANGE, MYF(0), ren_table->db,
new_table->db);
else
rc= mysql_rename_view(thd, new_alias, ren_table);
break;
default:
DBUG_ASSERT(0); // should never happen
case FRMTYPE_ERROR:
my_error(ER_FILE_NOT_FOUND, MYF(0), name, my_errno);
break;
}
if (rc && !skip_error)
DBUG_RETURN(ren_table);
}
DBUG_RETURN(0);
}