[groonga-dev,00916] select count(*) で正しい件数がとれない

Back to archive index

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




groonga-dev メーリングリストの案内
Back to archive index