Large object functions
======================

``bdr.lo_*`` ファンクションは、
 
`PostgreSQL large object server-side functions <https://www.postgresql.org/docs/current/lo-funcs.html>`_ とレプリケートされた同等のファンクションです。各ファンクションは\ ``pg_catalog.largeobject``
ではなく\ ``bdr.pgd_largeobject``
で動作します。特に記載のない限り、動作とパラメーターのセマンティクスは、同等のPostgreSQLと同じです。

レプリケートされたラージオブジェクトの概要については、
:ref:`Replicated large objects <Replicated large objects>` を参照してください。

ラージオブジェクトインターフェイス
----------------------------------

bdr.lo_creat
^^^^^^^^^^^^

新しいラージオブジェクトを作成します。 ``mode``
引数は無視されますが、互換性のために受け入れられます。新しいラージオブジェクトのOIDを結果ます。

概要
^^^^

.. code:: sql

   bdr.lo_creat(mode int4) returns oid

パラメーター
^^^^^^^^^^^^

- ``mode`` — 無視されます。 PostgreSQL ``lo_creat``
  インターフェイスとの互換性のために受け入れられます。

bdr.lo_create
^^^^^^^^^^^^^

指定されたOIDで新しいラージオブジェクトを作成します。ラージオブジェクトのOIDを結果ます。

.. _概要-1:

概要
^^^^

.. code:: sql

   bdr.lo_create(lobjId oid) returns oid

.. _パラメーター-1:

パラメーター
^^^^^^^^^^^^

- ``lobjId`` — 新しいラージオブジェクトに割り当てるOID。 ``0``
  を渡して、OIDが自動的に割り当てられます。

bdr.lo_open
^^^^^^^^^^^

既存のラージオブジェクトを読み取りまたは書き込みのために開きます。後続の操作で使用するラージオブジェクトファイル記述子を返します。

.. _概要-2:

概要
^^^^

.. code:: sql

   bdr.lo_open(lobjId oid, mode int4) returns int4

.. _パラメーター-2:

パラメーター
^^^^^^^^^^^^

- ``lobjId`` — 開くラージオブジェクトのOID。

- ``mode`` — アクセスモード。読み取りアクセスの場合は\ ``INV_READ``
  0x40000、書き込みアクセスの場合は\ ``INV_WRITE``
  0x20000、または両方を組み合わせて使用します。

bdr.lo_close
^^^^^^^^^^^^

ラージオブジェクトファイル記述子を閉じます。

.. _概要-3:

概要
^^^^

.. code:: sql

   bdr.lo_close(fd int4) returns int4

.. _パラメーター-3:

パラメーター
^^^^^^^^^^^^

- ``fd`` — ``bdr.lo_open`` によって返されるファイル記述子。

bdr.loread
^^^^^^^^^^

現在のシーク位置にあるラージオブジェクトから最大\ ``len``
バイトを読み取ります。

.. _概要-4:

概要
^^^^

.. code:: sql

   bdr.loread(fd int4, len int4) returns bytea

.. _パラメーター-4:

パラメーター
^^^^^^^^^^^^

- ``fd`` — ``bdr.lo_open`` によって返されるファイル記述子。

- ``len`` — 読み取る最大バイト数。

bdr.lowwrite
^^^^^^^^^^^^

現在のシーク位置でラージオブジェクトにデータを書き込みます。書き込まれたバイト数を返します。

.. _概要-5:

概要
^^^^

.. code:: sql

   bdr.lowrite(fd int4, buf bytea) returns int4

.. _パラメーター-5:

パラメーター
^^^^^^^^^^^^

- ``fd`` — ``bdr.lo_open`` によって返されるファイル記述子。

- ``buf`` — 書き込むデータ。

bdr.lo_lseek
^^^^^^^^^^^^

ラージオブジェクト記述子の現在のシーク位置を移動します。

.. _概要-6:

概要
^^^^

.. code:: sql

   bdr.lo_lseek(fd int4, offset int4, whence int4) returns int4

.. _パラメーター-6:

パラメーター
^^^^^^^^^^^^

- ``fd`` — ``bdr.lo_open`` によって返されるファイル記述子。

- ``offset`` — シークするバイトオフセット。

- ``whence`` — シークモード最初から\ ``SEEK_SET``
  0、現在位置から\ ``SEEK_CUR`` 1、または最後から\ ``SEEK_END`` 2。

bdr.lo_lseek64
^^^^^^^^^^^^^^

``bdr.lo_lseek`` の64ビットバージョン。

.. _概要-7:

概要
^^^^

.. code:: sql

   bdr.lo_lseek64(fd int4, offset int64, whence int4) returns int64

.. _パラメーター-7:

パラメーター
^^^^^^^^^^^^

- ``fd`` — ``bdr.lo_open`` によって返されるファイル記述子。

- ``offset`` — シークするバイトオフセット。

- ``whence`` — シークモード ``SEEK_SET`` (0)、\ ``SEEK_CUR``
  (1)、または\ ``SEEK_END`` (2)。

bdr.lo_tell
^^^^^^^^^^^

ラージオブジェクト記述子の現在のシーク位置を返します。

.. _概要-8:

概要
^^^^

.. code:: sql

   bdr.lo_tell(fd int4) returns int4

.. _パラメーター-8:

パラメーター
^^^^^^^^^^^^

- ``fd`` — ``bdr.lo_open`` によって返されるファイル記述子。

bdr.lo_tell64
^^^^^^^^^^^^^

``bdr.lo_tell`` の64ビットバージョン。

.. _概要-9:

概要
^^^^

.. code:: sql

   bdr.lo_tell64(fd int4) returns int64

.. _パラメーター-9:

パラメーター
^^^^^^^^^^^^

- ``fd`` — ``bdr.lo_open`` によって返されるファイル記述子。

bdr.lo_truncate
^^^^^^^^^^^^^^^

ラージオブジェクトを指定されたバイト単位の長さに切り捨てます。

.. _概要-10:

概要
^^^^

.. code:: sql

   bdr.lo_truncate(fd int4, len int4) returns int4

.. _パラメーター-10:

パラメーター
^^^^^^^^^^^^

- ``fd`` — ``bdr.lo_open`` によって返されるファイル記述子。

- ``len`` — ラージオブジェクトの新しい長さのバイト単位。

bdr.lo_truncate64
^^^^^^^^^^^^^^^^^

``bdr.lo_truncate`` の64ビットバージョン。

.. _概要-11:

概要
^^^^

.. code:: sql

   bdr.lo_truncate64(fd int4, len int64) returns int4

.. _パラメーター-11:

パラメーター
^^^^^^^^^^^^

- ``fd`` — ``bdr.lo_open`` によって返されるファイル記述子。

- ``len`` — ラージオブジェクトの新しい長さのバイト単位。

bdr.lo_unlink
^^^^^^^^^^^^^

指定されたOIDを持つラージオブジェクトを削除します。

.. _概要-12:

概要
^^^^

.. code:: sql

   bdr.lo_unlink(lobjId oid) returns int4

.. _パラメーター-12:

パラメーター
^^^^^^^^^^^^

- ``lobjId`` — 削除するラージオブジェクトのOID。

bdr.lo_import
^^^^^^^^^^^^^

サーバーのファイルシステムからファイルを新しいラージオブジェクトとしてインポートします。新しいオブジェクトのOIDを結果ます。スーパーユーザー権限が必要です。

.. _概要-13:

概要
^^^^

.. code:: sql

   bdr.lo_import(filename text) returns oid

.. _パラメーター-13:

パラメーター
^^^^^^^^^^^^

- ``filename`` —
  サーバーのファイルシステムにインポートするファイルの絶対パス。

bdr.lo_import_with_oid
^^^^^^^^^^^^^^^^^^^^^^

特定のOIDを持つラージオブジェクトとしてサーバーのファイルシステムからファイルをインポートします。スーパーユーザー権限が必要です。

.. _概要-14:

概要
^^^^

.. code:: sql

   bdr.lo_import_with_oid(filename text, lobjId oid) returns oid

.. _パラメーター-14:

パラメーター
^^^^^^^^^^^^

- ``filename`` —
  サーバーのファイルシステムにインポートするファイルの絶対パス。

- ``lobjId`` — 新しいラージオブジェクトに割り当てるOID。

bdr.lo_export
^^^^^^^^^^^^^

ラージオブジェクトをサーバーのファイルシステム上のファイルにエクスポートします。スーパーユーザー権限が必要です。

.. _概要-15:

概要
^^^^

.. code:: sql

   bdr.lo_export(lobjId oid, filename text) returns int4

.. _パラメーター-15:

パラメーター
^^^^^^^^^^^^

- ``lobjId`` — エクスポートするラージオブジェクトのOID。

- ``filename`` — サーバーのファイルシステム上の宛先ファイルの絶対パス。

bdr.lo_get
^^^^^^^^^^

ラージオブジェクトの内容全体を\ ``bytea`` 値として結果ます。

.. _概要-16:

概要
^^^^

.. code:: sql

   bdr.lo_get(lobjId oid) returns bytea

.. _パラメーター-16:

パラメーター
^^^^^^^^^^^^

- ``lobjId`` — 読み取るラージオブジェクトのOID。

bdr.lo_get_fragment
^^^^^^^^^^^^^^^^^^^

ラージオブジェクトの一部を\ ``bytea`` 値として結果ます。

.. _概要-17:

概要
^^^^

.. code:: sql

   bdr.lo_get_fragment(lobjId oid, offset int64, length int4) returns bytea

.. _パラメーター-17:

パラメーター
^^^^^^^^^^^^

- ``lobjId`` — 読み取るラージオブジェクトのOID。

- ``offset`` —
  読み取りを開始するラージオブジェクト内のバイトオフセット。

- ``length`` — 返される最大バイト数。

bdr.lo_from_bytea
^^^^^^^^^^^^^^^^^

``bytea``
値から新しいラージオブジェクトを作成します。新しいオブジェクトのOIDを結果ます。

.. _概要-18:

概要
^^^^

.. code:: sql

   bdr.lo_from_bytea(lobjId oid, data bytea) returns oid

.. _パラメーター-18:

パラメーター
^^^^^^^^^^^^

- ``lobjId`` — 新しいラージオブジェクトに割り当てるOID。 ``0``
  を渡して、OIDが自動的に割り当てられます。

- ``data`` — ラージオブジェクトの初期コンテンツ。

bdr.lo_put
^^^^^^^^^^

指定されたオフセットで開始してラージオブジェクトにデータを書き込み、必要に応じてオブジェクトを拡張します。

.. _概要-19:

概要
^^^^

.. code:: sql

   bdr.lo_put(lobjId oid, offset int64, data bytea) returns void

.. _パラメーター-19:

パラメーター
^^^^^^^^^^^^

- ``lobjId`` — 書き込むラージオブジェクトのOID。

- ``offset`` —
  書き込みを開始するラージオブジェクト内のバイトオフセット。

- ``data`` — 書き込むデータ。
