Received: from candle.pha.pa.us (216-55-132-35.dsl.san-diego.abac.net [216.55.132.35]) by postgresql.org (Postfix) with ESMTP id 818AF474E71; Fri, 12 Jul 2002 21:47:15 -0400 (EDT) Received: (from pgman@localhost) by candle.pha.pa.us (8.11.6/8.10.1) id g6D1lDQ00896; Fri, 12 Jul 2002 21:47:13 -0400 (EDT) From: Bruce Momjian Message-Id: <200207130147.g6D1lDQ00896@candle.pha.pa.us> Subject: Re: [BUGS] Bug #708: PgTransaction class is broken since 7.2 In-Reply-To: <20020712100351.GR29639@oryl.man.torun.pl> To: Piotr Klaban Date: Fri, 12 Jul 2002 21:47:13 -0400 (EDT) Cc: PostgreSQL-patches , PostgreSQL-interfaces X-Mailer: ELM [version 2.4ME+ PL99 (25)] MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=ELM1026524833-20484-1_ Content-Transfer-Encoding: 7bit X-Archive-Number: 200207/79 X-Sequence-Number: 2888 --ELM1026524833-20484-1_ Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII 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 --ELM1026524833-20484-1_ Content-Transfer-Encoding: 7bit Content-Type: text/plain Content-Disposition: inline; filename="/bjm/9" 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 --ELM1026524833-20484-1_ Content-Transfer-Encoding: 7bit Content-Type: text/plain Content-Disposition: inline; filename="/bjm/diff2" --- 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(); --ELM1026524833-20484-1_--