--- sql/filesort.cc 2014-06-12 08:57:03 +0000
|
+++ sql/filesort.cc 2014-06-25 13:34:23 +0000
|
@@ -976,6 +976,13 @@ static void make_sortkey(register Sort_p
|
if ((maybe_null = field->maybe_null()))
|
to++;
|
}
|
+ else if (const Type_handler *handler= Type_handlers.handler(sort_field->item->field_type()))
|
+ {
|
+ if ((maybe_null= sort_field->item->maybe_null))
|
+ *to++= 1;
|
+ if (handler->make_sort_key(sort_field, to) && maybe_null)
|
+ to[-1]= '\0';
|
+ }
|
else
|
{ // Item
|
Item *item=sort_field->item;
|
@@ -1881,6 +1887,12 @@ sortlength(THD *thd, SORT_FIELD *sortord
|
if (sortorder->field->maybe_null())
|
length++; // Place for NULL marker
|
}
|
+ else if (const Type_handler *handler= Type_handlers.handler(sortorder->item->field_type()))
|
+ {
|
+ handler->sortlength(sortorder, sortorder->item);
|
+ if (sortorder->item->maybe_null)
|
+ length++;
|
+ }
|
else
|
{
|
sortorder->result_type= sortorder->item->cmp_type();
|