Thread: New problem with SET/autocommit

New problem with SET/autocommit

From
Bruce Momjian
Date:
> Remember how we make SET/SHOW/RESET _not_ be part of a multi-statement
> transaction when it is at the start of a transaction and autocommit is
> off?
> 
> Well, look at this:
>         
>         test=> SET random_page_cost = 2;
>         SET
>         test=> COMMIT;
>         WARNING:  COMMIT: no transaction in progress
>         COMMIT
> 
> The WARNING happens with SHOW and RESET too.  I wonder if we should
> suppress the WARNING of a COMMIT with no statements when autocommit is
> off.  This will probably be better for portability, though again, it is
> confusing.

[ Sorry, I deleted Tom's reply.]

Tom, you mentioned suppressing the WARNING on COMMIT of an empty
transaction would make it hard to know when you are in a transaction,
but I was suggesting suppressing the warning only when autocommit was
off, so by definition you are always in a transaction, sort of.  You are
in a transaction, but perhaps an empty one.  Should it be OK to issue a
COMMIT of an empty transaction when autocommit is off?

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073
 


Re: New problem with SET/autocommit

From
Tom Lane
Date:
Bruce Momjian <pgman@candle.pha.pa.us> writes:
> Tom, you mentioned suppressing the WARNING on COMMIT of an empty
> transaction would make it hard to know when you are in a transaction,
> but I was suggesting suppressing the warning only when autocommit was
> off, so by definition you are always in a transaction, sort of.  You are
> in a transaction, but perhaps an empty one.

I don't understand why you're labeling this behavior as a problem.
To me, it's the expected behavior, it's useful in debugging, and it
does not actually break anything.  (A WARNING is not an ERROR.  Though
I'd not object if you'd like to downgrade the begin/commit/rollback
wrong-state WARNINGs to NOTICEs, like they were before.)

> Should it be OK to issue a
> COMMIT of an empty transaction when autocommit is off?

We need to be careful about adding more and more special cases to
the transactional rules.  The more there are, the more confusing
and hard-to-maintain the system will be.  I don't think this proposed
special case is justified: it has no value except to suppress a notice.
Moreover, it's suppressing a notice in a context where the user
demonstrably has a misunderstanding of the transactional behavior.
Don't we usually throw notices to try to teach people what they
may be doing wrong?
        regards, tom lane


Re: New problem with SET/autocommit

From
Bruce Momjian
Date:
OK, I guess it isn't a problem.

---------------------------------------------------------------------------

Tom Lane wrote:
> Bruce Momjian <pgman@candle.pha.pa.us> writes:
> > Tom, you mentioned suppressing the WARNING on COMMIT of an empty
> > transaction would make it hard to know when you are in a transaction,
> > but I was suggesting suppressing the warning only when autocommit was
> > off, so by definition you are always in a transaction, sort of.  You are
> > in a transaction, but perhaps an empty one.
> 
> I don't understand why you're labeling this behavior as a problem.
> To me, it's the expected behavior, it's useful in debugging, and it
> does not actually break anything.  (A WARNING is not an ERROR.  Though
> I'd not object if you'd like to downgrade the begin/commit/rollback
> wrong-state WARNINGs to NOTICEs, like they were before.)
> 
> > Should it be OK to issue a
> > COMMIT of an empty transaction when autocommit is off?
> 
> We need to be careful about adding more and more special cases to
> the transactional rules.  The more there are, the more confusing
> and hard-to-maintain the system will be.  I don't think this proposed
> special case is justified: it has no value except to suppress a notice.
> Moreover, it's suppressing a notice in a context where the user
> demonstrably has a misunderstanding of the transactional behavior.
> Don't we usually throw notices to try to teach people what they
> may be doing wrong?
> 
>             regards, tom lane
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
> 
> http://archives.postgresql.org
> 

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073