Here's the message that wsa sent from the wrong address: ----- Forwarded message from Tyler MacDonald <[EMAIL PROTECTED]> -----
From: Tyler MacDonald <[EMAIL PROTECTED]> To: Bojan Smojver <[EMAIL PROTECTED]> Cc: dev@apr.apache.org Subject: Re: [PATCH]: Introduce APR DBD transaction mode Bojan Smojver <[EMAIL PROTECTED]> wrote: > Perhaps. However, it would seem that not all databases behave the same > on error mid-transaction. Compare SQLite3 with PostgreSQL: SQLite3's transactions leave a bit to be desired.. and on that note, be very, very wary of MySQL as well. It allows a transaction to be committed even if there were errors during the transaction (pasted below), and it also will AUTOMATICALLY COMMIT A TRANSACTION IF YOU DO A CREATE TABLE. That part is EVIL, EVIL, EVIL!!!!!! (sorry, venting...) But yeah. Because of implicit commits in MySQL (see http://dev.mysql.com/doc/refman/5.1/en/implicit-commit.html), any sort of tracking of a transaction is pretty much moot under MySQL. This drove me mad when I was working on DBIx::Transaction (http://search.cpan.org/~CRAKRJACK/DBIx-Transaction-0.008) and DBIx::Migration::Directories (http://search.cpan.org/~CRAKRJACK/DBIx-Migration-Directories-0.05). Maybe if MySQL is detected APR should refuse to support transactions and tell the end user to find a non-broken database engine. :-) Cheers, Tyler mysql> begin work; Query OK, 0 rows affected (0.00 sec) mysql> insert into foo values (1); Query OK, 1 row affected (0.00 sec) mysql> insert into foo values (1); Query OK, 1 row affected (0.00 sec) mysql> invert into foo values (1); ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'invert into foo values (1)' at line 1 mysql> commit; Query OK, 0 rows affected (0.01 sec) mysql> select * from foo; +------+ | bar | +------+ | 1 | | 1 | +------+ 2 rows in set (0.00 sec) ----- End forwarded message -----