2011-12-30 21 views
0

私のpostgreSQLデータベース用のCエクステンションは数年前に書かれました(私はそれが以前のバージョン8.0だったと思います - Version1呼び出し規約を使用しています)。PG_MODULE_MAGICマクロを使用するには、拡張ライブラリが必要です

私が使用してPG 8.4データベースの拡張をロードしようとした:

CREATE FUNCTION foobar(float8[],float8[],float8[],float8[],int4) RETURNS int4 
AS '$libdir/pg_myextlib.so' LANGUAGE 'c'; 

を、私はエラーメッセージを得た:私はこのためのクイック検索を行なったし、いくつかの古いngのを見つけた

ERROR: incompatible library "/usr/lib/postgresql/8.4/lib/pg_myextlib.so": missing magic block HINT: Extension libraries are required to use the PG_MODULE_MAGIC macro.

をこれに関する話題。それらはすべて、hereのような解決策を提供するようです。

しかし、それらのスレッドは古い(+回答に投票していない)ので、これを修正する正しい方法が何であるかをここで尋ねるのが最善だと思った。

脇に:基礎となるライブラリがCで書かれているので、私はタグにCを含めました。 'C'がこの質問の関連タグではない場合は、削除してください。

+1

見つけた解決策を試しましたか? – Mat

+0

さらに良い - あなたは細かいマニュアルをチェックしましたか? –

答えて

4

バイナリモジュールは市長バージョン間で互換性がありません。 PG_MODULE_MAGICマクロはそれを保証します。このマクロをコードに追加し、再コンパイルする必要があります。そしてもう少し多分。 SPI APIのみが安定していますが、他の内部機能はありません。

関連する問題