堀本です。 すみません。あの後、須藤さんが修正してくれました。([groonga-dev,04889]) なので、次のMroongaのリリースで、この問題は解決します。 From: 渡部克仁 <watan****@ksw*****> Subject: [groonga-dev,04890] Mroongaバグ報告(9) Date: Thu, 9 Sep 2021 13:12:29 +0900 > 【秘密】関係者外秘 > To:堀本様 > > 渡部@国際ソフトウェアと申します。 > > 早速のご回答ありがとうございます。 > 先延ばしになっている件、承知いたしました。 > > お手数をおかけしますが、よろしくお願いいたします。 > > > On 2021/09/09 12:00, groon****@lists***** wrote: >> groonga-dev >> メーリングリストへの投稿は以下のアドレスに送ってください. >> groon****@lists***** >> Webブラウザを使って入退会するには以下のURLにどうぞ. >> https://lists.osdn.me/mailman/listinfo/groonga-dev >> メールを使う場合,件名(Subject:)または本文に help >> と書いて以下の アドレスに送信してください. >> groon****@lists***** >> メーリングリストの管理者への連絡は,以下のアドレスにお願いします. >> groon****@lists***** >> 返信する場合,件名を書き直して内容がわかるようにしてください. >> そのままだと,以下のようになってしまいます. >> "Re: groonga-dev まとめ読み, XX 巻 XX 号" >> 本日の話題: >> 1. [groonga-dev,04888] Re: Mroongaバグ報告(8) (Horimoto Yasuhiro) >> 2. [groonga-dev,04889] Re: Mroongaバグ報告(8) (Sutou Kouhei) >> ---------------------------------------------------------------------- >> Message: 1 >> Date: Wed, 08 Sep 2021 13:12:15 +0900 (JST) >> From: Horimoto Yasuhiro <horim****@clear*****> >> To: groon****@lists***** >> Subject: [groonga-dev,04888] Re: Mroongaバグ報告(8) >> Message-ID: >> <20210****@clear*****> >> Content-Type: Text/Plain; charset=utf-8 >> 堀本です。 >> 対応する予定ではいるのですが、ここ数ヶ月、手が空かないので >> 先延ばしになっています。すみません。。。 >> もうしばらくお待ちいただければと思います。 >> 以上です。失礼いたします。 >> From: 渡部克仁 <watan****@ksw*****> >> Subject: [groonga-dev,04887] Mroongaバグ報告(8) >> Date: Wed, 8 Sep 2021 09:45:25 +0900 >> >>> 【秘密】関係者外秘 >>> To:堀本様 >>> >>> 渡部@国際ソフトウェアと申します。 >>> >>> 下記バグについて、今後の対応計画などはありますでしょうか。 >>> >>> 2021-07-30にリリースされたMroonga 11.05、 >>> 2021-08-29にリリースされたMroonga 11.06、 >>> 共にリリースノートを拝見しましたが、該当する改良が見当たら >>> なかったため、確認させていただいている次第です。 >>> >>> 以上、よろしくお願いいたします。 >>> >>> >>> On 2021/07/07 12:13, 渡部克仁 wrote: >>>> 【秘密】関係者外秘 >>>> To:堀本様 >>>> 渡部@国際ソフトウェアと申します。 >>>> ご報告ありがとうございます。 >>>> 原因が判明して安堵いたしました。 >>>> ご丁寧に調査いただき感謝申し上げます。 >>>> Mroongaの修正については、引き続きご対応よろしくお願いいたします。 >>>> On 2021/07/07 12:00, groon****@lists***** wrote: >>>>> groonga-dev >>>>> メーリングリストへの投稿は以下のアドレスに送ってください. >>>>> >>>>> groon****@lists***** >>>>> >>>>> Webブラウザを使って入退会するには以下のURLにどうぞ. >>>>> >>>>> https://lists.osdn.me/mailman/listinfo/groonga-dev >>>>> メールを使う場合,件名(Subject:)または本文に help >>>>> と書いて以下の アドレスに送信してください. >>>>> groon****@lists***** >>>>> >>>>> メーリングリストの管理者への連絡は,以下のアドレスにお願いします. >>>>> >>>>> groon****@lists***** >>>>> >>>>> 返信する場合,件名を書き直して内容がわかるようにしてください. >>>>> そのままだと,以下のようになってしまいます. >>>>> "Re: groonga-dev まとめ読み, XX 巻 XX 号" >>>>> >>>>> >>>>> 本日の話題: >>>>> >>>>> 1. [groonga-dev,04876] Re: Mroongaバグ報告(6) (Horimoto Yasuhiro) >>>>> >>>>> >>>>> >>> ---------------------------------------------------------------------- >>>>> >>>>> Message: 1 >>>>> Date: Tue, 06 Jul 2021 16:28:20 +0900 (JST) >>>>> From: Horimoto Yasuhiro <horim****@clear*****> >>>>> To: groon****@lists***** >>>>> Subject: [groonga-dev,04876] Re: Mroongaバグ報告(6) >>>>> Message-ID: >>>>> <20210****@clear*****> >>>>> Content-Type: Text/Plain; charset=utf-8 >>>>> >>>>> 堀本です。 >>>>> >>>>> 原因と対処方法がわかったので、報告いたします。 >>>>> 原因はMroongaのバグでした。 >>>>> >>>>> 以下の提示いただいたクエリーを実行した際 >>>>> MariaDBのオプティマイザーは、IN句内のサブクエリーを実行した結果のテー >>>>> ブルと >>>>> IN句の外側のテーブル(Posts)テーブルをSEMI JOINで結合します。 >>>>> >>>>> SELECT Id, ChannelId, RootId >>>>> FROM Posts p3 >>>>> WHERE Id IN ( >>>>> SELECT * FROM >>>>> (SELECT RootId >>>>> FROM Posts >>>>> WHERE UpdateAt > 1617352409099 AND >>>>> ChannelId = 'i9rsh6im4ffepfpdgm51hjze3a' >>>>> LIMIT 1000) >>>>> temp_tab); >>>>> >>>>> IN句の中のサブクエリーの結果は以下のようになり、 >>>>> 以下の表の値と、Posts.Idの値が同じレコードを抽出します。 >>>>> >>>>> つまり、''(空文字)と"twn3smcaei8wjbqsm8bcmo8qah"と一致する >>>>> Posts.Idを持つレコードを抽出します。 >>>>> >>>>> +----------------------------+ >>>>> | RootId | >>>>> +----------------------------+ >>>>> | | >>>>> | | >>>>> | | >>>>> | | >>>>> | | >>>>> | | >>>>> | twn3smcaei8wjbqsm8bcmo8qah | >>>>> | | >>>>> | | >>>>> | | >>>>> | | >>>>> | | >>>>> | | >>>>> | | >>>>> | | >>>>> | | >>>>> | | >>>>> | | >>>>> | | >>>>> | | >>>>> +----------------------------+ >>>>> 20 rows in set (0.001 sec) >>>>> >>>>> この時、Mroongaを使用していると、''と一致するレコードとして >>>>> 任意のIDを持つレコードを抽出してしまい、意図しないIDのレコードが結果に >>>>> 含まれてしまいます。 >>>>> InnoDBでは、再現しないため、Mroonga特有の問題です。 >>>>> >>>>> Mroongaを修正しますが、さしあたっては以下の対処方法で >>>>> 正しい結果が得られます。 >>>>> >>>>> 今回の問題は、''のような空文字のレコードを持つ表との結合 >>>>> で発生します。したがって、''のようなレコードが含まれないように >>>>> することで現象の発生を防げます。 >>>>> >>>>> RootIdはIdと比較しており、IdはNOT NULL属性なので、RootIdが''なレコード >>>>> は除外しても問題ないと考えます。 >>>>> >>>>> そのため、問題のクエリーのIN句の中のサブクエリーに >>>>> 以下のように、RootId <> ''を追加してRootIdが''なレコードを除外します。 >>>>> このようにすることで、期待する結果が得られます。 >>>>> >>>>> SELECT Id, ChannelId, RootId >>>>> FROM Posts p3 >>>>> WHERE Id IN ( >>>>> SELECT * FROM >>>>> (SELECT RootId >>>>> FROM Posts >>>>> WHERE UpdateAt > 1617352409099 AND >>>>> ChannelId = 'i9rsh6im4ffepfpdgm51hjze3a' AND >>>>> RootId <> '' >>>>> LIMIT 1000) >>>>> temp_tab); >>>>> >>>>> Mroongaの修正が完了しましたら、また改めて連絡します。 >>>>> >>>>> 以上です。失礼いたします。 >>>>> >>> >>> _______________________________________________ >>> groonga-dev mailing list >>> groon****@lists***** >>> https://lists.osdn.me/mailman/listinfo/groonga-dev >> ------------------------------ >> Message: 2 >> Date: Wed, 08 Sep 2021 15:37:32 +0900 (JST) >> From: Sutou Kouhei <kou****@clear*****> >> To: groon****@lists***** >> Subject: [groonga-dev,04889] Re: Mroongaバグ報告(8) >> Message-ID: <20210****@clear*****> >> Content-Type: Text/Plain; charset=utf-8 >> 須藤です。 >> おまたせしました。ようやく直しました。 >> 今月末のリリースにはこの修正が含まれます。 >> In <d5608****@ksw*****> >> "[groonga-dev,04887] Mroongaバグ報告(8)" on Wed, 8 Sep 2021 09:45:25 >> +0900, >> 渡部克仁 <watan****@ksw*****> wrote: >> >>> 【秘密】関係者外秘 >>> To:堀本様 >>> >>> 渡部@国際ソフトウェアと申します。 >>> >>> 下記バグについて、今後の対応計画などはありますでしょうか。 >>> >>> 2021-07-30にリリースされたMroonga 11.05、 >>> 2021-08-29にリリースされたMroonga 11.06、 >>> 共にリリースノートを拝見しましたが、該当する改良が見当たら >>> なかったため、確認させていただいている次第です。 >>> >>> 以上、よろしくお願いいたします。 >>> >>> >>> On 2021/07/07 12:13, 渡部克仁 wrote: >>>> 【秘密】関係者外秘 >>>> To:堀本様 >>>> 渡部@国際ソフトウェアと申します。 >>>> ご報告ありがとうございます。 >>>> 原因が判明して安堵いたしました。 >>>> ご丁寧に調査いただき感謝申し上げます。 >>>> Mroongaの修正については、引き続きご対応よろしくお願いいたします。 >>>> On 2021/07/07 12:00, groon****@lists***** wrote: >>>>> groonga-dev >>>>> メーリングリストへの投稿は以下のアドレスに送ってください. >>>>> >>>>> groon****@lists***** >>>>> >>>>> Webブラウザを使って入退会するには以下のURLにどうぞ. >>>>> >>>>> https://lists.osdn.me/mailman/listinfo/groonga-dev >>>>> メールを使う場合,件名(Subject:)または本文に help >>>>> と書いて以下の アドレスに送信してください. >>>>> groon****@lists***** >>>>> >>>>> メーリングリストの管理者への連絡は,以下のアドレスにお願いします. >>>>> >>>>> groon****@lists***** >>>>> >>>>> 返信する場合,件名を書き直して内容がわかるようにしてください. >>>>> そのままだと,以下のようになってしまいます. >>>>> "Re: groonga-dev まとめ読み, XX 巻 XX 号" >>>>> >>>>> >>>>> 本日の話題: >>>>> >>>>> 1. [groonga-dev,04876] Re: Mroongaバグ報告(6) (Horimoto Yasuhiro) >>>>> >>>>> >>>>> >>> ---------------------------------------------------------------------- >>>>> >>>>> Message: 1 >>>>> Date: Tue, 06 Jul 2021 16:28:20 +0900 (JST) >>>>> From: Horimoto Yasuhiro <horim****@clear*****> >>>>> To: groon****@lists***** >>>>> Subject: [groonga-dev,04876] Re: Mroongaバグ報告(6) >>>>> Message-ID: >>>>> <20210****@clear*****> >>>>> Content-Type: Text/Plain; charset=utf-8 >>>>> >>>>> 堀本です。 >>>>> >>>>> 原因と対処方法がわかったので、報告いたします。 >>>>> 原因はMroongaのバグでした。 >>>>> >>>>> 以下の提示いただいたクエリーを実行した際 >>>>> MariaDBのオプティマイザーは、IN句内のサブクエリーを実行した結果のテー >>>>> ブルと >>>>> IN句の外側のテーブル(Posts)テーブルをSEMI JOINで結合します。 >>>>> >>>>> SELECT Id, ChannelId, RootId >>>>> FROM Posts p3 >>>>> WHERE Id IN ( >>>>> SELECT * FROM >>>>> (SELECT RootId >>>>> FROM Posts >>>>> WHERE UpdateAt > 1617352409099 AND >>>>> ChannelId = 'i9rsh6im4ffepfpdgm51hjze3a' >>>>> LIMIT 1000) >>>>> temp_tab); >>>>> >>>>> IN句の中のサブクエリーの結果は以下のようになり、 >>>>> 以下の表の値と、Posts.Idの値が同じレコードを抽出します。 >>>>> >>>>> つまり、''(空文字)と"twn3smcaei8wjbqsm8bcmo8qah"と一致する >>>>> Posts.Idを持つレコードを抽出します。 >>>>> >>>>> +----------------------------+ >>>>> | RootId | >>>>> +----------------------------+ >>>>> | | >>>>> | | >>>>> | | >>>>> | | >>>>> | | >>>>> | | >>>>> | twn3smcaei8wjbqsm8bcmo8qah | >>>>> | | >>>>> | | >>>>> | | >>>>> | | >>>>> | | >>>>> | | >>>>> | | >>>>> | | >>>>> | | >>>>> | | >>>>> | | >>>>> | | >>>>> | | >>>>> +----------------------------+ >>>>> 20 rows in set (0.001 sec) >>>>> >>>>> この時、Mroongaを使用していると、''と一致するレコードとして >>>>> 任意のIDを持つレコードを抽出してしまい、意図しないIDのレコードが結果に >>>>> 含まれてしまいます。 >>>>> InnoDBでは、再現しないため、Mroonga特有の問題です。 >>>>> >>>>> Mroongaを修正しますが、さしあたっては以下の対処方法で >>>>> 正しい結果が得られます。 >>>>> >>>>> 今回の問題は、''のような空文字のレコードを持つ表との結合 >>>>> で発生します。したがって、''のようなレコードが含まれないように >>>>> することで現象の発生を防げます。 >>>>> >>>>> RootIdはIdと比較しており、IdはNOT NULL属性なので、RootIdが''なレコード >>>>> は除外しても問題ないと考えます。 >>>>> >>>>> そのため、問題のクエリーのIN句の中のサブクエリーに >>>>> 以下のように、RootId <> ''を追加してRootIdが''なレコードを除外します。 >>>>> このようにすることで、期待する結果が得られます。 >>>>> >>>>> SELECT Id, ChannelId, RootId >>>>> FROM Posts p3 >>>>> WHERE Id IN ( >>>>> SELECT * FROM >>>>> (SELECT RootId >>>>> FROM Posts >>>>> WHERE UpdateAt > 1617352409099 AND >>>>> ChannelId = 'i9rsh6im4ffepfpdgm51hjze3a' AND >>>>> RootId <> '' >>>>> LIMIT 1000) >>>>> temp_tab); >>>>> >>>>> Mroongaの修正が完了しましたら、また改めて連絡します。 >>>>> >>>>> 以上です。失礼いたします。 >>>>> >>> >>> _______________________________________________ >>> groonga-dev mailing list >>> groon****@lists***** >>> https://lists.osdn.me/mailman/listinfo/groonga-dev >> ------------------------------ >> Subject: まとめ読みフッタ >> _______________________________________________ >> groonga-dev mailing list >> groon****@lists***** >> https://lists.osdn.me/mailman/listinfo/groonga-dev >> ------------------------------ >> 以上: groonga-dev まとめ読み, 151 巻, 3 号 >> *************************************************** >> > > _______________________________________________ > groonga-dev mailing list > groon****@lists***** > https://lists.osdn.me/mailman/listinfo/groonga-dev