From 7f3dfa0d9601dceae04800b12cb681a0c4021062 Mon Sep 17 00:00:00 2001
From: unknown <serg@serg.mylan>
Date: Fri, 29 Oct 2004 14:24:06 +0200
Subject: [PATCH] proper max_records estimation for sort-repair of fulltext
 indexes

mysql-test/t/ctype_utf8.test:
  bad merge fixed
---
 myisam/mi_check.c            | 2 +-
 mysql-test/r/fulltext.result | 3 +++
 mysql-test/t/ctype_utf8.test | 1 +
 mysql-test/t/fulltext.test   | 9 ++++++++-
 4 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/myisam/mi_check.c b/myisam/mi_check.c
index 4da388af1c7..1df518a2712 100644
--- a/myisam/mi_check.c
+++ b/myisam/mi_check.c
@@ -2037,7 +2037,7 @@ int mi_repair_by_sort(MI_CHECK *param, register MI_INFO *info,
       uint ft_max_word_len_for_sort=FT_MAX_WORD_LEN_FOR_SORT*
                                     sort_param.keyinfo->seg->charset->mbmaxlen;
       sort_info.max_records=
-        (ha_rows) (sort_info.filelength/ft_max_word_len_for_sort+1);
+        (ha_rows) (sort_info.filelength/ft_min_word_len+1);
 
       sort_param.key_read=sort_ft_key_read;
       sort_param.key_write=sort_ft_key_write;
diff --git a/mysql-test/r/fulltext.result b/mysql-test/r/fulltext.result
index 30c4c75f3d1..65f88932d54 100644
--- a/mysql-test/r/fulltext.result
+++ b/mysql-test/r/fulltext.result
@@ -330,6 +330,9 @@ t1_id	name	t2_id	t1_id	name
 select * from t2 where match name against ('a* b* c* d* e* f*' in boolean mode);
 t2_id	t1_id	name
 drop table t1,t2;
+create table t1 (a text, fulltext key (a));
+insert into t1 select "xxxx yyyy zzzz";
+drop table t1;
 SET NAMES latin1;
 CREATE TABLE t1 (t text character set utf8 not null, fulltext(t));
 INSERT t1 VALUES ('Mit freundlichem Grüß'), ('aus Osnabrück');
diff --git a/mysql-test/t/ctype_utf8.test b/mysql-test/t/ctype_utf8.test
index 0c8bdd6a94d..c75b1dee63c 100644
--- a/mysql-test/t/ctype_utf8.test
+++ b/mysql-test/t/ctype_utf8.test
@@ -645,6 +645,7 @@ insert into t1 values(1,'foo'),(2,'foobar');
 select * from t1 where b like 'foob%';
 --disable_warnings
 alter table t1 engine=bdb;
+--enable_warnings
 select * from t1 where b like 'foob%';
 drop table t1;
 
diff --git a/mysql-test/t/fulltext.test b/mysql-test/t/fulltext.test
index 66df5b1cb92..5af2575ddc4 100644
--- a/mysql-test/t/fulltext.test
+++ b/mysql-test/t/fulltext.test
@@ -253,9 +253,16 @@ select * from t1 join t2 using(`t1_id`) where match (t1.name, t2.name) against('
 # bug with many short (< ft_min_word_len) words in boolean search
 #
 select * from t2 where match name against ('a* b* c* d* e* f*' in boolean mode);
-
 drop table t1,t2;
 
+#
+# bug with repair-by-sort and incorrect records estimation
+#
+
+create table t1 (a text, fulltext key (a));
+insert into t1 select "xxxx yyyy zzzz";
+drop table t1;
+
 #
 # UTF8
 #
-- 
2.30.9