List:Commits« Previous MessageNext Message »
From:rburnett Date:December 12 2006 2:17am
Subject:Connector/NET commit: r491 - in trunk: TestSuite mysqlclient/core
View as plain text  
Modified:
   trunk/TestSuite/CharacterSetTests.cs
   trunk/TestSuite/CommandBuilderTests.cs
   trunk/TestSuite/ConnectionTests.cs
   trunk/TestSuite/DataReaderTests.cs
   trunk/TestSuite/PerfMonTests.cs
   trunk/TestSuite/PoolingTests.cs
   trunk/TestSuite/Syntax2.cs
   trunk/TestSuite/TimeoutAndCancel.cs
   trunk/mysqlclient/core/CommandBuilder.cs
   trunk/mysqlclient/core/Connection.cs
Log:
1. adding some String.Format code to use the configured database instead of assuming it is 'test'.
2. adding a semicolon at the end of the csAdditions on the ones that are failing.  This was caused by a slight change in how BaseTest sets things up.


Modified: trunk/TestSuite/CharacterSetTests.cs
===================================================================
--- trunk/TestSuite/CharacterSetTests.cs	2006-12-11 21:58:34 UTC (rev 490)
+++ trunk/TestSuite/CharacterSetTests.cs	2006-12-12 02:17:38 UTC (rev 491)
@@ -33,7 +33,7 @@
 
 
 
-
+
 
 
 

Modified: trunk/TestSuite/CommandBuilderTests.cs
===================================================================
--- trunk/TestSuite/CommandBuilderTests.cs	2006-12-11 21:58:34 UTC (rev 490)
+++ trunk/TestSuite/CommandBuilderTests.cs	2006-12-12 02:17:38 UTC (rev 491)
@@ -89,18 +89,18 @@
             MySqlDataAdapter da = cb.DataAdapter;
             cb.ConflictOption = ConflictOption.OverwriteChanges;
 			DataTable dt = new DataTable();
-			da.Fill( dt );
-			Assert.AreEqual( 1, dt.Rows.Count );
+			da.Fill(dt);
+			Assert.AreEqual(1, dt.Rows.Count);
 
 			execSQL("UPDATE Test SET name='Test2' WHERE id=1");
 
 			dt.Rows[0]["name"] = "Test3";
-			Assert.AreEqual( 1, da.Update( dt ) );
+			Assert.AreEqual(1, da.Update(dt));
 
 			dt.Rows.Clear();
-			da.Fill( dt );
-			Assert.AreEqual( 1, dt.Rows.Count );
-			Assert.AreEqual( "Test3", dt.Rows[0]["name"] );			
+			da.Fill(dt);
+			Assert.AreEqual(1, dt.Rows.Count);
+			Assert.AreEqual("Test3", dt.Rows[0]["name"]);			
 		}
 
 		[Test]
@@ -187,7 +187,8 @@
 
 			conn.ChangeDatabase("mysql");
 
-			MySqlDataAdapter da = new MySqlDataAdapter("SELECT id, name FROM test.test", conn);
+			MySqlDataAdapter da = new MySqlDataAdapter(
+                String.Format("SELECT id, name FROM {0}.test", database), conn);
 			MySqlCommandBuilder cb = new MySqlCommandBuilder(da);
 			cb.ToString();  // keep the compiler happy
 			DataSet ds = new DataSet();
@@ -196,10 +197,10 @@
 			ds.Tables[0].Rows[0]["id"] = 4;
 			DataSet changes = ds.GetChanges();
 			da.Update(changes);
-			ds.Merge( changes );
+			ds.Merge(changes);
 			ds.AcceptChanges();
 			
-			conn.ChangeDatabase("test");
+			conn.ChangeDatabase(database);
 		}
 
 		/// <summary>

Modified: trunk/TestSuite/ConnectionTests.cs
===================================================================
--- trunk/TestSuite/ConnectionTests.cs	2006-12-11 21:58:34 UTC (rev 490)
+++ trunk/TestSuite/ConnectionTests.cs	2006-12-12 02:17:38 UTC (rev 491)
@@ -144,7 +144,7 @@
 			c.Open();
 			Assert.IsTrue(c.State == ConnectionState.Open);
 
-			Assert.AreEqual("test", c.Database.ToLower());
+			Assert.AreEqual(database, c.Database.ToLower());
 
 			c.ChangeDatabase("mysql");
 

Modified: trunk/TestSuite/DataReaderTests.cs
===================================================================
--- trunk/TestSuite/DataReaderTests.cs	2006-12-11 21:58:34 UTC (rev 490)
+++ trunk/TestSuite/DataReaderTests.cs	2006-12-12 02:17:38 UTC (rev 491)
@@ -818,7 +818,8 @@
         {
             execSQL("DROP TABLE IF EXISTS test");
             execSQL("CREATE TABLE test (id int, PRIMARY KEY(id))");
-            MySqlCommand cmd = new MySqlCommand("SHOW INDEX FROM test FROM test", conn);
+            MySqlCommand cmd = new MySqlCommand(
+                String.Format("SHOW INDEX FROM test FROM {0}", database), conn);
             MySqlDataReader reader = null;
             try
             {
@@ -858,5 +859,21 @@
 				Assert.IsNull(dt);
 			}
 		}
+
+        /// <summary>
+        /// Bug #24765  	Retrieving empty fields results in check for isDBNull
+        /// </summary>
+        [Test]
+        public void IsDbNullOnNonNullFields()
+        {
+            execSQL("INSERT INTO test (id, name) VALUES (1, '')");
+
+            MySqlCommand cmd = new MySqlCommand("SELECT * FROM test", conn);
+            using (MySqlDataReader reader = cmd.ExecuteReader())
+            {
+                Assert.IsTrue(reader.Read());
+                Assert.IsFalse(reader.IsDBNull(1));
+            }
+        }
 	}
 }

Modified: trunk/TestSuite/PerfMonTests.cs
===================================================================
--- trunk/TestSuite/PerfMonTests.cs	2006-12-11 21:58:34 UTC (rev 490)
+++ trunk/TestSuite/PerfMonTests.cs	2006-12-12 02:17:38 UTC (rev 491)
@@ -38,7 +38,7 @@
 		[TestFixtureSetUp]
 		public void FixtureSetup()
 		{
-			csAdditions = ";pooling=false;use performance monitor=true";
+			csAdditions = ";pooling=false;use performance monitor=true;";
 			Open();
 			execSQL("DROP TABLE IF EXISTS Test; CREATE TABLE Test (id INT, name VARCHAR(100))");
 		}

Modified: trunk/TestSuite/PoolingTests.cs
===================================================================
--- trunk/TestSuite/PoolingTests.cs	2006-12-11 21:58:34 UTC (rev 490)
+++ trunk/TestSuite/PoolingTests.cs	2006-12-12 02:17:38 UTC (rev 491)
@@ -33,7 +33,7 @@
 	{
 		public PoolingTests() : base()
 		{
-			csAdditions = ";pooling=true; connection reset=true";
+			csAdditions = ";pooling=true; connection reset=true;";
 		}
 
 		[TestFixtureSetUp]

Modified: trunk/TestSuite/Syntax2.cs
===================================================================
--- trunk/TestSuite/Syntax2.cs	2006-12-11 21:58:34 UTC (rev 490)
+++ trunk/TestSuite/Syntax2.cs	2006-12-12 02:17:38 UTC (rev 491)
@@ -101,5 +101,78 @@
             cmd.ExecuteScalar();
             Assert.AreEqual(-1, cmd.LastInsertedId);
         }
+
+        [Category("NotWorking")]
+        [Test]
+        public void TestCase()
+        {
+            string importQuery = "SET FOREIGN_KEY_CHECKS = 1;DELETE FROM Category " +
+                "WHERE id=\'0205342903\';SET FOREIGN_KEY_CHECKS = 0;INSERT INTO Category " +
+                "VALUES(\'d0450f050a0dfd8e00e6da7bda3bb07e\',\'0205342903\',\'000000000000000 " +
+                "00000000000000000\',\'\',\'0\');INSERT INTO Attribute " +
+                "VALUES(\'d0450f050a0dfd8e00e6da7b00dfa3c5\',\'d0450f050a0dfd8e00e6da7bda3bb0 " +
+                "7e\',\'eType\',\'machine\',null);SET FOREIGN_KEY_CHECKS = 1;";
+            string deleteQuery = "SET FOREIGN_KEY_CHECKS=1;DELETE FROM Attribute " +
+                "WHERE foreignuuid=\'d0450f050a0dfd8e00e6da7bda3bb07e\' AND " +
+                "name=\'eType\'";
+            string insertQuery = "SET FOREIGN_KEY_CHECKS = 0;INSERT INTO Attribute " +
+                "VALUES(\'d0563ba70a0dfd8e01df43e22395b352\',\'d0450f050a0dfd8e00e6da7bda3bb0 " +
+                "7e\',\'eType\',\'machine\',null);SET FOREIGN_KEY_CHECKS = 1";
+            string updateQuery = "SET FOREIGN_KEY_CHECKS = 1;DELETE FROM Attribute " +
+                "WHERE foreignuuid=\'d0450f050a0dfd8e00e6da7bda3bb07e\' AND " + 
+                "name=\'eType\';SET FOREIGN_KEY_CHECKS = 0;INSERT INTO Attribute " + 
+                "VALUES(\'d0563ba70a0dfd8e01df43e22395b352\',\'d0450f050a0dfd8e00e6da7bda3bb0 " +
+                "7e\',\'eType\',\'machine\',null);SET FOREIGN_KEY_CHECKS = 1;";
+            string bugQuery = "SELECT name,value FROM Attribute WHERE " +
+                "foreignuuid=\'d0450f050a0dfd8e00e6da7bda3bb07e\'";
+
+            execSQL("SET FOREIGN_KEY_CHECKS=0");
+            execSQL("DROP TABLE IF EXISTS Attribute");
+            execSQL("CREATE TABLE IF NOT EXISTS Attribute (uuid char(32) NOT NULL," +
+                "foreignuuid char(32), name character varying(254), value character varying(254)," +
+                "fid integer, PRIMARY KEY (uuid), INDEX foreignuuid (foreignuuid), " +
+                "INDEX name (name(16)), INDEX value (value(8)), CONSTRAINT `attribute_fk_1` " +
+                "FOREIGN KEY (`foreignuuid`) REFERENCES `Category` (`uuid`) ON DELETE CASCADE" +
+                ") CHARACTER SET utf8 ENGINE=InnoDB;");
+
+            execSQL("DROP TABLE IF EXISTS Category");
+            execSQL("CREATE TABLE IF NOT EXISTS Category (uuid char(32) NOT NULL," +
+                "id character varying(254), parentuuid char(32), name character varying(254)," +
+                "sort integer, PRIMARY KEY (uuid), INDEX parentuuid (parentuuid), INDEX id (id)," +
+                "CONSTRAINT `parent_fk_1` FOREIGN KEY (`parentuuid`) REFERENCES `Category` " +
+                "(`uuid`) ON DELETE CASCADE) CHARACTER SET utf8 ENGINE=InnoDB;");
+            execSQL("SET FOREIGN_KEY_CHECKS=1");
+
+            try
+            {
+                conn.InfoMessage += new MySqlInfoMessageEventHandler(conn_InfoMessage);
+                MySqlCommand cmd = new MySqlCommand(importQuery, conn);
+                cmd.ExecuteNonQuery();
+
+                for (int i = 0; i <= 5000; i++)
+                {
+                    cmd.CommandText = deleteQuery;
+                    cmd.ExecuteNonQuery();
+
+                    cmd.CommandText = insertQuery;
+                    cmd.ExecuteNonQuery();
+
+                    cmd.CommandText = bugQuery;
+                    using (MySqlDataReader reader = cmd.ExecuteReader())
+                    {
+                        reader.Close();
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                Assert.Fail(ex.Message);
+            }
+        }
+
+        void conn_InfoMessage(object sender, MySqlInfoMessageEventArgs args)
+        {
+            throw new Exception("The method or operation is not implemented.");
+        }
     }
 }

Modified: trunk/TestSuite/TimeoutAndCancel.cs
===================================================================
--- trunk/TestSuite/TimeoutAndCancel.cs	2006-12-11 21:58:34 UTC (rev 490)
+++ trunk/TestSuite/TimeoutAndCancel.cs	2006-12-12 02:17:38 UTC (rev 491)
@@ -79,6 +79,48 @@
             cmd.Cancel();
         }
 
+        int stateChangeCount;
+        [Test]
+        public void WaitTimeoutExpiring()
+        {
+            MySqlConnection c = new MySqlConnection(GetConnectionString(true));
+            c.Open();
+            c.StateChange += new StateChangeEventHandler(c_StateChange);
+
+            // set the session wait timeout on this new connection
+            MySqlCommand cmd = new MySqlCommand("SET SESSION interactive_timeout=10", c);
+            cmd.ExecuteNonQuery();
+            cmd.CommandText = "SET SESSION wait_timeout=10";
+            cmd.ExecuteNonQuery();
+
+            stateChangeCount = 0;
+            // now wait 10 seconds
+            System.Threading.Thread.Sleep(15000);
+
+            try
+            {
+                cmd.CommandText = "SELECT now()";
+                object date = cmd.ExecuteScalar();
+            }
+            catch (Exception) { }
+            Assert.AreEqual(1, stateChangeCount);
+            Assert.AreEqual(ConnectionState.Closed, c.State);
+
+            c = new MySqlConnection(GetConnectionString(true));
+            c.Open();
+            cmd = new MySqlCommand("SELECT now() as thetime, database() as db", c);
+            using (MySqlDataReader r = cmd.ExecuteReader())
+            {
+                Assert.IsTrue(r.Read());
+            }
+        }
+
+        void c_StateChange(object sender, StateChangeEventArgs e)
+        {
+            stateChangeCount++;
+        }
+
+
         [Category("5.0")]
         [Test]
         [Category("NotWorking")]

Modified: trunk/mysqlclient/core/CommandBuilder.cs
===================================================================
--- trunk/mysqlclient/core/CommandBuilder.cs	2006-12-11 21:58:34 UTC (rev 490)
+++ trunk/mysqlclient/core/CommandBuilder.cs	2006-12-12 02:17:38 UTC (rev 491)
@@ -90,7 +90,7 @@
 		public static void DeriveParameters(MySqlCommand command)
 		{
 			if (!command.Connection.driver.Version.isAtLeast(5,0,0))
-				throw new MySqlException("DeriveParameters is not supported on versions " +
+				throw new MySqlException("DeriveParameters is not supported on MySQL versions " +
 					"prior to 5.0");
 
             // retrieve the proc definitino from the cache.

Modified: trunk/mysqlclient/core/Connection.cs
===================================================================
--- trunk/mysqlclient/core/Connection.cs	2006-12-11 21:58:34 UTC (rev 490)
+++ trunk/mysqlclient/core/Connection.cs	2006-12-12 02:17:38 UTC (rev 491)
@@ -27,6 +27,7 @@
 using System.Globalization;
 using MySql.Data.Common;
 using System.Diagnostics;
+using System.Windows.Forms;
 
 namespace MySql.Data.MySqlClient
 {
@@ -520,6 +521,13 @@
 		/// <returns>A <see cref="DataTable"/> that contains schema information.</returns>
 		public override DataTable GetSchema(string collectionName, string[] restrictionValues)
 		{
+/*            string msg = String.Format("collection = {0}", collectionName);
+            foreach (string s in restrictionValues)
+            {
+                msg += String.Format(" res={0}", s);
+            }
+            MessageBox.Show(msg);
+            */
 			if (collectionName == null)
 				collectionName = SchemaProvider.MetaCollection;
 			return schemaProvider.GetSchema(collectionName, restrictionValues);

Thread
Connector/NET commit: r491 - in trunk: TestSuite mysqlclient/corerburnett12 Dec