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

Itagaki Takahiro itagaki.takahiro @ gmail.com
2010年 9月 8日 (水) 10:28:49 JST


板垣です。

2010/9/8 Masahiro Kato <kato @ ndkcom.co.jp>:
> 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


pgsql-jp メーリングリストの案内