diff --git a/mysql-test/r/ctype_recoding.result b/mysql-test/r/ctype_recoding.result index 0bbed8a1bdf..acb07d1aa5d 100644 --- a/mysql-test/r/ctype_recoding.result +++ b/mysql-test/r/ctype_recoding.result @@ -258,3 +258,4 @@ t1 CREATE TABLE `t1` ( drop table t1; create table t1(a char character set latin1 default _cp1251 0xFF); ERROR 42000: Invalid default value for 'a' +End of 4.1 tests diff --git a/mysql-test/t/ctype_recoding.test b/mysql-test/t/ctype_recoding.test index ddaaa7b9e4f..c18c46b6b08 100644 --- a/mysql-test/t/ctype_recoding.test +++ b/mysql-test/t/ctype_recoding.test @@ -187,7 +187,7 @@ select rpad(c1,3,' #select case c1 when 'ß' then 'ß' when 'ö' then 'ö' else 'c' end from t1; #select export_set(5,c1,'ö'), export_set(5,'ö',c1) from t1; drop table t1; - + # # Bug 20695: problem with field default value's character set # @@ -199,4 +199,4 @@ drop table t1; --error 1067 create table t1(a char character set latin1 default _cp1251 0xFF); -# End of 4.1 tests +--echo End of 4.1 tests diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 20396bcf0b7..02de7abb674 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -2225,30 +2225,30 @@ static int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info, } /* - Convert the default value character + Convert the default value from client character set into the column character set if necessary. */ if (sql_field->def && - savecs != sql_field->def->collation.collation && + save_cs != sql_field->def->collation.collation && (sql_field->sql_type == FIELD_TYPE_VAR_STRING || sql_field->sql_type == FIELD_TYPE_STRING || sql_field->sql_type == FIELD_TYPE_SET || sql_field->sql_type == FIELD_TYPE_ENUM)) { - Item_arena backup_arena; - bool need_to_change_arena= - !thd->current_arena->is_conventional_execution(); + Query_arena backup_arena; + bool need_to_change_arena= !thd->stmt_arena->is_conventional(); if (need_to_change_arena) { - /* Assert that we don't do that at every PS execute */ - DBUG_ASSERT(thd->current_arena->is_first_stmt_execute()); - thd->set_n_backup_item_arena(thd->current_arena, &backup_arena); + /* Asser that we don't do that at every PS execute */ + DBUG_ASSERT(thd->stmt_arena->is_first_stmt_execute() || + thd->stmt_arena->is_first_sp_execute()); + thd->set_n_backup_active_arena(thd->stmt_arena, &backup_arena); } - sql_field->def= sql_field->def->safe_charset_converter(savecs); + sql_field->def= sql_field->def->safe_charset_converter(save_cs); if (need_to_change_arena) - thd->restore_backup_item_arena(thd->current_arena, &backup_arena); + thd->restore_active_arena(thd->stmt_arena, &backup_arena); if (sql_field->def == NULL) {