PgLargeObjects.EctoQuery (PgLargeObjects v0.2.1)

View Source

Extensions to Ecto's query DSL.

Import this module to make various macros available wrapping the raw PostgreSQL API for dealing with large objects.

This permits operating on large objects in bulk as part of SQL queries. For example

import Ecto.Query
import PgLargeObjects.EctoQuery

# Delete all data uploaded by a given user.
from(upload in Upload,
  where: upload.user_id == ^user_id,
  select: lo_unlink(upload.object_id)
) |> Repo.all()

See the PostgreSQL documentation at https://www.postgresql.org/docs/current/lo-interfaces.html for a discussion of these functions.

Summary

Functions

Close large object file descriptor.

Create large object.

Adjust read/write position in large object.

Open large object for reading or writing.

Read data from large object.

Get read/write position of large object.

Truncate or expand large object.

Delete large object.

Write data to large object.

Functions

lo_close(fd)

(macro)

Close large object file descriptor.

See https://www.postgresql.org/docs/current/lo-interfaces.html#LO-CLOSE for details.

lo_create(desired_oid \\ 0)

(macro)

Create large object.

See https://www.postgresql.org/docs/current/lo-interfaces.html#LO-CREATE for details.

lo_lseek64(fd, offset, whence)

(macro)

Adjust read/write position in large object.

See https://www.postgresql.org/docs/current/lo-interfaces.html#LO-SEEK for details.

lo_open(oid, flags)

(macro)

Open large object for reading or writing.

See https://www.postgresql.org/docs/current/lo-interfaces.html#LO-OPEN for details.

lo_read(fd, length \\ 1_048_576)

(macro)

Read data from large object.

See https://www.postgresql.org/docs/current/lo-interfaces.html#LO-READ for details.

lo_tell64(fd)

(macro)

Get read/write position of large object.

See https://www.postgresql.org/docs/current/lo-interfaces.html#LO-TELL for details.

lo_truncate64(fd, size)

(macro)

Truncate or expand large object.

See https://www.postgresql.org/docs/current/lo-interfaces.html#LO-TRUNCATE for details.

lo_unlink(oid)

(macro)

Delete large object.

See https://www.postgresql.org/docs/current/lo-interfaces.html#LO-UNLINK for details.

lo_write(fd, data)

(macro)

Write data to large object.

See https://www.postgresql.org/docs/current/lo-interfaces.html#LO-WRITE for details.