Jun Nishikawa
topaz****@m0n0m*****
2012年 6月 3日 (日) 13:59:39 JST
お世話になっております。西川です。 mroonga 導入の為検証をしているのですが、 特定の条件で select count(*) の値が必ずずれます。 この現象は下記チケットが close すれば治るという理解でよろしいでしょうか? http://redmine.groonga.org/issues/1318 環境は以下の通りです。 $ facter lsbdistdescription Ubuntu 12.04 LTS $ aptitude show mysql-server-mroonga mysql-server | grep Version Version: 2.03-1 Version: 5.5.22-0ubuntu1 以下、再現手順です。 ターミナルを2つ用意。 =========== terminal 1 start ============= mysql> CREATE TABLE `test` ( -> `id` int(11) NOT NULL, -> `culture` varchar(7) COLLATE utf8_unicode_ci NOT NULL, -> `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, -> `description` text COLLATE utf8_unicode_ci, -> `tags` text COLLATE utf8_unicode_ci, -> PRIMARY KEY (`id`,`culture`) USING BTREE, -> FULLTEXT KEY `name_description` (`name`,`description`), -> FULLTEXT KEY `tags` (`tags`) -> ) ENGINE=mroonga DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='engine "innodb"'; Query OK, 0 rows affected, 2 warnings (0.11 sec) mysql> insert into test values (1, 'ja', 'ワンピース', '1巻', 'ワンピース'); Query OK, 1 row affected (0.01 sec) mysql> insert into test values (1, 'en', 'One Piece', 'Volume 1', 'Manga'); Query OK, 1 row affected (0.01 sec) =========== terminal 1 end ============= =========== terminal 2 start ============= mysql> start transaction; Query OK, 0 rows affected (0.00 sec) mysql> insert into test values (2, 'ja', 'ワンピース', '2巻', 'ワンピース'); Query OK, 1 row affected (0.00 sec) =========== terminal 2 end ============= =========== terminal 1 start ============= mysql> select count(*) from test WHERE culture='ja' AND MATCH (test.TAGS) AGAINST ('+ワンピース' IN BOOLEAN MODE) AND MATCH (test.NAME, test.DESCRIPTION) AGAINST ('+ ワンピース' IN BOOLEAN MODE); +----------+ | count(*) | +----------+ | 1 | +----------+ 1 row in set (0.00 sec) =========== terminal 1 end ============= =========== terminal 2 start ============= mysql> commit; Query OK, 0 rows affected (0.00 sec) =========== terminal 2 end ============= =========== terminal 1 start ============= mysql> select count(*) from test WHERE culture='ja' AND MATCH (test.TAGS) AGAINST ('+ワンピース' IN BOOLEAN MODE) AND MATCH (test.NAME, test.DESCRIPTION) AGAINST ('+ワンピース' IN BOOLEAN MODE); +----------+ | count(*) | +----------+ | 1 | +----------+ 1 row in set (0.00 sec) mysql> select * from test; +----+---------+-----------------+-------------+-----------------+ | id | culture | name | description | tags | +----+---------+-----------------+-------------+-----------------+ | 1 | en | One Piece | Volume 1 | Manga | | 1 | ja | ワンピース | 1巻 | ワンピース | | 2 | ja | ワンピース | 2巻 | ワンピース | +----+---------+-----------------+-------------+-----------------+ 3 rows in set (0.00 sec) =========== terminal 1 end ============= よろしくお願いします。 -- --------------------------------------------------------------------- Jun Nishikawa, CEO Monomono Co., Ltd. 西川 潤, CEO 合同会社モノモノ Tel: 090-6155-4271 Mail: topaz****@m0n0m***** Skype: topaz2.3333 Y!J Messenger: submarine_motor Twitter: http://twitter.com/topaz2_3333 Corporate Site: http://m0n0m0n0.com/ ----------------------------------------------------------------------