summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
Diffstat (limited to 'sql')
-rw-r--r--sql/sql_select.cc15
1 files changed, 14 insertions, 1 deletions
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++;