Re: Minor patch to C++ large object interface (cures two ills)
От | Adam Haberlach |
---|---|
Тема | Re: Minor patch to C++ large object interface (cures two ills) |
Дата | |
Msg-id | 20000925105357.A27493@ricochet.net обсуждение исходный текст |
Ответ на | Re: Minor patch to C++ large object interface (cures two ills) (Bruce Momjian <pgman@candle.pha.pa.us>) |
Список | 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@newsnipple.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.
В списке pgsql-patches по дате отправления: