[Ludia-users 181] Re: 配列の検索で server process was terminated by signal 11

Back to archive index

kousa****@nttda***** kousa****@nttda*****
2008年 1月 18日 (金) 17:06:34 JST


幸坂です。こんにちは。

ご報告ありがとうございます。

> = ひとつめ =
Ludia1.4.0では、配列の要素にnullが含まれていると、
配列型インデックスが正常に動作しません。 
(次のバージョンではnullにも対応する予定です。)
iname,oname,wordのいずれかに、nullが含まれていませんか?

> = ふたつめ =
ludia.max_n_sort_resultはどうなっていますか?
READMEに記述されているように、ludia.max_n_sort_resultを
-1に設定すると、スコアの取得ができません。

> CREATE TABLE names (id1 text, id2 text, iname text, oname 
テーブル名として使っているnamesはPostgreSQLの予約語なので、
避けた方が良いですね。

> -----Original Message-----
> From: ludia****@lists***** 
> [mailto:ludia****@lists*****] On Behalf 
> Of ASARI Takashi
> Sent: Friday, January 18, 2008 7:14 AM
> To: ludia****@lists*****
> Subject: [Ludia-users 179]配列の検索で server process was 
> terminated by signal 11
> 
> おはようございます。浅利といいます。
> 
> PostgreSQL 8.2.5 + Ludia 1.4.0 で、配列型インデックスを使っています。
> おおむね次のような CREATE 文のテーブルとインデックスを作っています。
> 割とどうでもいいケースですが、望まない挙動がありましたのでご報告します。
> 
> CREATE TABLE names (id1 text, id2 text, iname text, oname 
> text, word text)
> ALTER TABLE names ADD PRIMARY KEY (id1, id2)
> CREATE INDEX fulltxt_idx ON names USING 
> fulltexta((array[iname, oname, word]))
> 
> = ひとつめ =
> 
> このテーブルに対して、次のような SQL 文は正常に実行されます。
> 
> SELECT * FROM names WHERE array[iname, oname, word] @@ ?
> 
> 一方、次のような SQL 文を実行すると、
> 
> SELECT * FROM names WHERE array[oname, iname, word] @@ ?
> 
> 次のようなエラーが出て接続が切れてしまいます。
> 
> server closed the connection unexpectedly
>         This probably means the server terminated abnormally
>         before or while processing the request.
> The connection to the server was lost. Attempting reset: Failed.
> 
> サーバのログには以下のようなログが残されていました。
> 
> DEBUG:  pgsenna2: logger_info_set.
> DEBUG:  pgsenna2: pgs2contain 5094823 -1
> LOG:  server process (PID 28477) was terminated by signal 11
> LOG:  terminating any other active server processes
> 
> ludia.enable_seqscan = off で (おそらく正しく) エラーを返しました。
> 
> ERROR:  pgsenna2: sequencial scan disabled
> 
> 
> = ふたつめ =
> 
> 次の文の ? を適当な名前 ('山田' など) に置き換えたものは正常に結果を返しま
す。
> 
> SELECT
>  pgs2contain(iname, ?),
>  pgs2contain(oname, ?),
>  pgs2contain(word, ?),
>  pgs2getscore(ctid) AS score
> FROM names
> WHERE array[iname, oname, word] @@ ?
> ORDER BY score DESC LIMIT 1
> 
> 一方、次の文は '山田', '中津川', '佐藤' で成功し、 '古川', '菅原' で成功し
ませんでした。
> 上記と同様、エラーが出て接続が切れてしまいます。
> 
> SELECT
>  pgs2contain(oname, ?),
>  pgs2contain(iname, ?),
>  pgs2contain(word, ?),
>  pgs2getscore(ctid) AS score
> FROM names
> WHERE array[iname, oname, word] @@ ?
> ORDER BY score DESC LIMIT 1
> 
> pgs2getscore() を使わないようにすると、エラーはなくなります。
> また、こちらは ludia.enable_seqscan = off は影響しませんでした。
> REINDEX を試してみましたが、依然エラーは出ています。
> ( もしかするとエラーが起こるクエリには変化があったかもしれません。 )
> 
> 
> 以上二点、原因が同じかどうかわかりませんが。それにレアケースと思いますが。
> 何かのお役に立てば幸いです。よろしくお願いいたします。
> 
> --
> ASARI Takashi @ Todai Fink Team
> http://fink.sodan.ecc.u-tokyo.ac.jp/
> 
> _______________________________________________
> Ludia-users mailing list
> Ludia****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/ludia-users
> 




Ludia-users メーリングリストの案内
Back to archive index