diff --git a/mysql-test/r/information_schema.result b/mysql-test/r/information_schema.result index e0fb15a83c58823dfc3603bcb4584af762a72a22..0a7f1af45f3a52a2ddbe614675201fdfbf600c5f 100644 --- a/mysql-test/r/information_schema.result +++ b/mysql-test/r/information_schema.result @@ -958,3 +958,12 @@ trigger_schema trigger_name test tr1 use test; drop table t1; +create table t1 (a int not null, b int); +use information_schema; +select column_name, column_default from columns +where table_schema='test' and table_name='t1'; +column_name column_default +a NULL +b NULL +use test; +drop table t1; diff --git a/mysql-test/t/information_schema.test b/mysql-test/t/information_schema.test index 93b200b8a7c3320db94e569d1325a0b6b76437b6..d6d9f34302bdd3bf4a42c27f1796aacc69027a5d 100644 --- a/mysql-test/t/information_schema.test +++ b/mysql-test/t/information_schema.test @@ -639,3 +639,13 @@ select trigger_schema, trigger_name from triggers where trigger_name='tr1'; use test; drop table t1; + +# +# Bug#12518 COLUMN_DEFAULT has wrong value if NOT NULL is set +# +create table t1 (a int not null, b int); +use information_schema; +select column_name, column_default from columns + where table_schema='test' and table_name='t1'; +use test; +drop table t1; diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 397282acb5604ac044c09c726b65ef5de245163b..0a76e9fb753e32e02e50e473a0ccc07063594724 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -2462,6 +2462,7 @@ static int get_schema_column_record(THD *thd, struct st_table_list *tables, table->field[5]->set_notnull(); } else if (field->unireg_check == Field::NEXT_NUMBER || + lex->orig_sql_command != SQLCOM_SHOW_FIELDS || field->maybe_null()) table->field[5]->set_null(); // Null as default else