Re: [BUGS] Bug #708: PgTransaction class is broken since 7.2 - Mailing list pgsql-interfaces
From | Bruce Momjian |
---|---|
Subject | Re: [BUGS] Bug #708: PgTransaction class is broken since 7.2 |
Date | |
Msg-id | 200207130147.g6D1lDQ00896@candle.pha.pa.us Whole thread Raw |
List | pgsql-interfaces |
Piotr Klaban wrote: > > > PgTransaction class is broken since 7.2 > > On Thu, Jul 11, 2002 at 12:41:24PM -0400, Bruce Momjian wrote: > > > > OK, would you send us a correcting patch? Thanks. > > Thank you for a quick reply. > Sure. If you do not mind, I will enclosed it with this letter > directly to you. This person would like the following patch applied to libpq++ to fix a problem with pg2xbase. I have attached the bug report and his proposed patch of removing 'protected' from two methods: -protected: ExecStatusType BeginTransaction(); ExecStatusType EndTransaction(); It this acceptable to people? -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026 sql-bugs@postgresql.org wrote: Piotr Klaban (makler@man.torun.pl) reports a bug with a severity of 2 The lower the number the more severe it is. Short Description PgTransaction class is broken since 7.2 Long Description Hi, You have introduced the patch http://www.geocrawler.com/archives/3/105/2001/2/0/5248369/ that broke my pg2xbase C++ utility, because I can not COMMIT the transaction. Before the patch it works exactly as it is described in the pgtransdb.h file: // This is the database access class that keeps an open // transaction block during its lifetime. The block is ENDed when // the object is destroyed. But it is not true now. There is a private variable called pgCommitted that is set to false in protected method BeginTransaction() When I delete PgTransaction object - transaction is ABORTed. I can not use EndTransaction() protected method in my C++ file (gcc 3.0.3 complains). Maybe both methods should be public. Now I use PgDatabase object with two query calls BEGIN ... END it is safer. -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026 --- postgresql-7.2.1/src/interfaces/libpq++/pgtransdb.h.old Thu Jul 12 00:12:43 2001 +++ postgresql-7.2.1/src/interfaces/libpq++/pgtransdb.h Fri Jul 12 11:53:50 2002 @@ -32,8 +32,9 @@ // // **************************************************************** // This is the database access class that keeps an open -// transaction block during its lifetime. The block is ENDed when -// the object is destroyed. +// transaction block during its lifetime. The block is ABORTed when +// the object is destroyed, unless you call EndTransaction() method +// before destruction of the object. class DLLIMPORT PgTransaction : public PgDatabase { public: explicit PgTransaction(const char* conninfo); // use reasonable & environment defaults @@ -41,7 +42,6 @@ // explicit PgTransaction(const PgConnection&); ~PgTransaction(); // close connection and clean up -protected: ExecStatusType BeginTransaction(); ExecStatusType EndTransaction();
pgsql-interfaces by date: