[groonga-dev,03197] Re: mroongaで同一レコードの登録、削除、登録を行うとユニークキー重複エラー発生

Back to archive index

yuya sako ysgon****@gmail*****
2015年 4月 30日 (木) 10:51:01 JST


昨日はmroongaバージョン5.02をリリース頂きまして、ありがとうございました。

度々すみません。

5.02(*)にアップデートしまして再現手順を試したところ、キーの重複エラーが発生いたしました。
(*)mysql-community-mroonga.x86_64    5.02-1.el7.centos

お手数をおかけいたしますが、ご確認をお願いできないでしょうか。

酒匂



2015年4月23日 13:05 yuya sako <ysgon****@gmail*****>:

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



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