Обсуждение: Possible bug in 7.4.5
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi,
I'm using 7.4.5 on a test platform and had a weird behaviour. Here is the
case:
test=# CREATE TABLE t1 (s_no int2 PRIMARY KEY,a varchar(10));
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "t1_pkey"
for table "t1"
test=# CREATE TABLE t2 (s_no int2, x char(2), CONSTRAINT
s_no_exists FOREIGN KEY(s_no) REFERENCES t1 ON UPDATE CASCADE);
test=# INSERT INTO t1 VALUES ('20','test1');
test=# INSERT INTO t1 VALUES ('21','test2');
test=# BEGIN ;
test=# INSERT INTO t2 VALUES ('20','as');
test=# COMM;
ERROR: syntax error at or near "COMM" at character 1
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
test=# COMMIT ;
COMMIT
^^^^^^^^^^^^^^^
Shouldn't it say "ERROR: current transaction is aborted, commands
ignored until end of transaction block" after the commit?
Since COMMIT was executed 'successfully', I thought that t2 has a row
inside, but:
test=# SELECT * from t2 ;
s_no | x
- ----------+---
(0 rows)
Am I missing something, or is it a bug? I can't reproduce it in 8.0beta2.
Regards,
- --
Devrim GUNDUZ
devrim~gunduz.org devrim.gunduz~linux.org.tr
http://www.tdmsoft.com
http://www.gunduz.org
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)
iD8DBQFBY7aKtl86P3SPfQ4RAqUjAKDozbghdFKr0nHoO6uHZSoYQcl9FwCdEbtP
uhbCpVAqfhzijJG+g/XDO1Q=
=ROu9
-----END PGP SIGNATURE-----
On Wed, 6 Oct 2004, Devrim GUNDUZ wrote: > [I say COMMIT on a failed transaction and it looks successful, but isn't.] This is a long standing behavior. Internally a ROLLBACK happens, but commit is reported back to the client. This has only changed in 8.0 to reflect what actually happened. Kris Jurka
Devrim GUNDUZ <devrim@gunduz.org> writes:
> Am I missing something, or is it a bug? I can't reproduce it in 8.0beta2.
8.0 actually behaves the same way: the COMMIT gets you out of the
transaction block. It just tells you that it's treating it as a
rollback:
regression=# comm;
ERROR: syntax error at or near "comm" at character 1
LINE 1: comm;
^
regression=# commit;
ROLLBACK
regression=#
whereas prior versions did the rollback but still reported the command
tag as COMMIT. AFAIR, Postgres has always acted that way.
regards, tom lane
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi,
On Wed, 6 Oct 2004, Tom Lane wrote:
> Devrim GUNDUZ <devrim@gunduz.org> writes:
>> Am I missing something, or is it a bug? I can't reproduce it in 8.0beta2.
<snip>
> whereas prior versions did the rollback but still reported the command
> tag as COMMIT. AFAIR, Postgres has always acted that way.
Ok got it, thanks.
Do we still need a backported fix? Software developers (PHP developers,
for example) may get confused from the error message they get.
Regards,
- --
Devrim GUNDUZ
devrim~gunduz.org devrim.gunduz~linux.org.tr
http://www.tdmsoft.com
http://www.gunduz.org
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)
iD8DBQFBZANGtl86P3SPfQ4RAtfnAJ0R64Y7/2yZqINTlNdgSI1mExg6vACg0XTb
cSA9IIv5Dng8k+ot3ylIQEw=
=/ykx
-----END PGP SIGNATURE-----
Devrim GUNDUZ <devrim@gunduz.org> writes:
> Do we still need a backported fix?
No. This is a behavioral change of a *very* longstanding behavior.
It's going in at 8.0, not 7.4.something.
regards, tom lane