<div dir="ltr"><div>昨日はmroongaバージョン5.02をリリース頂きまして、ありがとうございました。</div><div><br></div><div>度々すみません。</div><div><br></div><div>5.02(*)にアップデートしまして再現手順を試したところ、キーの重複エラーが発生いたしました。</div><div>(*)mysql-community-mroonga.x86_64 5.02-1.el7.centos<br></div><div><br></div><div>お手数をおかけいたしますが、ご確認をお願いできないでしょうか。</div><div><br></div><div>酒匂</div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2015年4月23日 13:05 yuya sako <span dir="ltr"><<a href="mailto:ysgon****@gmail*****" target="_blank">ysgon****@gmail*****</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">森さん、須藤さん<br><div><br></div><div>修正頂きまして、ありがとうございます。</div><div>助かりました。</div><div><br></div><div>酒匂</div></div><div class="gmail_extra"><br><div class="gmail_quote">2015年4月23日 11:55 Kouhei Sutou <span dir="ltr"><<a href="mailto:kou****@clear*****" target="_blank">kou****@clear*****</a>></span>:<div><div class="h5"><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">須藤です。<br>
<br>
ありがとうございます!<br>
エラーが発生しなくなったことを確認しました!<br>
<br>
Mroongaでも問題が解決したことを確認したので、次回のリリース<br>
では修正が含まれます。<br>
<br>
酒匂さん、報告ありがとうございました!<br>
<br>
In <<a href="mailto:CAAQQ%2BNAH88sRekgTUWLRitxY2XzVE%2BTJO****@mail*****" target="_blank">CAAQQ****@mail*****</a>><br>
"[groonga-dev,03185] Re: mroongaで同一レコードの登録、削除、登録を行うとユニークキー重複エラー発生" on Wed, 22 Apr 2015 18:51:17 +0900,<br>
<div><div> <a href="mailto:morit****@razil*****" target="_blank">morit****@razil*****</a> wrote:<br>
<br>
> 遅くなりました!<br>
> grn_pat_del()のバグを直してみたのですが、どうでしょうか。。<br>
><br>
> 2015-04-21 8:05 GMT+09:00 <<a href="mailto:morit****@razil*****" target="_blank">morit****@razil*****</a>>:<br>
><br>
>> 確認します!<br>
>><br>
>> 2015-04-20 23:00 GMT+09:00 Kouhei Sutou <<a href="mailto:kou****@clear*****" target="_blank">kou****@clear*****</a>>:<br>
>><br>
>>> 須藤です。<br>
>>><br>
>>> 報告ありがとうございます。<br>
>>><br>
>>> これは、Groongaのパトリシアトライの実装のバグっぽいですね。。。<br>
>>><br>
>>> 森さん、masterにこのケースのテストを追加しておいたので確認し<br>
>>> てもらえませんか?<br>
>>><br>
>>> <a href="https://github.com/groonga/groonga/blob/master/test/command/suite/tables/patricia_trie/delete.expected" target="_blank">https://github.com/groonga/groonga/blob/master/test/command/suite/tables/patricia_trie/delete.expected</a><br>
>>><br>
>>> ↓を実行すると_grn_pat_del()で<br>
>>><br>
>>> % test/command/run-test.sh<br>
>>> test/command/suite/tables/patricia_trie/delete.test<br>
>>><br>
>>> ↓というエラーがでるようになります。<br>
>>><br>
>>> no delinfo found 3<br>
>>><br>
>>> これ、"3"というキーを_grn_pat_add()するときが問題な気がする<br>
>>> んですよねぇ。<br>
>>><br>
>>> 個人的には↓かなぁと思うんですが、pat_nodeがterminatedなのっ<br>
>>> てこういう状況のときのことをいうのかよくわかっていません。<br>
>>><br>
>>> diff --git a/lib/pat.c b/lib/pat.c<br>
>>> index c5dacc0..afa8957 100644<br>
>>> --- a/lib/pat.c<br>
>>> +++ b/lib/pat.c<br>
>>> @@ -667,6 +667,9 @@ _grn_pat_add(grn_ctx *ctx, grn_pat *pat, const<br>
>>> uint8_t *key, uint32_t size, uint<br>
>>> for (c = 0, d = key; min && *s == *d; c += 16, s++, d++, min--);<br>
>>> if (min) {<br>
>>> for (xor = *s ^ *d, mask = 0x80; !(xor & mask); mask >>= 1, c +=<br>
>>> 2);<br>
>>> + if (min == 1 && mask == (0x80 >> 7)) {<br>
>>> + c++;<br>
>>> + }<br>
>>> } else {<br>
>>> c--;<br>
>>> }<br>
>>><br>
>>><br>
>>> In <<a href="mailto:CAPYqM6xAq0w2%2BQJzovOboQ9O8cu6zTdvkF%2BEmn****@mail*****" target="_blank">CAPYq****@mail*****</a>><br>
>>> "[groonga-dev,03177] mroongaで同一レコードの登録、削除、登録を行うとユニークキー重複エラー発生" on Mon,<br>
>>> 20 Apr 2015 11:57:15 +0900,<br>
>>> yuya sako <<a href="mailto:ysgon****@gmail*****" target="_blank">ysgon****@gmail*****</a>> wrote:<br>
>>><br>
>>> > ※先日、当MLに投稿いたしましたが、過去ログを確認しましたところ、<br>
>>> > 4/19時点で投稿内容が残ってりませんでした為、念のため再投稿させていた<br>
>>> > だきます。<br>
>>> ><br>
>>> > mroongaを使い始めた者なのですが、下記事象が発生いたしました。<br>
>>> > 使い方に問題があるものなのかどうか等、ご教示頂けますと助かります。<br>
>>> ><br>
>>> > お手数をおかけいたしますが、よろしくお願いいたします。<br>
>>> ><br>
>>> > [事象]<br>
>>> > 複数レコードをINSERT<br>
>>> > ↓<br>
>>> > INSERTしたレコードを全てDELETE<br>
>>> > ↓<br>
>>> > 再度同じレコードをINSERT<br>
>>> ><br>
>>> > を行うと、そのうち1件で下記エラーが発生いたします。<br>
>>> ><br>
>>> > ERROR 1062 (23000): Duplicate entry 'カラムの値' for key 'uid'<br>
>>> ><br>
>>> > ※再現手順を下記に記載いたしました。<br>
>>> ><br>
>>> > [使用環境]<br>
>>> > # uname -a<br>
>>> > Linux localhost1.local 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42<br>
>>> > UTC 2015 x86_64 x86_64 x86_64 GNU/Linux<br>
>>> ><br>
>>> > # mysql --version<br>
>>> > mysql Ver 14.14 Distrib 5.6.23, for Linux (x86_64) using EditLine<br>
>>> > wrapper<br>
>>> ><br>
>>> > mysql> show variables like '%mroonga%';<br>
>>> > +----------------------------------------+---------------+<br>
>>> > | Variable_name | Value |<br>
>>> > +----------------------------------------+---------------+<br>
>>> > | mroonga_action_on_fulltext_query_error | ERROR_AND_LOG |<br>
>>> > | mroonga_boolean_mode_syntax_flags | DEFAULT |<br>
>>> > | mroonga_database_path_prefix | |<br>
>>> > | mroonga_default_parser | TokenBigram |<br>
>>> > | mroonga_default_wrapper_engine | |<br>
>>> > | mroonga_dry_write | OFF |<br>
>>> > | mroonga_enable_optimization | ON |<br>
>>> > | mroonga_libgroonga_support_lz4 | OFF |<br>
>>> > | mroonga_libgroonga_support_zlib | ON |<br>
>>> > | mroonga_libgroonga_version | 5.0.2 |<br>
>>> > | mroonga_lock_timeout | 10000000 |<br>
>>> > | mroonga_log_file | groonga.log |<br>
>>> > | mroonga_log_level | NOTICE |<br>
>>> > | mroonga_match_escalation_threshold | 0 |<br>
>>> > | mroonga_vector_column_delimiter | |<br>
>>> > | mroonga_version | 5.01 |<br>
>>> > +----------------------------------------+---------------+<br>
>>> ><br>
>>> > [再現手順]<br>
>>> > (1)テーブルの作成<br>
>>> ><br>
>>> > CREATE TABLE `uk_test` (<br>
>>> > id int(10) unsigned not null,<br>
>>> > uid varchar(150) not null,<br>
>>> > data text not null,<br>
>>> > primary key (id),<br>
>>> > unique key uid (uid)<br>
>>> > ) ENGINE=mroonga DEFAULT CHARSET=utf8;<br>
>>> ><br>
>>> > (2)データをINSERT<br>
>>> > INSERT INTO uk_test (id,uid, data) VALUES (1,'uid2','');<br>
>>> > INSERT INTO uk_test (id,uid, data) VALUES (2,'uid1','');<br>
>>> > INSERT INTO uk_test (id,uid, data) VALUES (3,'uid3','');<br>
>>> > INSERT INTO uk_test (id,uid, data) VALUES (4,'uid4','');<br>
>>> ><br>
>>> > (3)データをDELETE<br>
>>> > DELETE FROM uk_test WHERE `id`='1';<br>
>>> > DELETE FROM uk_test WHERE `id`='2';<br>
>>> > DELETE FROM uk_test WHERE `id`='3';<br>
>>> > DELETE FROM uk_test WHERE `id`='4';<br>
>>> ><br>
>>> > (4)上記(2)と同じデータをINSERT<br>
>>> > INSERT INTO uk_test (id,uid, data) VALUES (1,'uid2','');<br>
>>> > INSERT INTO uk_test (id,uid, data) VALUES (2,'uid1','');<br>
>>> > INSERT INTO uk_test (id,uid, data) VALUES (3,'uid3','');<br>
>>> > INSERT INTO uk_test (id,uid, data) VALUES (4,'uid4','');<br>
>>> ><br>
>>> > [補足-1]<br>
>>> > 上記(2)、(4)で実行するINSER文を下記にしますと、事象が再現しなくなりま<br>
>>> > す。<br>
>>> > INSERT INTO uk_test (id,uid, data) VALUES (1,'uid1','');<br>
>>> > INSERT INTO uk_test (id,uid, data) VALUES (2,'uid2','');<br>
>>> > INSERT INTO uk_test (id,uid, data) VALUES (3,'uid3','');<br>
>>> > INSERT INTO uk_test (id,uid, data) VALUES (4,'uid4','');<br>
>>> ><br>
>>> > [補足-2]<br>
>>> > 上記(2)、(4)で実行するINSER文は下記3件でも、事象が再現いたします。<br>
>>> > INSERT INTO uk_test (id,uid, data) VALUES (1,'uid2','');<br>
>>> > INSERT INTO uk_test (id,uid, data) VALUES (2,'uid1','');<br>
>>> > INSERT INTO uk_test (id,uid, data) VALUES (3,'uid3','');<br>
>>> ><br>
>>> > 以上よろしくお願いいたします。<br>
>>> ><br>
>>> > -------------------------------------------------<br>
>>> > 酒匂祐也<br>
>>> > <a href="mailto:ysgon****@gmail*****" target="_blank">ysgon****@gmail*****</a><br>
>>><br>
>>> _______________________________________________<br>
>>> groonga-dev mailing list<br>
>>> <a href="mailto:groon****@lists*****" target="_blank">groon****@lists*****</a><br>
>>> <a href="http://lists.sourceforge.jp/mailman/listinfo/groonga-dev" target="_blank">http://lists.sourceforge.jp/mailman/listinfo/groonga-dev</a><br>
>>><br>
>><br>
>><br>
<br>
_______________________________________________<br>
groonga-dev mailing list<br>
<a href="mailto:groon****@lists*****" target="_blank">groon****@lists*****</a><br>
<a href="http://lists.sourceforge.jp/mailman/listinfo/groonga-dev" target="_blank">http://lists.sourceforge.jp/mailman/listinfo/groonga-dev</a><br>
</div></div></blockquote></div></div></div><br></div>
</blockquote></div><br></div>