List:Commits« Previous MessageNext Message »
From:rburnett Date:March 22 2007 10:16pm
Subject:Connector/NET commit: r647 - in branches/5.0: . Driver/Source TestSuite
View as plain text  
Modified:
   branches/5.0/CHANGES
   branches/5.0/Driver/Source/Connection.cs
   branches/5.0/TestSuite/Transactions.cs
Log:
Bug #27289 Transaction is not rolledback when connection close 

Added code to rollback any pending txn inside Close()


Modified: branches/5.0/CHANGES
===================================================================
--- branches/5.0/CHANGES	2007-03-22 19:57:14 UTC (rev 646)
+++ branches/5.0/CHANGES	2007-03-22 21:16:36 UTC (rev 647)
@@ -3,6 +3,7 @@
   Bugs fixed
   ----------
   Bug #27269 MySqlConnection.Clone does not mimic SqlConnection.Clone behaviour 
+  Bug #27289 Transaction is not rolledback when connection close 
   
   Other changes
   -------------

Modified: branches/5.0/Driver/Source/Connection.cs
===================================================================
--- branches/5.0/Driver/Source/Connection.cs	2007-03-22 19:57:14 UTC (rev 646)
+++ branches/5.0/Driver/Source/Connection.cs	2007-03-22 21:16:36 UTC (rev 647)
@@ -477,6 +477,12 @@
 			if (dataReader != null)
 				dataReader.Close();
 
+            if ((driver.ServerStatus & ServerStatusFlags.InTransaction) != 0)
+            {
+                MySqlTransaction t = new MySqlTransaction(this,
IsolationLevel.Unspecified);
+                t.Rollback();
+            }
+
 			if (settings.Pooling)
 				MySqlPoolManager.ReleaseConnection(driver);
 			else

Modified: branches/5.0/TestSuite/Transactions.cs
===================================================================
--- branches/5.0/TestSuite/Transactions.cs	2007-03-22 19:57:14 UTC (rev 646)
+++ branches/5.0/TestSuite/Transactions.cs	2007-03-22 21:16:36 UTC (rev 647)
@@ -143,6 +143,32 @@
 
 #endif
 
+        /// <summary>
+        /// Bug #27289 Transaction is not rolledback when connection close 
+        /// </summary>
+        [Test]
+        public void RollingBackOnClose()
+        {
+            execSQL("DROP TABLE IF EXISTS test");
+            execSQL("CREATE TABLE test (id INT) TYPE=InnoDB");
+
+            string connStr = GetConnectionString(true) + ";pooling=true;";
+            MySqlConnection c = new MySqlConnection(connStr);
+            c.Open();
+            MySqlCommand cmd = new MySqlCommand("INSERT INTO test VALUES (1)", c);
+            MySqlTransaction tx = c.BeginTransaction();
+            cmd.ExecuteNonQuery();
+            c.Close();
+
+            MySqlConnection c2 = new MySqlConnection(connStr);
+            c2.Open();
+            MySqlCommand cmd2 = new MySqlCommand("SELECT COUNT(*) from test", c2);
+            MySqlTransaction tx2 = c2.BeginTransaction();
+            object count = cmd2.ExecuteScalar();
+            c2.Close();
+            Assert.AreEqual(0, count);
+        }
+
         /// <summary
         /// Bug #22042 mysql-connector-net-5.0.0-alpha BeginTransaction 
         /// </summary>

Thread
Connector/NET commit: r647 - in branches/5.0: . Driver/Source TestSuiterburnett22 Mar