diff --git a/mysql-test/r/init_connect.result b/mysql-test/r/init_connect.result index db1e72dfca9..eeae422edc4 100644 --- a/mysql-test/r/init_connect.result +++ b/mysql-test/r/init_connect.result @@ -12,7 +12,7 @@ set GLOBAL init_connect=DEFAULT; select @a; @a NULL -set global init_connect="create table t1(a char(10));\ +set global init_connect="drop table if exists t1; create table t1(a char(10));\ insert into t1 values ('\0');insert into t1 values('abc')"; select hex(a) from t1; hex(a) diff --git a/mysql-test/t/init_connect.test b/mysql-test/t/init_connect.test index 29962abc04d..d9682eb8122 100644 --- a/mysql-test/t/init_connect.test +++ b/mysql-test/t/init_connect.test @@ -19,7 +19,7 @@ connect (con3,localhost,user_1,,); connection con3; select @a; connection con0; -set global init_connect="create table t1(a char(10));\ +set global init_connect="drop table if exists t1; create table t1(a char(10));\ insert into t1 values ('\0');insert into t1 values('abc')"; connect (con4,localhost,user_1,,); connection con4; diff --git a/sql/sql_select.cc b/sql/sql_select.cc index ed3606856a0..13f556efa16 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -11654,8 +11654,21 @@ calc_group_buffer(JOIN *join,ORDER *group) key_length+=sizeof(double); else if ((*group->item)->result_type() == INT_RESULT) key_length+=sizeof(longlong); + else if ((*group->item)->result_type() == STRING_RESULT) + { + /* + Group strings are taken as varstrings and require an length field. + A field is not yet created by create_tmp_field() + and the sizes should match up. + */ + key_length+= (*group->item)->max_length + HA_KEY_BLOB_LENGTH; + } else - key_length+=(*group->item)->max_length; + { + /* This case should never be choosen */ + DBUG_ASSERT(0); + current_thd->fatal_error(); + } parts++; if ((*group->item)->maybe_null) null_parts++;