From 5ce475835c84a79279b78838edc5113329a785ca Mon Sep 17 00:00:00 2001
From: unknown <bar@bar.mysql.r18.ru>
Date: Tue, 14 Jan 2003 18:28:50 +0400
Subject: [PATCH] bin chatset now handles strnncoll itself so we don't have to
 check if charset is binary anymore

---
 sql/field.cc        | 30 ------------------------------
 strings/ctype-bin.c |  4 ++--
 2 files changed, 2 insertions(+), 32 deletions(-)

diff --git a/sql/field.cc b/sql/field.cc
index f81f72635b..467096a4a7 100644
--- a/sql/field.cc
+++ b/sql/field.cc
@@ -4017,11 +4017,6 @@ int Field_string::pack_cmp(const char *a, const char *b, uint length)
   uint a_length= (uint) (uchar) *a++;
   uint b_length= (uint) (uchar) *b++;
 
-  if (binary())
-  {
-    int cmp= memcmp(a,b,min(a_length,b_length));
-    return cmp ? cmp : (int) (a_length - b_length);
-  }
   return my_strnncoll(field_charset,
 		      (const uchar*)a,a_length,
 		      (const uchar*)b,b_length);
@@ -4036,11 +4031,6 @@ int Field_string::pack_cmp(const char *b, uint length)
     end--;
   uint a_length = (uint) (end - ptr);
 
-  if (binary())
-  {
-    int cmp= memcmp(ptr,b,min(a_length,b_length));
-    return cmp ? cmp : (int) (a_length - b_length);
-  }
   return my_strnncoll(field_charset,
 		     (const uchar*)ptr,a_length,
 		     (const uchar*)b, b_length);
@@ -4231,11 +4221,6 @@ int Field_varstring::pack_cmp(const char *a, const char *b, uint key_length)
     a_length= (uint) (uchar) *a++;
     b_length= (uint) (uchar) *b++;
   }
-  if (binary())
-  {
-    int cmp= memcmp(a,b,min(a_length,b_length));
-    return cmp ? cmp : (int) (a_length - b_length);
-  }
   return my_strnncoll(field_charset,
 		     (const uchar *)a,a_length,
 		     (const uchar *)b,b_length);
@@ -4254,11 +4239,6 @@ int Field_varstring::pack_cmp(const char *b, uint key_length)
   {
     b_length= (uint) (uchar) *b++;
   }
-  if (binary())
-  {
-    int cmp= memcmp(a,b,min(a_length,b_length));
-    return cmp ? cmp : (int) (a_length - b_length);
-  }
   return my_strnncoll(field_charset,
 		     (const uchar *)a,a_length,
 		     (const uchar *)b,b_length);
@@ -4747,11 +4727,6 @@ int Field_blob::pack_cmp(const char *a, const char *b, uint key_length)
     a_length= (uint) (uchar) *a++;
     b_length= (uint) (uchar) *b++;
   }
-  if (binary())
-  {
-    int cmp= memcmp(a,b,min(a_length,b_length));
-    return cmp ? cmp : (int) (a_length - b_length);
-  }
   return my_strnncoll(field_charset,
 		     (const uchar *)a,a_length,
 		     (const uchar *)b,b_length);
@@ -4775,11 +4750,6 @@ int Field_blob::pack_cmp(const char *b, uint key_length)
   {
     b_length= (uint) (uchar) *b++;
   }
-  if (binary())
-  {
-    int cmp= memcmp(a,b,min(a_length,b_length));
-    return cmp ? cmp : (int) (a_length - b_length);
-  }
   return my_strnncoll(field_charset,
 		     (const uchar *)a,a_length,
 		     (const uchar *)b,b_length);
diff --git a/strings/ctype-bin.c b/strings/ctype-bin.c
index 0d7729721a..e20afff147 100644
--- a/strings/ctype-bin.c
+++ b/strings/ctype-bin.c
@@ -47,8 +47,8 @@ static int my_strnncoll_binary(CHARSET_INFO * cs __attribute__((unused)),
 				const uchar *s, uint slen,
 				const uchar *t, uint tlen)
 {
-  int len = ( slen > tlen ) ? tlen : slen;
-  return memcmp(s,t,len);
+  int cmp= memcmp(s,t,min(slen,tlen));
+  return cmp ? cmp : (int) (slen - tlen);
 }
 
 static void my_caseup_str_bin(CHARSET_INFO *cs __attribute__((unused)),
-- 
2.30.9