From: | Adam Haberlach <adam(at)newsnipple(dot)com> |
---|---|
To: | Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us> |
Subject: | Re: Minor patch to C++ large object interface (cures two ills) |
Date: | 2000-09-25 17:53:57 |
Message-ID: | 20000925105357.A27493@ricochet.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-patches |
On Mon, Sep 25, 2000 at 08:53:02AM -0400, Bruce Momjian wrote:
> First, I need context diffs, diff -c. Second, does the END cause
> problems in cases where Close() is called more than once? For example,
> Close is called as part of PgLargeObject::Open.
I've moved the BEGIN/END to be just before/after the lo_ functions are called,
which gives me a chance to guard the END statement with the check for a valid
pgFd. I'm mildly worried about bracketing the lo_create() call, but it seems
to work this way, and this object is pretty screwed up anyway. :)
In the long run, I may create my own C++ API, which will pool db connections,
handle locking, and have a way to latch in a callback for asynchronous
notifications.
Index: pglobject.cc
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/src/interfaces/libpq++/pglobject.cc,v
retrieving revision 1.6
diff -c -r1.6 pglobject.cc
*** pglobject.cc 2000/04/22 22:39:15 1.6
--- pglobject.cc 2000/09/25 16:26:22
***************
*** 88,93 ****
--- 88,94 ----
// Close any prior object
Close();
// Open the object
+ Exec("BEGIN");
pgFd = lo_open(pgConn, pgObject, INV_READ|INV_WRITE);
// Check for possible errors
***************
*** 119,125 ****
void PgLargeObject::Close()
{
! if (pgFd >= 0) lo_close(pgConn, pgFd);
pgFd = -1;
}
--- 120,129 ----
void PgLargeObject::Close()
{
! if (pgFd >= 0) {
! lo_close(pgConn, pgFd);
! Exec("END");
! }
pgFd = -1;
}
***************
*** 147,152 ****
--- 151,160 ----
return lo_tell(pgConn, pgFd);
}
+ Oid PgLargeObject::LOid()
+ {
+ return pgObject;
+ }
Oid PgLargeObject::Import(const char* filename)
{
--
Adam Haberlach | A billion hours ago, human life appeared on
adam(at)newsnipple(dot)com | earth. A billion minutes ago, Christianity
http://www.newsnipple.com | emerged. A billion Coca-Colas ago was
'88 EX500 | yesterday morning. -1996 Coca-Cola Ann. Rpt.
From | Date | Subject | |
---|---|---|---|
Next Message | Bruce Momjian | 2000-09-29 22:00:36 | Re: AIX patch to fix problems with new fmgr |
Previous Message | Zeugswetter Andreas SB | 2000-09-25 16:41:53 | AIX patch to fix problems with new fmgr |