diff --git a/libmysqld/lib_sql.cc b/libmysqld/lib_sql.cc index fdc1acea09b..9fba0327525 100644 --- a/libmysqld/lib_sql.cc +++ b/libmysqld/lib_sql.cc @@ -591,7 +591,7 @@ err: C_MODE_END -bool Protocol::send_fields(List *list, int flags) +bool Protocol::send_fields(List *list, uint flags) { List_iterator_fast it(*list); Item *item; diff --git a/sql/handler.cc b/sql/handler.cc index 97708fa77fe..bb5e980f7bf 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -157,12 +157,11 @@ enum db_type ha_checktype(enum db_type database_type) break; } - return - DB_TYPE_UNKNOWN != (enum db_type) thd->variables.table_type ? - (enum db_type) thd->variables.table_type : - DB_TYPE_UNKNOWN != (enum db_type) global_system_variables.table_type ? - (enum db_type) global_system_variables.table_type : - DB_TYPE_MYISAM; + return ((enum db_type) thd->variables.table_type != DB_TYPE_UNKNOWN ? + (enum db_type) thd->variables.table_type : + (enum db_type) global_system_variables.table_type != + DB_TYPE_UNKNOWN ? + (enum db_type) global_system_variables.table_type : DB_TYPE_MYISAM); } /* ha_checktype */ @@ -784,10 +783,14 @@ bool ha_flush_logs() int ha_delete_table(enum db_type table_type, const char *path) { + handler *file; char tmp_path[FN_REFLEN]; - handler *file=(table_type== DB_TYPE_UNKNOWN ? 0 : get_new_handler((TABLE*) 0, table_type)); - if (!file) + + /* DB_TYPE_UNKNOWN is used in ALTER TABLE when renaming only .frm files */ + if (table_type == DB_TYPE_UNKNOWN || + ! (file=get_new_handler((TABLE*) 0, table_type))) return ENOENT; + if (lower_case_table_names == 2 && !(file->table_flags() & HA_FILE_BASED)) { /* Ensure that table handler get path in lower case */ diff --git a/sql/sql_table.cc b/sql/sql_table.cc index e5d060f99fb..26c483a61a8 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -3085,7 +3085,6 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name, } /* We don't want update TIMESTAMP fields during ALTER TABLE. */ - new_table->timestamp_field_type= TIMESTAMP_NO_AUTO_SET; thd->count_cuted_fields= CHECK_FIELD_WARN; // calc cuted fields thd->cuted_fields=0L; thd->proc_info="copy to tmp table"; @@ -3093,7 +3092,7 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name, copied=deleted=0; if (new_table && !new_table->is_view) { - new_table->timestamp_default_now= 0; + new_table->timestamp_field_type= TIMESTAMP_NO_AUTO_SET; new_table->next_number_field=new_table->found_next_number_field; error=copy_data_between_tables(table,new_table,create_list, handle_duplicates,