これまで説明したクライアント側の関数それぞれに対応する、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); -- OID43213でラージオブジェクトの生成を試行します SELECT lo_unlink(173454); -- OID 173454のラージオブジェクトを削除します INSERT INTO image (name, raster) VALUES ('beautiful image', lo_import('/etc/motd')); SELECT lo_export(image.raster, '/tmp/motd') FROM image WHERE name = 'beautiful image';
サーバ側のlo_import
およびlo_export
関数の動作はクライアント側の関数とかなり異なります。
この2つの関数はサーバのファイルシステム上のファイルの読み書きを、データベースを所有するユーザの権限で行います。
したがって、これらの使用はスーパーユーザに限定されています。
対照的に、クライアント側のインポート関数とエクスポート関数はクライアントのファイルシステム上のファイルをクライアントプログラムの権限で読み書きします。
このクライアント側の関数は全てのPostgreSQLユーザから利用することができます。