2613
2613
local_create_info.db_type= schema_table->table->s->db_type();
2614
2614
local_create_info.row_type= schema_table->table->s->row_type;
2615
2615
local_create_info.default_table_charset=default_charset_info;
2616
alter_info.flags= (ALTER_CHANGE_COLUMN | ALTER_RECREATE);
2616
alter_info.flags.set(ALTER_CHANGE_COLUMN);
2617
alter_info.flags.set(ALTER_RECREATE);
2617
2618
schema_table->table->use_all_columns();
2618
2619
if (mysql_prepare_alter_table(session, schema_table->table,
2619
2620
&local_create_info, &alter_info))
2947
2948
void setup_ha_alter_flags(Alter_info *alter_info, HA_ALTER_FLAGS *alter_flags)
2949
uint32_t flags= alter_info->flags;
2951
if (ALTER_ADD_COLUMN & flags)
2950
if (alter_info->flags.test(ALTER_ADD_COLUMN))
2952
2951
alter_flags->set(HA_ADD_COLUMN);
2953
if (ALTER_DROP_COLUMN & flags)
2952
if (alter_info->flags.test(ALTER_DROP_COLUMN))
2954
2953
alter_flags->set(HA_DROP_COLUMN);
2955
if (ALTER_RENAME & flags)
2954
if (alter_info->flags.test(ALTER_RENAME))
2956
2955
alter_flags->set(HA_RENAME_TABLE);
2957
if (ALTER_CHANGE_COLUMN & flags)
2956
if (alter_info->flags.test(ALTER_CHANGE_COLUMN))
2958
2957
alter_flags->set(HA_CHANGE_COLUMN);
2959
if (ALTER_COLUMN_DEFAULT & flags)
2958
if (alter_info->flags.test(ALTER_COLUMN_DEFAULT))
2960
2959
alter_flags->set(HA_COLUMN_DEFAULT_VALUE);
2961
if (ALTER_COLUMN_STORAGE & flags)
2960
if (alter_info->flags.test(ALTER_COLUMN_STORAGE))
2962
2961
alter_flags->set(HA_COLUMN_STORAGE);
2963
if (ALTER_COLUMN_FORMAT & flags)
2962
if (alter_info->flags.test(ALTER_COLUMN_FORMAT))
2964
2963
alter_flags->set(HA_COLUMN_FORMAT);
2965
if (ALTER_COLUMN_ORDER & flags)
2964
if (alter_info->flags.test(ALTER_COLUMN_ORDER))
2966
2965
alter_flags->set(HA_ALTER_COLUMN_ORDER);
2967
if (ALTER_STORAGE & flags)
2966
if (alter_info->flags.test(ALTER_STORAGE))
2968
2967
alter_flags->set(HA_ALTER_STORAGE);
2969
if (ALTER_ROW_FORMAT & flags)
2968
if (alter_info->flags.test(ALTER_ROW_FORMAT))
2970
2969
alter_flags->set(HA_ALTER_ROW_FORMAT);
2971
if (ALTER_RECREATE & flags)
2970
if (alter_info->flags.test(ALTER_RECREATE))
2972
2971
alter_flags->set(HA_RECREATE);
2973
if (ALTER_FOREIGN_KEY & flags)
2972
if (alter_info->flags.test(ALTER_FOREIGN_KEY))
2974
2973
alter_flags->set(HA_ALTER_FOREIGN_KEY);
3697
3697
session->set_proc_info("setup");
3698
if (!(alter_info->flags & ~(ALTER_RENAME | ALTER_KEYS_ONOFF)) &&
3699
!table->s->tmp_table) // no need to touch frm
3699
* test if no other bits except ALTER_RENAME and ALTER_KEYS_ONOFF are set
3702
tmp.reset(ALTER_RENAME);
3703
tmp.reset(ALTER_KEYS_ONOFF);
3704
tmp&= alter_info->flags;
3705
if (! (tmp.any()) &&
3706
! table->s->tmp_table) // no need to touch frm
3701
3708
switch (alter_info->keys_onoff) {
3702
3709
case LEAVE_AS_IS:
4338
4345
create_info.row_type=ROW_TYPE_NOT_USED;
4339
4346
create_info.default_table_charset=default_charset_info;
4340
4347
/* Force alter table to recreate table */
4341
alter_info.flags= (ALTER_CHANGE_COLUMN | ALTER_RECREATE);
4348
alter_info.flags.set(ALTER_CHANGE_COLUMN);
4349
alter_info.flags.set(ALTER_RECREATE);
4342
4350
return(mysql_alter_table(session, NULL, NULL, &create_info,
4343
4351
table_list, &alter_info, 0,
4344
4352
(order_st *) 0, 0));