| PostgreSQL 8.2.11 Documentation | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 30. Large Objects | Fast Forward | 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'));
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 can be used by any
    PostgreSQL user.