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/core | rburnett | 12 Dec |