[groonga-dev,03885] Re: PGRNファイルが開けない?

Back to archive index

Kouhei Sutou kou****@clear*****
2016年 1月 31日 (日) 16:09:54 JST


須藤です。

In <20160****@orega*****>
  "[groonga-dev,03880] Re: PGRNファイルが開けない?" on Fri, 29 Jan 2016 10:40:29 +0900,
  高見 直輝 <takam****@orega*****> wrote:

>> Sourcesのあとの「37356」がインデックスのID(PostgreSQLの中で
>> はOIDと呼ばれているもの)なんですが、PGroongaはVACUUMのとき
>> に「37356」が有効かどうかをチェックして無効ならその
>> SourcesXXXと関連する(Groongaの)テーブル・カラムを削除して
>> います。
>> 
>> 有効かどうかのチェック方法は、たぶん、SQLでいうと
>> 
>>   SELECT * FROM pg_class WHERE oid = 37356;
>> 
>> に相当します。問題のデータベースで↑の結果がどうなるか教えて
>> もらえませんか?
>> 
>> 
>> レコードが存在しないなら想定外なんですが、たぶん、存在するん
>> ですよ。とすると、なんで無効扱いになっているかなんですけど、
>> なんでだろう。デバッガーで追えればすぐにわかりそうですが。。。
> 
> 残念ながら、レコードが存在しませんでした。

え、あ、そうなんですか。

> 1.0.0にデバッグログ出力を追加したモジュールなどを作成してもらえれば、差
> し替えて調査することは可能です。
> よろしければ御検討下さい。

これはPGroongaレベルでどうこうの話ではなく、PostgreSQLレベル
でどうこうの話なんです。(PostgreSQLがインデックスをどうやっ
て管理しているか。)

インデックスは存在しているがpg_classには該当インデックスの
OIDが存在しない、という状況がどういうときに発生するかがわか
ればいいんですが、どのようなSQLを実行しているかがわからない
とこちらで再現できないので調べられないんです。

なにか操作するたびにpg_classをチェックして、どんな操作をすれ
ば「インデックスは存在しているがpg_classには該当インデックス
のOIDが存在しない」という状況になるか絞り込んでもらうことは
できますか?

たぶん、REINDEXしたときはpg_classに存在していると思うんです
よ。PGroongaにそのOIDのインデックスを作ってくれ、という指示
が飛んでいるので。なので、それ以降のそうさのどこかでpg_class
から消えるんだと思うんです。


-- 
須藤 功平 <kou****@clear*****>
株式会社クリアコード <http://www.clear-code.com/>

Groongaベースの全文検索システムを総合サポート:
  http://groonga.org/ja/support/
パッチ採用 - プログラミングが楽しい人向けの採用プロセス:
  http://www.clear-code.com/recruitment/
リーダブルコードワークショップ:
  http://www.clear-code.com/services/code-reader/readable-code-workshop.html




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