Bug #69674 | Command-line option '--innodb-ft-aux-table' cannot take an argument | ||
---|---|---|---|
Submitted: | 4 Jul 2013 20:27 | Modified: | 31 Jul 2013 14:06 |
Reporter: | Elena Stepanova | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: InnoDB storage engine | Severity: | S3 (Non-critical) |
Version: | 5.6.12 | OS: | Any |
Assigned to: | CPU Architecture: | Any |
[4 Jul 2013 20:27]
Elena Stepanova
[5 Jul 2013 7:23]
MySQL Verification Team
Hello Elena, Thank you for the bug report and the test case. Verified as described. Thanks, Umesh
[5 Jul 2013 7:25]
MySQL Verification Team
// mysql> use test; mysql> CREATE TABLE `dir_test_innodb` ( -> `id` int(10) unsigned NOT NULL, -> `full_name` varchar(100) DEFAULT NULL, -> `details` text, -> PRIMARY KEY (`id`), -> FULLTEXT KEY `full_name` (`full_name`,`details`) -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Query OK, 0 rows affected (0.26 sec) // Stop/Start server with the command-line option --innodb_ft_aux_table=<string> [root@ushastry mysql-5.6.12-release]# bin/mysqld_safe --defaults-file=my.cnf --innodb_ft_aux_table="test/dir_test_innodb" --user=mysql & [root@ushastry mysql-5.6.12-release]# bin/mysqld_safe --defaults-file=my.cnf --innodb_ft_aux_table='test/dir_test_innodb' --user=mysql & [root@ushastry mysql-5.6.12-release]# bin/mysqld_safe --defaults-file=my.cnf --innodb_ft_aux_table=test/dir_test_innodb --user=mysql & But the end result is same as below 2013-07-05 12:49:07 11669 [ERROR] /home/ushastry/mybuilds/mysql-5.6.12-release/bin/mysqld: option '--innodb-ft-aux-table' cannot take an argument 2013-07-05 12:49:07 11669 [ERROR] Parsing options for plugin 'InnoDB' failed. // Starting the server without it and setting it at runtime works all right: mysql> select version(); +------------------+ | version() | +------------------+ | 5.6.12-debug-log | +------------------+ 1 row in set (0.00 sec) mysql> set global innodb_ft_aux_table='test/dir_test_innodb'; Query OK, 0 rows affected (0.00 sec) mysql> mysql> show variables like 'INNODB_FT_AUX_TABLE'; +---------------------+----------------------+ | Variable_name | Value | +---------------------+----------------------+ | innodb_ft_aux_table | test/dir_test_innodb | +---------------------+----------------------+ 1 row in set (0.00 sec)
[24 Jul 2013 7:53]
Shaohua Wang
Not a bug. innodb_ft_aux_table is set internally to take no argument and It is mainly for diagnostic purpose. mysql> CREATE TABLE articles ( -> id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, -> title VARCHAR(200), -> body TEXT, -> FULLTEXT (title,body) -> ) ENGINE=InnoDB; Query OK, 0 rows affected (0.12 sec) mysql> INSERT INTO articles (title,body) VALUES -> ('MySQL Tutorial','DBMS stands for DataBase ...') , -> ('How To Use MySQL Well','After you went through a ...'); Query OK, 2 rows affected (0.01 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> set global innodb_ft_aux_table="test/articles"; Query OK, 0 rows affected (0.00 sec) mysql> select * from information_schema.INNODB_FT_INDEX_TABLE; Empty set (0.00 sec) mysql> select * from information_schema.INNODB_FT_INDEX_CACHE; +----------+--------------+-------------+-----------+--------+----------+ | WORD | FIRST_DOC_ID | LAST_DOC_ID | DOC_COUNT | DOC_ID | POSITION | +----------+--------------+-------------+-----------+--------+----------+ | after | 2 | 2 | 1 | 2 | 22 | | database | 1 | 1 | 1 | 1 | 31 | | dbms | 1 | 1 | 1 | 1 | 15 | | mysql | 1 | 2 | 2 | 1 | 0 | | mysql | 1 | 2 | 2 | 2 | 11 | | stands | 1 | 1 | 1 | 1 | 20 | | through | 2 | 2 | 1 | 2 | 37 | | tutorial | 1 | 1 | 1 | 1 | 6 | | use | 2 | 2 | 1 | 2 | 7 | | well | 2 | 2 | 1 | 2 | 17 | | went | 2 | 2 | 1 | 2 | 32 | | you | 2 | 2 | 1 | 2 | 28 | +----------+--------------+-------------+-----------+--------+----------+ 12 rows in set (0.04 sec)
[24 Jul 2013 8:14]
MySQL Verification Team
In that case, manual should indicate it clearly to avoid any confusion.. http://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html#sysvar_innodb_ft_aux_table
[26 Jul 2013 21:39]
Elena Stepanova
I'm confused. If it's not a bug (I assume Shaohua Wang speaks on behalf of the InnoDB team), why does it stay 'Verified' and not closed? At the same time, how can it be not a bug if the documentation clearly states that the option must take an argument, and it doesn't? If nothing else, it's a documentation bug, although it's seriously weird for an option which by nature requires an argument to be "set internally to take no argument" -- why?! What kind of "diagnostic purpose" can be behind this hidden logic? If the option is debug-only, make it such; if the option on whatever reason is runtime-only, make it such... But why make it take no argument while still keeping it a command-line option?.. Anyway, could somebody please clarify the status of this report? Thanks.
[27 Jul 2013 4:53]
MySQL Verification Team
Hi Elena, Internal bug has been already classified as doc bug, and once the documentation is fixed, doc team would mark this as closed. Thanks, Umesh
[29 Jul 2013 19:23]
Paul DuBois
Sorry, but this IS a bug, and the documentation cannot be fixed properly until the server is fixed. I take it from the InnoDB team that you can set this system variable only at runtime, and not at server startup? If that's true, there is still a problem: mysqld --verbose --help displays it as something that CAN be set at server startup, but with confusing syntax: --innodb-ft-aux-table FTS internal auxiliary table to be checked That indicates that you use this without an argument. There is no '=#' following the name like there is, for example, here: --innodb-force-recovery-crash=# Kills the server during crash recovery. But the syntax shown (no argument) is inconsistent with the description, which indicates that you name a table to be checked. There are a couple of ways around this problem: 1) Make the system variable settable to a table name at startup. (Change PLUGIN_VAR_NOCMDARG to the appropriate value that accepts an argument of whatever type the variable is (string?). or 2) Change PLUGIN_VAR_NOCMDARG to whatever value causes this variable not to be settable at server startup and not displayed in the --help message.
[31 Jul 2013 14:06]
Bugs System
The variable description has been revised. The revised information will appear soon, in the next published documentation build. http://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html#sysvar_innodb_ft_aux_table http://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_ft_aux_table Thank you for the bug report.
[6 Dec 2018 15:27]
Daniel Price
Posted by developer: innodb_ft_aux_table does not take an argument at startup. #define PLUGIN_VAR_NOCMDARG 0x1000 /* No argument for cmd line */ 8.0: static MYSQL_SYSVAR_STR(ft_aux_table, fts_internal_tbl_name2, PLUGIN_VAR_NOCMDARG, "FTS internal auxiliary table to be checked", innodb_internal_table_validate, innodb_internal_table_update, NULL); 5.7: static MYSQL_SYSVAR_STR(ft_aux_table, fts_internal_tbl_name2, PLUGIN_VAR_NOCMDARG, "FTS internal auxiliary table to be checked", innodb_internal_table_validate, innodb_internal_table_update, NULL); 5.6 static MYSQL_SYSVAR_STR(ft_aux_table, fts_internal_tbl_name2, PLUGIN_VAR_NOCMDARG, "FTS internal auxiliary table to be checked", innodb_internal_table_validate, innodb_internal_table_update, NULL); It can only be configured at run time using a SET statement. The documentation has been updated accordingly.