Large object functions#

The bdr.lo_* functions are the replicated equivalents of the

PostgreSQL large object server-side functions . Each function operates on bdr.pgd_largeobject instead of pg_catalog.largeobject . Behavior and parameter semantics are identical to the PostgreSQL equivalents unless noted otherwise.

For an overview of replicated large objects, see Replicated large objects .

Large object interface#

bdr.lo_creat#

Creates a new large object. The mode argument is ignored but accepted for compatibility. Returns the OID of the new large object.

Synopsis#

bdr.lo_creat(mode int4) returns oid

Parameters#

  • mode — Ignored. Accepted for compatibility with the PostgreSQL lo_creat interface.

bdr.lo_create#

Creates a new large object with the given OID. Returns the OID of the large object.

Synopsis#

bdr.lo_create(lobjId oid) returns oid

Parameters#

  • lobjId — OID to assign to the new large object. Pass 0 to have an OID assigned automatically.

bdr.lo_open#

Opens an existing large object for reading or writing. Returns a large object file descriptor for use in subsequent operations.

Synopsis#

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

Parameters#

  • lobjId — OID of the large object to open.

  • mode — Access mode. Use INV_READ (0x40000) for read access, INV_WRITE (0x20000) for write access, or both combined.

bdr.lo_close#

Closes a large object file descriptor.

Synopsis#

bdr.lo_close(fd int4) returns int4

Parameters#

  • fd — File descriptor returned by bdr.lo_open .

bdr.loread#

Reads up to len bytes from the large object at the current seek position.

Synopsis#

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

Parameters#

  • fd — File descriptor returned by bdr.lo_open .

  • len — Maximum number of bytes to read.

bdr.lowrite#

Writes data to the large object at the current seek position. Returns the number of bytes written.

Synopsis#

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

Parameters#

  • fd — File descriptor returned by bdr.lo_open .

  • buf — Data to write.

bdr.lo_lseek#

Moves the current seek position for the large object descriptor.

Synopsis#

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

Parameters#

  • fd — File descriptor returned by bdr.lo_open .

  • offset — Byte offset to seek to.

  • whence — Seek mode: SEEK_SET (0) from the start, SEEK_CUR (1) from the current position, or SEEK_END (2) from the end.

bdr.lo_lseek64#

64-bit version of bdr.lo_lseek .

Synopsis#

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

Parameters#

  • fd — File descriptor returned by bdr.lo_open .

  • offset — Byte offset to seek to.

  • whence — Seek mode: SEEK_SET (0), SEEK_CUR (1), or SEEK_END (2).

bdr.lo_tell#

Returns the current seek position of the large object descriptor.

Synopsis#

bdr.lo_tell(fd int4) returns int4

Parameters#

  • fd — File descriptor returned by bdr.lo_open .

bdr.lo_tell64#

64-bit version of bdr.lo_tell .

Synopsis#

bdr.lo_tell64(fd int4) returns int64

Parameters#

  • fd — File descriptor returned by bdr.lo_open .

bdr.lo_truncate#

Truncates the large object to the given length in bytes.

Synopsis#

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

Parameters#

  • fd — File descriptor returned by bdr.lo_open .

  • len — New length of the large object in bytes.

bdr.lo_truncate64#

64-bit version of bdr.lo_truncate .

Synopsis#

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

Parameters#

  • fd — File descriptor returned by bdr.lo_open .

  • len — New length of the large object in bytes.

Synopsis#

bdr.lo_unlink(lobjId oid) returns int4

Parameters#

  • lobjId — OID of the large object to delete.

bdr.lo_import#

Imports a file from the server’s filesystem as a new large object. Returns the OID of the new object. Requires superuser privilege.

Synopsis#

bdr.lo_import(filename text) returns oid

Parameters#

  • filename — Absolute path of the file to import on the server’s filesystem.

bdr.lo_import_with_oid#

Imports a file from the server’s filesystem as a large object with a specific OID. Requires superuser privilege.

Synopsis#

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

Parameters#

  • filename — Absolute path of the file to import on the server’s filesystem.

  • lobjId — OID to assign to the new large object.

bdr.lo_export#

Exports a large object to a file on the server’s filesystem. Requires superuser privilege.

Synopsis#

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

Parameters#

  • lobjId — OID of the large object to export.

  • filename — Absolute path of the destination file on the server’s filesystem.

bdr.lo_get#

Returns the entire contents of the large object as a bytea value.

Synopsis#

bdr.lo_get(lobjId oid) returns bytea

Parameters#

  • lobjId — OID of the large object to read.

bdr.lo_get_fragment#

Returns a portion of the large object as a bytea value.

Synopsis#

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

Parameters#

  • lobjId — OID of the large object to read.

  • offset — Byte offset within the large object to start reading from.

  • length — Maximum number of bytes to return.

bdr.lo_from_bytea#

Creates a new large object from a bytea value. Returns the OID of the new object.

Synopsis#

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

Parameters#

  • lobjId — OID to assign to the new large object. Pass 0 to have an OID assigned automatically.

  • data — Initial contents of the large object.

bdr.lo_put#

Writes data into the large object starting at the given offset, extending the object if necessary.

Synopsis#

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

Parameters#

  • lobjId — OID of the large object to write to.

  • offset — Byte offset within the large object to start writing at.

  • data — Data to write.