Bug #73859 | MySql innodb_ft_max_token_size is not changing | ||
---|---|---|---|
Submitted: | 9 Sep 2014 13:01 | Modified: | 27 Nov 2015 22:37 |
Reporter: | Vikram Gharge | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: FULLTEXT search | Severity: | S1 (Critical) |
Version: | 5.6.15, 5.6, 5.7, 5.6.27 | OS: | Any |
Assigned to: | CPU Architecture: | Any | |
Tags: | regression |
[9 Sep 2014 13:01]
Vikram Gharge
[10 Sep 2014 12:33]
MySQL Verification Team
Hello Vikram, Thank you for the report. # 5.6.22/5.7.6 // As per manual Introduced 5.6.4 Command-Line Format --innodb_ft_max_token_size=# Option-File Format innodb_ft_max_token_size System Variable Name innodb_ft_max_token_size Variable Scope Global Dynamic Variable No Permitted Values Type numeric Default 84 Min Value 10 Max Value 252 // Pass value at the commandline [root@cluster-repo mysql-advanced-5.7.6]# bin/mysql_install_db --basedir=/data/ushastry/server/mysql-advanced-5.7.6 --datadir=/tmp/576 [root@cluster-repo mysql-advanced-5.7.6]# bin/mysqld --basedir=/data/ushastry/server/mysql-advanced-5.7.6 --datadir=/tmp/576 --innodb_ft_max_token_size=100 --user=root & [1] 28475 [root@cluster-repo mysql-advanced-5.7.6]# 2014-09-12T02:31:29.334163Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2014-09-12T02:31:29.334396Z 0 [Note] bin/mysqld (mysqld 5.7.6-m16-enterprise-commercial-advanced) starting as process 28475 ... 2014-09-12T02:31:29.340620Z 0 [Warning] option 'innodb-ft-max-token-size': unsigned value 100 adjusted to 84 ^^ Adjusted to 84 mysql> show variables like 'innodb_ft_max_token_size'; +--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | innodb_ft_max_token_size | 84 | +--------------------------+-------+ 1 row in set (0.00 sec) mysql> show variables like '%version%'; +-------------------------+---------------------------------------------------------+ | Variable_name | Value | +-------------------------+---------------------------------------------------------+ | innodb_version | 5.7.6 | | protocol_version | 10 | | slave_type_conversions | | | version | 5.7.6-m16-enterprise-commercial-advanced | | version_comment | MySQL Enterprise Server - Advanced Edition (Commercial) | | version_compile_machine | x86_64 | | version_compile_os | Linux | +-------------------------+---------------------------------------------------------+ 7 rows in set (0.00 sec) Thanks, Umesh
[10 Sep 2014 12:34]
MySQL Verification Team
Looking at the src: // 5.6.20 /home/ushastry/bzr/mysql/server/mysql-5.6/storage/innobase/include/fts0fts.h: 368 369 /** Maximum possible Fulltext word length (in characters) */ 370 #define FTS_MAX_WORD_LEN_IN_CHAR HA_FT_MAXCHARLEN /home/ushastry/bzr/mysql/server/mysql-5.6/include/ft_global.h: 27 28 #define HA_FT_MAXBYTELEN 254 29 #define HA_FT_MAXCHARLEN (HA_FT_MAXBYTELEN/3) /home/ushastry/bzr/mysql/server/mysql-5.6/storage/innobase/handler/ha_innodb.cc: 16067 NULL, NULL, 3, 0, 16, 0); 16068 16069 static MYSQL_SYSVAR_ULONG(ft_max_token_size, fts_max_token_size, 16070 PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, 16071 "InnoDB Fulltext search maximum token size in characters", So, may be doc need correction?
[11 Sep 2014 5:49]
Vikram Gharge
Hi Umesh, My local version is 5.6.10 and here I able to change the size of innodb_ft_max_token_size upto 252, but when I tried the same in version 5.6.15 on my production server its not get changing. If I try to change this variable value as 80 then its getting changed in production server mysql version 5.6.15 (means below of 84), but when I tried to set the value as 100 or more than 84 then its not getting changed and bydefault value get reset to 84.
[12 Sep 2014 7:56]
Vikram Gharge
Hi Umesh, Thanks for the reply sent on [10 Sep 12:33] As per comments given by you on [10 Sep 12:33], Do I understand correctly that as per the code and configurations, the maximum value of this parameter can be 84 only and it is the documentation that is wrong in saying that it can be upto 252. Is there any way to change this maximum value by say making a change in the files(fts0fts.h,ft_global.h) you have mentioned to increase it beyond 84? Would that need us to recompile the entire codebase or is it just a change in those configuration files that is picked up at runtime. Also since we are able to change this parameter to more than 84 in 5.6.10, can you tell us in which version this change happened. Thank you so much for all your help.
[16 Sep 2014 7:41]
MySQL Verification Team
Bug #73924 is marked as duplicate of this one.
[9 Apr 2015 10:20]
Vikram Gharge
Dear Team, Sorry to remind you again. Just I want to know about this bug status so is this bug is resolved yet? Thanks and Regards, Vikram Gharge
[27 Nov 2015 9:43]
Shaohua Wang
Posted by developer: the max value of INNODB_FT_MAX_TOKEN_SIZE was changed to 84 in 5.6.14. See http://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-14.html#mysqld-5-6-14-bug Full-text search on InnoDB tables failed on searches for words containing apostrophes when using boolean operators. (Bug #69932, Bug #17276125) 84 means max word size, the byte size can be up to 252. So we need to change our document: http://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html#sysvar_innodb_ft_max_token_s... Change MAX VALUE from 252 to 84.
[27 Nov 2015 22:37]
Daniel Price
The documentation was updated to reflect a innodb_ft_max_token_size value of 84 characters. http://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html#sysvar_innodb_ft_max_token_s...