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

Yoshiyuki Asaba y-asaba @ sraoss.co.jp
2007年 12月 26日 (水) 19:46:37 JST


浅羽です。

From: スクゥ 陶山 泰 <suyama @ skoo.co.jp>
Subject: [pgpool-general-jp: 333] Re: JDBC から pgpool-II を経由してのラージオブジェクトの読み込み
Date: Wed, 26 Dec 2007 18:34:35 +0900

>  と思ったんですが、気を取り直して考えてみると、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. :/
> 
>  やっぱりダメですかね。

createLO() は

    public long createLO(int mode) throws SQLException
    {
        if (conn.getAutoCommit())
            throw new PSQLException(GT.tr("Large Objects may not be used in auto-commit mode."),
                                    PSQLState.NO_ACTIVE_SQL_TRANSACTION);
        FastpathArg args[] = new FastpathArg[1];
        args[0] = new FastpathArg(mode);
        return fp.getOID("lo_creat", args); <-- ココ
    }

と、lo_creat() を呼び出しています。別の OID がそれぞれの PostgreSQL で
割り当てた後に lom.open() で開こうとしたところ、片方でしか開けなくてエ
ラーになっていると思います。

--
Yoshiyuki Asaba
y-asaba @ sraoss.co.jp


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