[pgpool-general-jp: 333] Re: JDBC から pgpool-II を経由してのラージオブジェクトの読み込み

スクゥ 陶山 泰 suyama @ skoo.co.jp
2007年 12月 26日 (水) 18:34:35 JST


浅羽さん、こんにちは。陶山です。

        Wed, 26 Dec 2007 15:58:10 +0900 (JST) の
        [pgpool-general-jp: 331] Re: JDBC から pgpool-II を経由してのラージオブジェクトの読み込み
        に関するメールについてのお返事です。

Yoshiyuki> ラージオブジェクトで lo_create() という関数が 8.1 から追加され、この関
Yoshiyuki> 数が OID を指定できるようになっています。互換性のために lo_creat() が
Yoshiyuki> 残っており、lo_creat() は OID カウンタからOID を取り出します。
Yoshiyuki> 
Yoshiyuki> JDBC ドライバのソースコードを眺めてみると lo_creat() を使っているよう
Yoshiyuki> です。JDBC ドライバが lo_create() をサポートしないと、pgpool では今の
Yoshiyuki> ところ対応できません…。

 え〜っ!!! そうなんですか!!
 今までの苦労が水の泡と消えていく〜〜〜〜ぅ。


 と思ったんですが、気を取り直して考えてみると、JDBC2 には、
lom.createLO() というタージオブジェクトマネージャのメソッドがありまし
た。これがlo_create()に対応しているんじゃないかと思います。(違うかな)

     lom = ((org.postgresql.PGConnection)db).getLargeObjectAPI();
     long oid = lom.createLO( LargeObjectManager.READ | LargeObjectManager.WRITE );
     /* ここまではOK */

     LargeObject obj = lom.open( oid, LargeObjectManager.WRITE );
     /* ここでエラー */ 
     /* An I/O error occured while sending to the backend. :/

 やっぱりダメですかね。
 これでダメだとなると12/8の時点に戻ることになります。う〜(;;)


 pgpool-II を経由せずに jdbc で直接 postgresql に書くとラージオブジェ
クトも書き込めるのに pgpool-II が入っただけでなぜ書けないのかがわかりま
せん。

 ラージオブジェクトが使えないとなると、根本的にやり直しです。
 あ〜むなしい。



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