summaryrefslogtreecommitdiff
path: root/sql/filesort.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/filesort.cc')
-rw-r--r--sql/filesort.cc15
1 files changed, 14 insertions, 1 deletions
diff --git a/sql/filesort.cc b/sql/filesort.cc
index a15ffb43f6f..8699a517661 100644
--- a/sql/filesort.cc
+++ b/sql/filesort.cc
@@ -663,9 +663,22 @@ static void make_sortkey(register SORTPARAM *param,
for ( ; (field= addonf->field) ; addonf++)
{
if (addonf->null_bit && field->is_null())
+ {
nulls[addonf->null_offset]|= addonf->null_bit;
+#ifdef HAVE_purify
+ bzero(to, addonf->length);
+#endif
+ }
else
- field->pack((char *) to, field->ptr);
+ {
+ uchar *end= (uchar*) field->pack((char *) to, field->ptr);
+#ifdef HAVE_purify
+ uint length= (uint) ((to + addonf->length) - end);
+ DBUG_ASSERT((int) length >= 0);
+ if (length)
+ bzero(end, length);
+#endif
+ }
to+= addonf->length;
}
}