[pgpool-general-jp: 340] lo_create() [libpq ラージオブジェクトインタフェース]の使い方

スクゥ 陶山 泰 suyama @ skoo.co.jp
2007年 12月 30日 (日) 17:47:14 JST


こんにちは。陶山です。

 やっと c でプログラミングできる環境が作れ、テストプログラムを作って
機能確認しています。
 古い lo_creat() インタフェースを使い、JDBC2 でやったときと同じように
メインのデータベースにラージオブジェクトを作成できるところまでは確認で
きました。当然ながらサブ(スレーブ)のデータベースには書き込めていませ
ん。

 で、もっともポイントとなる 
  Oid lo_create( PGconn *conn, Oid lobjId );
の使い方がわからなくてまた行き詰っています。

---- マニュアルの記述 ここから -- (PostgreSQL 8.2.5文書より) ------
 この関数もラージオブジェクトを新規に作成します。
 割り当てられるOIDをlobjIdで指定することができます。
 こうした場合、そのOIDが他のラージオブジェクトですでに使用されていた
場合、失敗します。
 lobjIdがInvalidOid(0)の場合、lo_createは未使用のOIDを割り当てます。
 (これはlo_creatと同じ動作です。)

 戻り値は新規ラージオブジェクトに割り当てられたOIDで、失敗時には
InvalidOid(0)が返されます。
---- マニュアルの記述 ここまで ------------------------------------

 引数の lobjId には、何を与えればいいのでしょうか。
 既に使われていたら失敗ですね。失敗しない値ってどうやって求めるのでしょ
うか。
 lobjId に、0 を与えるというのは pgpool-II には使えないのですよね。
 未使用の一番小さい OID を確保するというような関数があるのでしょうか。


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