2010年9月 8日

[pgsql-jp: 40370] Re:ver8.4でのunionの非互換について

板垣です。

2010/9/8 Masahiro Kato <kato@xxxxx>:
> posgresqlを8.3から8.4にバージョンアップしたら
> server closed the connection unexpectedly
> 8.3ではludia-1.5.2ですが、8.4ではtextsearch_sena-8.4.5を使っています。

PostgreSQL本体ではなく、textsearch_sennaの問題と思われます。

動作を再現できる試験パターンか、クラッシュ時のバックトレースが
取れたら送ってください。

> ?AND ((col_title %% '2') OR (col_title_kana %% '2') OR (col_title_eng %%
> '2') OR (col_subtitle %% '2') OR (col_subtitle_kana %% '2'))

複数の senna インデックスを1つのクエリで同時に使っていることが
関係しているかもしれません。textsearch_senna では、あまり深く考えず、
#define INDEX_CACHE_SIZE 4
#define QUERY_CACHE_SIZE 8
などとしているので、1クエリ内でキャッシュが溢れると
クラッシュするのかもしれません。

暫定対処としては、この定数を増やして様子を見てもらうのが1つです。
また、もし常にすべての列を検索するのであれば、複数のインデックスの代わりに
CRETE INDEX ... USING senna ON ((col_title || E'\n' || col_title_kana || ...))
のような連結したテキストに対する1個のインデックスにまとめると
動くようになるかもしれません。

--
Itagaki Takahiro

投稿者 xml-rpc : 2010年9月 8日 10:28
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/98218
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。