PostgreSQL 8.3.6 に ludia を入れた
PostgreSQL 8.3 系の最新バージョンである 8.3.6 に、全文検索システム Ludia 1.5.1 をインストールしてみたところ、
pgsenna2.c:571: error: too few arguments to function ‘IndexBuildHeapScan’
というエラーが発生してコンパイルできない。
ちなみに、OS は CentOS 5.2。
CentOS 5.2 + PostgreSQL 8.3 + Ludia 1.5.1 の組み合わせでのセットアップは何度となくやっている。
ということで、基本的には失敗しないはず。
で、真面目にエラーを見てみると、IndexBuildHeapScan 関数の引数が少ないとお怒りのご様子。
うーむ、イヤな予感・・・
2009.2 にリリースされた PostgreSQL 8.3.6 から、IndexBuildHeapScan 関数のプロトタイプが変更された模様。
Ludia はまだ対応バージョンがリリースされていない。
さて、どうしたもんか・・・
まずは、IndexBuildHeapScan 変更の詳細を調べてみる。
8.3.6 のリリースノートを見ると
Prevent synchronous scan during GIN index build (Tom)
Because GIN is optimized for inserting tuples in increasing TID order, choosing to use a synchronous scan could slow the build by a factor of three or more.
日本語訳はこちら
GINインデックス構築時の同期スキャンを防止します。(Tom)
GINはTID順序を増やすことでタプルの挿入に最適化されていますので、同期スキャンを使用することを選択すると、3倍以上構築が低速になる可能性がありました。
汎用転置インデックスを構築している間、同期スキャンを行わないようにできるようにしたということ。
で、ソースコード(src/backend/catalog/index.c)を見てみると、
double IndexBuildHeapScan(Relation heapRelation, Relation indexRelation, IndexInfo *indexInfo, bool allow_sync, IndexBuildCallback callback, void *callback_state);
追加されたのは第4引数。
- 従来と同じ動作なら true
- 従来と異なる動作で、汎用転置インデックス構築中に同期スキャンをしたくなければ false
を指定することになる。
これなら大丈夫そうですな。
という訳で、Ludia のソースに手を入れて、8.3.6 対応化を行うことに決定。
pgsenna2.c の該当箇所を変更。
同期スキャンが走ることのメリットより、構築の遅延の方がデメリットが大きいと判断し、IndexBuildHeapScan の第4引数は false にしておいた。
これで、コンパイル成功。
無事、Ludia も利用できるようになりました!
« 17インチ MacBook Pro インプレッション:メモリ増量 | トップページ | pg_restore 時間かかりすぎでお困りの皆様 »
「パソコン・インターネット」カテゴリの記事
- MacBook Pro 17 で2ヶ月ほど SSD を使ってみた(2010.02.17)
- マルチタッチ対応マウス「Apple Magic Mouse」(2009.11.01)
- iTunes がパスワードを覚えない問題を解決(2009.10.27)
- シンプルさがもたらすユーザービリティ(2009.07.28)
- ソニーエリクソンの Android 携帯「Rachael」(2009.07.22)
「プログラミング」カテゴリの記事
- PostgreSQL での正規表現リテラルについての覚え書き(2009.07.21)
- WWDC 2009 終了!(2009.06.17)
- WWDC偵察(2009.06.08)
- 分散型バージョン管理システム「Git」タスク単位ブランチ運用のための10のステップ(2009.04.30)
- 分散型バージョン管理システム「Git」Mac OS X インストール(2009.04.29)
「DB」カテゴリの記事
- pg_restore 時間かかりすぎでお困りの皆様(2009.03.06)
- PostgreSQL 8.3.6 に ludia を入れた(2009.03.05)
「PostgreSQL」カテゴリの記事
- PostgreSQL での正規表現リテラルについての覚え書き(2009.07.21)
- pg_restore 時間かかりすぎでお困りの皆様(2009.03.06)
- PostgreSQL 8.3.6 に ludia を入れた(2009.03.05)
この記事へのコメントは終了しました。
コメント