Re: [HACKERS] Connection Pools and DISCARD ALL - Mailing list pgsql-patches

From Bruce Momjian
Subject Re: [HACKERS] Connection Pools and DISCARD ALL
Date
Msg-id 200711090250.lA92ojX11076@momjian.us
Whole thread Raw
Responses Re: [HACKERS] Connection Pools and DISCARD ALL  (Simon Riggs <simon@2ndquadrant.com>)
Re: [HACKERS] Connection Pools and DISCARD ALL  (Bruce Momjian <bruce@momjian.us>)
List pgsql-patches
Tom Lane wrote:
> Andrew Dunstan <andrew@dunslane.net> writes:
> > Could we maybe have some flavor of ROLLBACK that doesn't issue a warning
> > if no transaction is in progress? There is precedent for this sort of
> > facility - DROP ... IF EXISTS.
>
> Something that would actually be doable for 8.3 would be to downgrade
> this particular WARNING to a NOTICE.  A DBA who hasn't got
> log_min_messages set higher than NOTICE hasn't really got a lot of room
> to whine about bulky logs.

I have developed the attached patch to implement this.  I assume we want
to change ABORT outside a transaction from WARNING to NOTICE, but not
COMMIT.

--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://postgres.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +
Index: src/backend/access/transam/xact.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/access/transam/xact.c,v
retrieving revision 1.251
diff -c -c -r1.251 xact.c
*** src/backend/access/transam/xact.c    11 Sep 2007 03:28:05 -0000    1.251
--- src/backend/access/transam/xact.c    9 Nov 2007 02:45:30 -0000
***************
*** 3025,3031 ****
               * 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;
--- 3025,3031 ----
               * default state.
               */
          case TBLOCK_STARTED:
!             ereport(NOTICE,
                      (errcode(ERRCODE_NO_ACTIVE_SQL_TRANSACTION),
                       errmsg("there is no transaction in progress")));
              s->blockState = TBLOCK_ABORT_PENDING;
Index: src/test/regress/expected/errors.out
===================================================================
RCS file: /cvsroot/pgsql/src/test/regress/expected/errors.out,v
retrieving revision 1.52
diff -c -c -r1.52 errors.out
*** src/test/regress/expected/errors.out    15 Apr 2006 17:45:46 -0000    1.52
--- src/test/regress/expected/errors.out    9 Nov 2007 02:45:31 -0000
***************
*** 116,122 ****

  -- not in a xact
  abort;
! WARNING:  there is no transaction in progress
  -- not in a xact
  end;
  WARNING:  there is no transaction in progress
--- 116,122 ----

  -- not in a xact
  abort;
! NOTICE:  there is no transaction in progress
  -- not in a xact
  end;
  WARNING:  there is no transaction in progress

pgsql-patches by date:

Previous
From: Bruce Momjian
Date:
Subject: Fix for stop words in thesaurus file
Next
From: Jan Urbański
Date:
Subject: a tsearch2 (8.2.4) dictionary that only filters out stopwords