Bug #75451 | Cannot use a table containing special chars for InnoDB stopwords | ||
---|---|---|---|
Submitted: | 8 Jan 2015 17:58 | Modified: | 9 Jan 2015 6:31 |
Reporter: | Federico Razzoli | Email Updates: | |
Status: | Verified | Impact on me: | |
Category: | MySQL Server: InnoDB storage engine | Severity: | S3 (Non-critical) |
Version: | 5.6, 5.6.24, 5.7.6 | OS: | Any |
Assigned to: | CPU Architecture: | Any | |
Tags: | fulltext |
[8 Jan 2015 17:58]
Federico Razzoli
[9 Jan 2015 6:31]
MySQL Verification Team
Hello Federico Razzoli, Thank you for the report. Thanks, Umesh
[9 Jan 2015 6:31]
MySQL Verification Team
// 5.6.24 mysql> show variables like '%version%'; +-------------------------+---------------------------------------------------------+ | Variable_name | Value | +-------------------------+---------------------------------------------------------+ | innodb_version | 5.6.24 | | protocol_version | 10 | | slave_type_conversions | | | version | 5.6.24-enterprise-commercial-advanced | | version_comment | MySQL Enterprise Server - Advanced Edition (Commercial) | | version_compile_machine | x86_64 | | version_compile_os | linux-glibc2.5 | +-------------------------+---------------------------------------------------------+ 7 rows in set (0.00 sec) mysql> use test Database changed mysql> CREATE TABLE `stop_it-IT` ENGINE = InnoDB -> SELECT * FROM information_schema.INNODB_FT_DEFAULT_STOPWORD; Query OK, 36 rows affected (0.01 sec) Records: 36 Duplicates: 0 Warnings: 0 mysql> SET @@global.innodb_ft_server_stopword_table = 'test/stop_it-IT'; ERROR 1231 (42000): Variable 'innodb_ft_server_stopword_table' can't be set to the value of 'test/stop_it-IT' mysql> mysql> SET @@global.innodb_ft_server_stopword_table = `test/stop_it-IT`; ERROR 1231 (42000): Variable 'innodb_ft_server_stopword_table' can't be set to the value of 'test/stop_it-IT' mysql> mysql> SET @@global.innodb_ft_server_stopword_table = 'test/A'; ERROR 1231 (42000): Variable 'innodb_ft_server_stopword_table' can't be set to the value of 'test/A' mysql> show errors; +-------+------+----------------------------------------------------------------------------------+ | Level | Code | Message | +-------+------+----------------------------------------------------------------------------------+ | Error | 1231 | Variable 'innodb_ft_server_stopword_table' can't be set to the value of 'test/A' | +-------+------+----------------------------------------------------------------------------------+ 1 row in set (0.00 sec) ^^ Table doesn't exists but same error returns // Works without special chars mysql> CREATE TABLE stop_it ENGINE = InnoDB -> SELECT * FROM information_schema.INNODB_FT_DEFAULT_STOPWORD; Query OK, 36 rows affected (0.01 sec) Records: 36 Duplicates: 0 Warnings: 0 mysql> SET @@global.innodb_ft_server_stopword_table = 'test/stop_it'; Query OK, 0 rows affected (0.00 sec) mysql> show tables; +----------------+ | Tables_in_test | +----------------+ | stop_it | | stop_it-IT | +----------------+ 2 rows in set (0.00 sec)
[9 Jan 2015 6:32]
MySQL Verification Team
// 5.7.6 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) mysql> CREATE TABLE `stop_it-IT` ENGINE = InnoDB -> SELECT * FROM information_schema.INNODB_FT_DEFAULT_STOPWORD; Query OK, 36 rows affected (0.00 sec) Records: 36 Duplicates: 0 Warnings: 0 mysql> SET @@global.innodb_ft_server_stopword_table = 'test/stop_it-IT'; ERROR 1231 (42000): Variable 'innodb_ft_server_stopword_table' can't be set to the value of 'test/stop_it-IT' mysql> mysql> CREATE TABLE stop_it ENGINE = InnoDB -> SELECT * FROM information_schema.INNODB_FT_DEFAULT_STOPWORD; Query OK, 36 rows affected (0.00 sec) Records: 36 Duplicates: 0 Warnings: 0 mysql> SET @@global.innodb_ft_server_stopword_table = 'test/stop_it'; Query OK, 0 rows affected (0.00 sec) mysql>
[18 Feb 2015 11:11]
Jan Lindstrom
Possible fix candidate that allows real table name be used instead of technical path name. This patch is public domain.
Attachment: fix.diff (text/x-patch), 1.64 KiB.