diff --git a/mysql-test/r/alter_table.result b/mysql-test/r/alter_table.result index 9b60a187d0b..f224a10c9bd 100644 --- a/mysql-test/r/alter_table.result +++ b/mysql-test/r/alter_table.result @@ -556,3 +556,9 @@ ERROR 3D000: No database selected alter table test.t1 rename test.t1; use test; drop table t1; +create table t1 (mycol int(10) not null); +alter table t1 alter column mycol set default 0; +desc t1; +Field Type Null Key Default Extra +mycol int(10) NO 0 +drop table t1; diff --git a/mysql-test/t/alter_table.test b/mysql-test/t/alter_table.test index bae94656125..3878b55da11 100644 --- a/mysql-test/t/alter_table.test +++ b/mysql-test/t/alter_table.test @@ -401,3 +401,12 @@ use test; drop table t1; # End of 4.1 tests + +# +# Bug #14693 (ALTER SET DEFAULT doesn't work) +# + +create table t1 (mycol int(10) not null); +alter table t1 alter column mycol set default 0; +desc t1; +drop table t1; diff --git a/sql/sql_table.cc b/sql/sql_table.cc index e8ffdc23ec5..8c7b4e401a9 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -3379,7 +3379,10 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name, my_error(ER_BLOB_CANT_HAVE_DEFAULT, MYF(0), def->change); DBUG_RETURN(TRUE); } - def->def=alter->def; // Use new default + if ((def->def=alter->def)) // Use new default + def->flags&= ~NO_DEFAULT_VALUE_FLAG; + else + def->flags|= NO_DEFAULT_VALUE_FLAG; alter_it.remove(); } }