summaryrefslogtreecommitdiff
path: root/sql/sql_select.cc
diff options
context:
space:
mode:
authoringo@mysql.com <>2004-12-16 11:41:52 +0100
committeringo@mysql.com <>2004-12-16 11:41:52 +0100
commit05d5360e7f19d95d32e49b65cd3cab5ea03c46db (patch)
tree3e9e553a8f21b5e0d73179dff22efae24126932c /sql/sql_select.cc
parent7216594f4f20b4f1df625cfd0f08a99d61486cc6 (diff)
downloadmariadb-git-05d5360e7f19d95d32e49b65cd3cab5ea03c46db.tar.gz
Enlarged group item key_length by a varstring length field.
Group item fields are implemented as varstrings nowadays. Made init_connect.test robust against existing t1.
Diffstat (limited to 'sql/sql_select.cc')
-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++;