Re: binary data

From: "Hugh Mandeville" <hughmandeville(at)hotmail(dot)com>
To: pgsql-sql(at)postgresql(dot)org
Subject: Re: binary data
Date: 2001-06-15 21:48:22
Message-ID: 9gdvqf$hgl$1@news.tht.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

postgresql's large object functions can be used to store and retrieve binary
data.

http://www.ca.postgresql.org/devel-corner/docs/postgres/lo-interfaces.html

here is some sample code:

inv_oid = lo_creat(dbconn, INV_READ | INV_WRITE);
if (inv_oid == InvalidOid) {
fprintf (stderr, "lo_creat failed: %s\n", PQerrorMessage(dbconn));
return (1);
}

res = PQexec(dbconn, "BEGIN WORK");
if (!res || PQresultStatus(res) != PGRES_COMMAND_OK) {
fprintf(stderr, "PQexe(\"BEGIN WORK\") failed: %s\n",
PQresultErrorMessage(res));
return (1);
}
PQclear(res);

obj_fd = lo_open(dbconn, inv_oid, INV_READ | INV_WRITE);
if (obj_fd == -1) {
fprintf (stderr, "lo_open failed: %s\n", PQerrorMessage(dbconn));
return (1);
}

ret = lo_write (dbconn, obj_fd, buf, buflen);
if (ret == -1) {
fprintf (stderr, "lo_write failed: %s\n", PQerrorMessage(dbconn));
return (1);
}

ret = lo_lseek(dbconn, obj_fd, 0, SEEK_SET);
if (ret == -1) {
fprintf (stderr, "lo_seek failed: %s\n", PQerrorMessage(dbconn));
return (1);
}

ret = lo_read (dbconn, obj_fd, buf, buflen);
if (ret == -1) {
fprintf (stderr, "lo_read failed: %s\n", PQerrorMessage(dbconn));
return (1);
}

lo_close(dbconn, obj_fd);

res = PQexec(dbconn, "COMMIT");
PQclear(res);

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Larry Rosenman 2001-06-15 22:09:50 Why doesn't this pgsql function compile?
Previous Message Jeff Eckermann 2001-06-15 14:25:48 RE: search/replace in update