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();