| 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.
