On Wed, Oct 27, 2004 at 09:29:21PM -0400, Tom Lane wrote:
> Alvaro Herrera <[EMAIL PROTECTED]> writes:
> > On Wed, Oct 27, 2004 at 04:21:53PM -0400, Tom Lane wrote:
> >> On the other hand, it's also a pretty minor issue, and if it turns out
> >> to require a lot of code rejiggering to make it do that, I'd not think
> >> it worthwhile.
> 
> > Patch attached.  It passes the regression tests.  It shouldn't have
> > secondary effects, but please test.
> 
> Wouldn't it be better to just stay in TBLOCK_STARTED state, as if the
> COMMIT were just some random utility command?

It's the same thing, because CommitTransactionCommand acts identically
either way.  I changed it anyway because it seems simpler.

-- 
Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
Licensee shall have no right to use the Licensed Software
for productive or commercial use. (Licencia de StarOffice 6.0 beta)
Index: src/backend/access/transam/xact.c
===================================================================
RCS file: /home/alvherre/cvs/pgsql/src/backend/access/transam/xact.c,v
retrieving revision 1.192
diff -c -r1.192 xact.c
*** src/backend/access/transam/xact.c   16 Oct 2004 18:57:22 -0000      1.192
--- src/backend/access/transam/xact.c   30 Oct 2004 18:18:16 -0000
***************
*** 2537,2552 ****
                        break;
  
                        /*
!                        * here, the user issued COMMIT when not inside a transaction.
!                        * Issue a WARNING and go to abort state.  The upcoming call
!                        * to CommitTransactionCommand() will then put us back into
!                        * the default state.
                         */
                case TBLOCK_STARTED:
                        ereport(WARNING,
                                        (errcode(ERRCODE_NO_ACTIVE_SQL_TRANSACTION),
                                         errmsg("there is no transaction in 
progress")));
!                       s->blockState = TBLOCK_ABORT_PENDING;
                        break;
  
                        /* These cases are invalid. */
--- 2537,2552 ----
                        break;
  
                        /*
!                        * The user issued COMMIT when not inside a transaction.  
Issue a
!                        * WARNING, staying in TBLOCK_STARTED state.  The upcoming 
call to
!                        * CommitTransactionCommand() will then close the transaction 
and
!                        * put us back into the default state.
                         */
                case TBLOCK_STARTED:
                        ereport(WARNING,
                                        (errcode(ERRCODE_NO_ACTIVE_SQL_TRANSACTION),
                                         errmsg("there is no transaction in 
progress")));
!                       result = true;
                        break;
  
                        /* These cases are invalid. */
---------------------------(end of broadcast)---------------------------
TIP 7: don't forget to increase your free space map settings

Reply via email to