Commit 147be170 authored by unknown's avatar unknown
Browse files

Fixes bug #14902. When analysing a table with FT index that contains stopwords

table statistics is not updated, so the next execution of analyze table will
try to update statistics again.


mysql-test/r/analyze.result:
  Updated result file for bug #14902 test.
mysql-test/t/analyze.test:
  Test for bug #14902.
parent 14637f97
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -402,7 +402,7 @@ int chk_key(MI_CHECK *param, register MI_INFO *info)
      full_text_keys++;
    if (share->state.key_root[key] == HA_OFFSET_ERROR &&
	(info->state->records == 0 || keyinfo->flag & HA_FULLTEXT))
      continue;
      goto do_stat;
    if (!_mi_fetch_keypage(info,keyinfo,share->state.key_root[key],
                           DFLT_INIT_HITS,info->buff,0))
    {
@@ -498,6 +498,7 @@ int chk_key(MI_CHECK *param, register MI_INFO *info)
	     param->max_level);
    all_keydata+=param->keydata; all_totaldata+=param->totaldata; key_totlength+=length;

do_stat:
    if (param->testflag & T_STATISTICS)
      update_key_parts(keyinfo, rec_per_key_part, param->unique_count,
                       param->stats_method == MI_STATS_METHOD_IGNORE_NULLS?
+9 −0
Original line number Diff line number Diff line
@@ -30,3 +30,12 @@ check table t1;
Table	Op	Msg_type	Msg_text
test.t1	check	status	OK
drop table t1;
create table t1 (a mediumtext, fulltext key key1(a)) charset utf8 collate utf8_general_ci engine myisam;
insert into t1 values ('hello');
analyze table t1;
Table	Op	Msg_type	Msg_text
test.t1	analyze	status	OK
analyze table t1;
Table	Op	Msg_type	Msg_text
test.t1	analyze	status	Table is already up to date
drop table t1;
+14 −0
Original line number Diff line number Diff line
@@ -39,4 +39,18 @@ check table t1;

drop table t1;

# Bug #14902 ANALYZE TABLE fails to recognize up-to-date tables
# minimal test case to get an error.
# The problem is happening when analysing table with FT index that
# contains stopwords only. The first execution of analyze table should
# mark index statistics as up to date so that next execution of this
# statement will end up with Table is up to date status.
create table t1 (a mediumtext, fulltext key key1(a)) charset utf8 collate utf8_general_ci engine myisam;
insert into t1 values ('hello');

analyze table t1;
analyze table t1;

drop table t1;

# End of 4.1 tests