@@演算子
co-sakaです。こんにちは。
PostgreSQL8.3beta2 が出ましたね。
Ludiaを試してくれましたか?
こちらでも少しずつ調査検証を始めています。
PostgreSQL8.3からtsearch2が最初からインストールされてます。
これが原因で問題が発生しました。
tsearch2とLudiaで、@@演算子のシーケンシャルスキャンの定義が競合します。
Ludiaのつもりでシーケンシャルスキャンを実行したつもりでも、
tsearch2のシーケンシャルスキャンが選択されます。
具体的に@@演算子の定義を見てみると以下。
(oprleftとは演算子の左側の型(text型は25)、oprrightは演算子の右側の型。)
test=# select * from pg_operator where oprname = '@@' AND oprleft = 25 AND oprright = 25; -[ RECORD 1 ]+------------ oprname | @@ oprnamespace | 11 oprowner | 10 oprkind | b oprcanmerge | f oprcanhash | f oprleft | 25 oprright | 25 oprresult | 16 oprcom | 17420 oprnegate | 0 oprcode | ts_match_tt oprrest | contsel oprjoin | contjoinsel -[ RECORD 2 ]+------------ oprname | @@ oprnamespace | 2200 oprowner | 10 oprkind | b oprcanmerge | f oprcanhash | f oprleft | 25 oprright | 25 oprresult | 16 oprcom | 3762 oprnegate | 0 oprcode | pgs2contain oprrest | contsel oprjoin | contjoinsel
oprleftとoprrightが、tsearch2とludiaで一緒。
困った困った。
PostgreSQL8.2のtsearch2では、シーケンシャルスキャンに対応していなかったようで、
Ludiaと競合はしなかったのですが・・・。
さて、どうしようか。
tsearch2のシーケンシャルスキャンをアンインストールするか、
それとも、他に方法があるのか???
調査せねば!