SQLからラージオブジェクトを操作するのに適応したサーバ側の関数を表 34.1に列挙します。
表34.1 SQL向けラージオブジェクト関数
これまで説明したクライアント側の関数それぞれに対応する、追加のサーバ側の関数があります。
実際、ほとんどのクライアント側の関数は対応するサーバ側の関数に対する単なるインタフェースです。
SQLコマンドからの呼び出しが便利な関数は、lo_creat
、lo_create
、lo_unlink
、lo_import
、lo_export
です。
これらの使用例を示します。
CREATE TABLE image ( name text, raster oid ); SELECT lo_creat(-1); -- 新しい空のラージオブジェクトのOIDを返します SELECT lo_create(43213); -- OID 43213でラージオブジェクトの生成を試行します SELECT lo_unlink(173454); -- OID 173454のラージオブジェクトを削除します INSERT INTO image (name, raster) VALUES ('beautiful image', lo_import('/etc/motd')); INSERT INTO image (name, raster) -- 上と同じですが使用するOIDを指定します VALUES ('beautiful image', lo_import('/etc/motd', 68583)); SELECT lo_export(image.raster, '/tmp/motd') FROM image WHERE name = 'beautiful image';
サーバ側のlo_import
およびlo_export
関数の動作はクライアント側の関数とかなり異なります。
この2つの関数はサーバのファイルシステム上のファイルの読み書きを、データベースを所有するユーザの権限で行います。
したがって、これらの使用はスーパーユーザに限定されています。
対照的に、クライアント側のインポート関数とエクスポート関数はクライアントのファイルシステム上のファイルをクライアントプログラムの権限で読み書きします。
このクライアント側の関数はスーパーユーザ権限を必要としません。
またlo_read
およびlo_write
の機能はサーバサイドの呼び出しを介しても利用することができます。
しかしサーバサイドの関数名はクライアント側のインタフェースとは異なり、アンダースコアが含まれません。
loread
およびlowrite
としてこれらの関数を呼び出さなければなりません。