diff --git a/mysql-test/r/order_by.result b/mysql-test/r/order_by.result
index b3bc4a18a40422112459571a6b13ceb3e1e512ec..69ce69ad49962bc2ae47d311c8f74b54d4af25bd 100644
--- a/mysql-test/r/order_by.result
+++ b/mysql-test/r/order_by.result
@@ -723,3 +723,16 @@ col2	col	col
 2	2	2
 1	3	3
 drop table t1, t2;
+create table t1 (a char(25));
+insert into t1 set a = repeat('x', 20);
+insert into t1 set a = concat(repeat('x', 19), 'z');
+insert into t1 set a = concat(repeat('x', 19), 'ab');
+insert into t1 set a = concat(repeat('x', 19), 'aa');
+set max_sort_length=20;
+select a from t1 order by a;
+a
+xxxxxxxxxxxxxxxxxxxab
+xxxxxxxxxxxxxxxxxxxaa
+xxxxxxxxxxxxxxxxxxxx
+xxxxxxxxxxxxxxxxxxxz
+drop table t1;
diff --git a/mysql-test/t/order_by.test b/mysql-test/t/order_by.test
index 5131bb8c8b887c16a0771243a5915abf36ec498d..1d65ce9003ace028664467ca0d978d34044291c9 100644
--- a/mysql-test/t/order_by.test
+++ b/mysql-test/t/order_by.test
@@ -486,3 +486,16 @@ select t2.col2 as col, t2.col from t2 order by t2.col;
 select t2.col2, t2.col, t2.col from t2 order by t2.col;
 
 drop table t1, t2;
+
+#
+# Bug #5428: a problem with small max_sort_length value
+#
+
+create table t1 (a char(25));
+insert into t1 set a = repeat('x', 20);
+insert into t1 set a = concat(repeat('x', 19), 'z');
+insert into t1 set a = concat(repeat('x', 19), 'ab');
+insert into t1 set a = concat(repeat('x', 19), 'aa');
+set max_sort_length=20;
+select a from t1 order by a;
+drop table t1;