| PostgreSQL 9.0.23 Documentation | ||||
|---|---|---|---|---|
| Prev | Up | Chapter 32. Large Objects | Next | |
There are server-side functions callable from SQL that
  correspond to each of the client-side functions described above;
  indeed, for the most part the client-side functions are simply
  interfaces to the equivalent server-side functions. The ones that
  are actually useful to call via SQL commands are lo_creat, lo_create, lo_unlink, lo_import, and lo_export. Here are examples of their use:
CREATE TABLE image (
    name            text,
    raster          oid
);
SELECT lo_creat(-1);       -- returns OID of new, empty large object
SELECT lo_create(43213);   -- attempts to create large object with OID 43213
SELECT lo_unlink(173454);  -- deletes large object with OID 173454
INSERT INTO image (name, raster)
    VALUES ('beautiful image', lo_import('/etc/motd'));
INSERT INTO image (name, raster)  -- same as above, but specify OID to use
    VALUES ('beautiful image', lo_import('/etc/motd', 68583));
SELECT lo_export(image.raster, '/tmp/motd') FROM image
    WHERE name = 'beautiful image';
  The server-side lo_import and
  lo_export functions behave
  considerably differently from their client-side analogs. These
  two functions read and write files in the server's file system,
  using the permissions of the database's owning user. Therefore,
  their use is restricted to superusers. In contrast, the
  client-side import and export functions read and write files in
  the client's file system, using the permissions of the client
  program. The client-side functions do not require superuser
  privilege.
The functionality of lo_read and
  lo_write is also available via
  server-side calls, but the names of the server-side functions
  differ from the client side interfaces in that they do not
  contain underscores. You must call these functions as
  loread and lowrite.