List:Commits« Previous MessageNext Message »
From:rburnett Date:January 17 2007 11:16pm
Subject:Connector/NET commit: r559 - in branches/5.0: . Driver/Source TestSuite
View as plain text  
Modified:
   branches/5.0/CHANGES
   branches/5.0/Driver/Source/Field.cs
   branches/5.0/TestSuite/LanguageTests.cs
Log:
Bug #25651 SELECT does not work properly when WHERE contains UTF-8 characters 

Fixed a problem where VarString parameters were not being treated as strings.

Modified: branches/5.0/CHANGES
===================================================================
--- branches/5.0/CHANGES	2007-01-17 20:38:42 UTC (rev 558)
+++ branches/5.0/CHANGES	2007-01-17 22:16:25 UTC (rev 559)
@@ -7,6 +7,7 @@
   Bug #25614 After connection is closed, and opened again UTF-8 characters are not read
well 
   Bug #25625 Crashes when calling with CommandType set to StoredProcedure 
   Bug #25458 Opening connection hangs 
+  Bug #25651 SELECT does not work properly when WHERE contains UTF-8 characters   
   
   Other changes
   -------------

Modified: branches/5.0/Driver/Source/Field.cs
===================================================================
--- branches/5.0/Driver/Source/Field.cs	2007-01-17 20:38:42 UTC (rev 558)
+++ branches/5.0/Driver/Source/Field.cs	2007-01-17 22:16:25 UTC (rev 559)
@@ -225,6 +225,7 @@
 				case MySqlDbType.Set:
 				case MySqlDbType.Enum:
 				case MySqlDbType.String:
+                case MySqlDbType.VarString:
 				case MySqlDbType.VarChar: return new MySqlString(type, true);
 				case MySqlDbType.Blob:
 				case MySqlDbType.MediumBlob:

Modified: branches/5.0/TestSuite/LanguageTests.cs
===================================================================
--- branches/5.0/TestSuite/LanguageTests.cs	2007-01-17 20:38:42 UTC (rev 558)
+++ branches/5.0/TestSuite/LanguageTests.cs	2007-01-17 22:16:25 UTC (rev 559)
@@ -27,325 +27,326 @@
 
 namespace MySql.Data.MySqlClient.Tests
 {
-	[TestFixture]
-	public class LanguageTests : BaseTest
-	{
-		[TestFixtureSetUp]
-		public void FixtureSetup()
-		{
-			Open();
-		}
+    [TestFixture]
+    public class LanguageTests : BaseTest
+    {
+        [TestFixtureSetUp]
+        public void FixtureSetup()
+        {
+            csAdditions += ";logging=true;";
+            Open();
+        }
 
-		[TestFixtureTearDown]
-		public void FixtureTeardown()
-		{
-			Close();
-		}
+        [TestFixtureTearDown]
+        public void FixtureTeardown()
+        {
+            Close();
+        }
 
-		[Test]
-		[Category("4.1")]
-		public void Unicode()
-		{
-			execSQL( "DROP TABLE IF EXISTS Test" );
-			execSQL( "CREATE TABLE Test (u2 varchar(255) CHARACTER SET ucs2)");
+        [Test]
+        [Category("4.1")]
+        public void Unicode()
+        {
+            execSQL("DROP TABLE IF EXISTS Test");
+            execSQL("CREATE TABLE Test (u2 varchar(255) CHARACTER SET ucs2)");
 
-			MySqlConnection c = new MySqlConnection( conn.ConnectionString + ";charset=utf8" );
-			c.Open();
-			
-			MySqlCommand cmd = new MySqlCommand( "INSERT INTO Test VALUES (
CONVERT('困巫忘否役' using ucs2))", c);
-			cmd.ExecuteNonQuery();
+            MySqlConnection c = new MySqlConnection(conn.ConnectionString +
";charset=utf8");
+            c.Open();
 
-			cmd.CommandText = "SELECT * FROM Test";
-			MySqlDataReader reader = null;
-			
-			try 
-			{
-				reader = cmd.ExecuteReader();
-				reader.Read();
-				string s1 = reader.GetString(0);
-				Assert.AreEqual( "困巫忘否役", s1 );
-			}
-			catch (Exception ex) 
-			{
-				Assert.Fail( ex.Message );
-			}
-			finally 
-			{
-				if (reader != null) reader.Close();
-				c.Close();
-			}
-		}
+            MySqlCommand cmd = new MySqlCommand("INSERT INTO Test VALUES (
CONVERT('困巫忘否役' using ucs2))", c);
+            cmd.ExecuteNonQuery();
 
-		/// <summary>
-		/// Bug #13806  	Does not support Code Page 932
-		/// </summary>
-		[Test]
-		public void CP932()
-		{
-			MySqlConnection c = new MySqlConnection(GetConnectionString(true) + ";charset=cp932");
-			c.Open();
+            cmd.CommandText = "SELECT * FROM Test";
+            MySqlDataReader reader = null;
 
-			try 
-			{
-				MySqlCommand cmd = new MySqlCommand("SELECT '涯割晦叶角'", c);
-				string s = (string)cmd.ExecuteScalar();
-				Assert.AreEqual("涯割晦叶角", s);
-			}
-			catch (Exception ex) 
-			{
-				Assert.Fail(ex.Message);
-			}
-			finally 
-			{
-				if (c != null)
-					c.Close();
-			}
-		}
+            try
+            {
+                reader = cmd.ExecuteReader();
+                reader.Read();
+                string s1 = reader.GetString(0);
+                Assert.AreEqual("困巫忘否役", s1);
+            }
+            catch (Exception ex)
+            {
+                Assert.Fail(ex.Message);
+            }
+            finally
+            {
+                if (reader != null) reader.Close();
+                c.Close();
+            }
+        }
 
-		[Test]
-		[Category("4.1")]
-		public void UTF8() 
-		{
-			execSQL("DROP TABLE IF EXISTS Test");
-			execSQL("CREATE TABLE Test (id int, name VARCHAR(200) CHAR SET utf8)");
+        /// <summary>
+        /// Bug #13806  	Does not support Code Page 932
+        /// </summary>
+        [Test]
+        public void CP932()
+        {
+            MySqlConnection c = new MySqlConnection(GetConnectionString(true) +
";charset=cp932");
+            c.Open();
 
-			MySqlConnection c = new MySqlConnection( conn.ConnectionString + ";charset=utf8" );
-			c.Open();
-			
-			MySqlCommand cmd = new MySqlCommand( "INSERT INTO Test VALUES(1, 'ЁЄЉҖҚ')", c);
//russian
-			cmd.ExecuteNonQuery();
+            try
+            {
+                MySqlCommand cmd = new MySqlCommand("SELECT '涯割晦叶角'", c);
+                string s = (string)cmd.ExecuteScalar();
+                Assert.AreEqual("涯割晦叶角", s);
+            }
+            catch (Exception ex)
+            {
+                Assert.Fail(ex.Message);
+            }
+            finally
+            {
+                if (c != null)
+                    c.Close();
+            }
+        }
 
-			cmd.CommandText = "INSERT INTO Test VALUES(2, '兣冘凥凷冋')";	// simplified
Chinese
-			cmd.ExecuteNonQuery();
+        [Test]
+        [Category("4.1")]
+        public void UTF8()
+        {
+            execSQL("DROP TABLE IF EXISTS Test");
+            execSQL("CREATE TABLE Test (id int, name VARCHAR(200) CHAR SET utf8)");
 
-			cmd.CommandText = "INSERT INTO Test VALUES(3, '困巫忘否役')";	// traditional
Chinese
-			cmd.ExecuteNonQuery();
+            MySqlConnection c = new MySqlConnection(conn.ConnectionString +
";charset=utf8");
+            c.Open();
 
-			cmd.CommandText = "INSERT INTO Test VALUES(4, '涯割晦叶角')";	// Japanese
-			cmd.ExecuteNonQuery();
+            MySqlCommand cmd = new MySqlCommand("INSERT INTO Test VALUES(1,
'ЁЄЉҖҚ')", c); //russian
+            cmd.ExecuteNonQuery();
 
-			cmd.CommandText = "INSERT INTO Test VALUES(5, 'ברחפע')";		// Hebrew
-			cmd.ExecuteNonQuery();
+            cmd.CommandText = "INSERT INTO Test VALUES(2, '兣冘凥凷冋')";	//
simplified Chinese
+            cmd.ExecuteNonQuery();
 
-			cmd.CommandText = "INSERT INTO Test VALUES(6, 'ψόβΩΞ')";		// Greek
-			cmd.ExecuteNonQuery();
+            cmd.CommandText = "INSERT INTO Test VALUES(3, '困巫忘否役')";	//
traditional Chinese
+            cmd.ExecuteNonQuery();
 
-			cmd.CommandText = "INSERT INTO Test VALUES(7,
'þðüçöÝÞÐÜÇÖ')";	// Turkish
-			cmd.ExecuteNonQuery();
+            cmd.CommandText = "INSERT INTO Test VALUES(4, '涯割晦叶角')";	//
Japanese
+            cmd.ExecuteNonQuery();
 
-			cmd.CommandText = "INSERT INTO Test VALUES(8, 'ฅๆษ')";			// Thai
-			cmd.ExecuteNonQuery();
-			
-			cmd.CommandText = "SELECT * FROM Test";
-			MySqlDataReader reader = null;
-			try 
-			{
-				reader = cmd.ExecuteReader();
-				reader.Read();
-				Assert.AreEqual( "ЁЄЉҖҚ", reader.GetString(1) );
-				reader.Read();
-				Assert.AreEqual( "兣冘凥凷冋", reader.GetString(1) );
-				reader.Read();
-				Assert.AreEqual( "困巫忘否役", reader.GetString(1) );
-				reader.Read();
-				Assert.AreEqual( "涯割晦叶角", reader.GetString(1) );
-				reader.Read();
-				Assert.AreEqual( "ברחפע", reader.GetString(1) );
-				reader.Read();
-				Assert.AreEqual( "ψόβΩΞ", reader.GetString(1) );
-				reader.Read();
-				Assert.AreEqual(
"þðüçöÝÞÐÜÇÖ",
reader.GetString(1) );
-				reader.Read();
-				Assert.AreEqual( "ฅๆษ", reader.GetString(1) );
-			}
-			catch (Exception ex) 
-			{
-				Assert.Fail( ex.Message );
-			}
-			finally 
-			{
-				if (reader != null) reader.Close();
-				c.Close();
-			}
-		}
+            cmd.CommandText = "INSERT INTO Test VALUES(5, 'ברחפע')";		// Hebrew
+            cmd.ExecuteNonQuery();
 
-		[Test]
-		[Category("4.1")]
-		public void UTF8PreparedAndUsingParameters() 
-		{
-			execSQL("DROP TABLE IF EXISTS Test");
-			execSQL("CREATE TABLE Test (name VARCHAR(200) CHAR SET utf8)");
+            cmd.CommandText = "INSERT INTO Test VALUES(6,
'ψόβΩΞ')";		// Greek
+            cmd.ExecuteNonQuery();
 
-			MySqlConnection c = new MySqlConnection( conn.ConnectionString + ";charset=utf8" );
-			c.Open();
-			
-			MySqlCommand cmd = new MySqlCommand( "INSERT INTO Test VALUES(?val)", c); 
-			cmd.Parameters.Add("?val", MySqlDbType.VarChar);
-			cmd.Prepare();
+            cmd.CommandText = "INSERT INTO Test VALUES(7,
'þðüçöÝÞÐÜÇÖ')";	// Turkish
+            cmd.ExecuteNonQuery();
 
-			cmd.Parameters[0].Value = "ЁЄЉҖҚ";			// Russian
-			cmd.ExecuteNonQuery();
+            cmd.CommandText = "INSERT INTO Test VALUES(8, 'ฅๆษ')";			// Thai
+            cmd.ExecuteNonQuery();
 
-			cmd.Parameters[0].Value = "兣冘凥凷冋";		// simplified Chinese
-			cmd.ExecuteNonQuery();
+            cmd.CommandText = "SELECT * FROM Test";
+            MySqlDataReader reader = null;
+            try
+            {
+                reader = cmd.ExecuteReader();
+                reader.Read();
+                Assert.AreEqual("ЁЄЉҖҚ", reader.GetString(1));
+                reader.Read();
+                Assert.AreEqual("兣冘凥凷冋", reader.GetString(1));
+                reader.Read();
+                Assert.AreEqual("困巫忘否役", reader.GetString(1));
+                reader.Read();
+                Assert.AreEqual("涯割晦叶角", reader.GetString(1));
+                reader.Read();
+                Assert.AreEqual("ברחפע", reader.GetString(1));
+                reader.Read();
+                Assert.AreEqual("ψόβΩΞ", reader.GetString(1));
+                reader.Read();
+               
Assert.AreEqual("þðüçöÝÞÐÜÇÖ",
reader.GetString(1));
+                reader.Read();
+                Assert.AreEqual("ฅๆษ", reader.GetString(1));
+            }
+            catch (Exception ex)
+            {
+                Assert.Fail(ex.Message);
+            }
+            finally
+            {
+                if (reader != null) reader.Close();
+                c.Close();
+            }
+        }
 
-			cmd.Parameters[0].Value = "困巫忘否役";		// traditional Chinese
-			cmd.ExecuteNonQuery();
+        [Test]
+        [Category("4.1")]
+        public void UTF8PreparedAndUsingParameters()
+        {
+            execSQL("DROP TABLE IF EXISTS Test");
+            execSQL("CREATE TABLE Test (name VARCHAR(200) CHAR SET utf8)");
 
-			cmd.Parameters[0].Value = "涯割晦叶角";		// Japanese
-			cmd.ExecuteNonQuery();
+            MySqlConnection c = new MySqlConnection(conn.ConnectionString +
";charset=utf8");
+            c.Open();
 
-			cmd.Parameters[0].Value = "ברחפע";			// Hebrew
-			cmd.ExecuteNonQuery();
+            MySqlCommand cmd = new MySqlCommand("INSERT INTO Test VALUES(?val)", c);
+            cmd.Parameters.Add("?val", MySqlDbType.VarChar);
+            cmd.Prepare();
 
-			cmd.Parameters[0].Value = "ψόβΩΞ";			// Greek
-			cmd.ExecuteNonQuery();
+            cmd.Parameters[0].Value = "ЁЄЉҖҚ";			// Russian
+            cmd.ExecuteNonQuery();
 
-			cmd.Parameters[0].Value =
"þðüçöÝÞÐÜÇÖ";	// Turkish
-			cmd.ExecuteNonQuery();
+            cmd.Parameters[0].Value = "兣冘凥凷冋";		// simplified Chinese
+            cmd.ExecuteNonQuery();
 
-			cmd.Parameters[0].Value = "ฅๆษ";				// Thai
-			cmd.ExecuteNonQuery();
-			
-			cmd.CommandText = "SELECT * FROM Test";
-			MySqlDataReader reader = null;
-			try 
-			{
-				reader = cmd.ExecuteReader();
-				reader.Read();
-				Assert.AreEqual("ЁЄЉҖҚ", reader.GetString(0));
-				reader.Read();
-				Assert.AreEqual("兣冘凥凷冋", reader.GetString(0));
-				reader.Read();
-				Assert.AreEqual("困巫忘否役", reader.GetString(0));
-				reader.Read();
-				Assert.AreEqual("涯割晦叶角", reader.GetString(0));
-				reader.Read();
-				Assert.AreEqual("ברחפע", reader.GetString(0));
-				reader.Read();
-				Assert.AreEqual("ψόβΩΞ", reader.GetString(0));
-				reader.Read();
-				Assert.AreEqual("þðüçöÝÞÐÜÇÖ",
reader.GetString(0));
-				reader.Read();
-				Assert.AreEqual("ฅๆษ", reader.GetString(0));
-			}
-			catch (Exception ex) 
-			{
-				Assert.Fail( ex.Message );
-			}
-			finally 
-			{
-				if (reader != null) reader.Close();
-				c.Close();
-			}
-		}
+            cmd.Parameters[0].Value = "困巫忘否役";		// traditional Chinese
+            cmd.ExecuteNonQuery();
 
-		[Test]
-		[Category("4.1")]
-		public void Chinese() 
-		{
-			MySqlConnection c = new MySqlConnection( conn.ConnectionString + ";charset=utf8" );
-			c.Open();
+            cmd.Parameters[0].Value = "涯割晦叶角";		// Japanese
+            cmd.ExecuteNonQuery();
 
-			execSQL("DROP TABLE IF EXISTS Test");
-			execSQL("CREATE TABLE Test (id int, name VARCHAR(200) CHAR SET big5, name2
VARCHAR(200) CHAR SET gb2312)");
+            cmd.Parameters[0].Value = "ברחפע";			// Hebrew
+            cmd.ExecuteNonQuery();
 
-			MySqlCommand cmd = new MySqlCommand( "INSERT INTO Test VALUES(1, '困巫忘否役',
'涝搞谷侪魍' )", c);
-			cmd.ExecuteNonQuery();
+            cmd.Parameters[0].Value = "ψόβΩΞ";			// Greek
+            cmd.ExecuteNonQuery();
 
-			cmd.CommandText = "SELECT * FROM Test";
-			MySqlDataReader reader = null;
-			try 
-			{
-				reader = cmd.ExecuteReader();
-				reader.Read();
-				Assert.AreEqual( "困巫忘否役", reader.GetString(1) );
-				Assert.AreEqual( "涝搞谷侪魍", reader.GetString(2) );
-			}
-			catch (Exception ex) 
-			{
-				Assert.Fail( ex.Message );
-			}
-			finally 
-			{
-				if (reader != null) reader.Close();
-				c.Close();
-			}
-		}
+            cmd.Parameters[0].Value =
"þðüçöÝÞÐÜÇÖ";	// Turkish
+            cmd.ExecuteNonQuery();
 
-		[Test]
-		[Category("4.1")]
-		public void Turkish() 
-		{
-			execSQL("DROP TABLE IF EXISTS Test");
-			execSQL("CREATE TABLE Test (id int, name VARCHAR(200) CHAR SET latin5 )");
+            cmd.Parameters[0].Value = "ฅๆษ";				// Thai
+            cmd.ExecuteNonQuery();
 
-			MySqlConnection c = new MySqlConnection( conn.ConnectionString + ";charset=utf8" );
-			c.Open();
-			
-			
-			MySqlCommand cmd = new MySqlCommand( "INSERT INTO Test VALUES(1,
'ĞËÇÄŞ')", c);
-			cmd.ExecuteNonQuery();
+            cmd.CommandText = "SELECT * FROM Test";
+            MySqlDataReader reader = null;
+            try
+            {
+                reader = cmd.ExecuteReader();
+                reader.Read();
+                Assert.AreEqual("ЁЄЉҖҚ", reader.GetString(0));
+                reader.Read();
+                Assert.AreEqual("兣冘凥凷冋", reader.GetString(0));
+                reader.Read();
+                Assert.AreEqual("困巫忘否役", reader.GetString(0));
+                reader.Read();
+                Assert.AreEqual("涯割晦叶角", reader.GetString(0));
+                reader.Read();
+                Assert.AreEqual("ברחפע", reader.GetString(0));
+                reader.Read();
+                Assert.AreEqual("ψόβΩΞ", reader.GetString(0));
+                reader.Read();
+               
Assert.AreEqual("þðüçöÝÞÐÜÇÖ",
reader.GetString(0));
+                reader.Read();
+                Assert.AreEqual("ฅๆษ", reader.GetString(0));
+            }
+            catch (Exception ex)
+            {
+                Assert.Fail(ex.Message);
+            }
+            finally
+            {
+                if (reader != null) reader.Close();
+                c.Close();
+            }
+        }
 
-			cmd.CommandText = "SELECT * FROM Test";
-			MySqlDataReader reader = null;
-			try 
-			{
-				reader = cmd.ExecuteReader();
-				reader.Read();
-				Assert.AreEqual( "ĞËÇÄŞ", reader.GetString(1) );
-			}
-			catch (Exception ex) 
-			{
-				Assert.Fail( ex.Message );
-			}
-			finally 
-			{
-				if (reader != null) reader.Close();
-				c.Close();
-			}
-		}
+        [Test]
+        [Category("4.1")]
+        public void Chinese()
+        {
+            MySqlConnection c = new MySqlConnection(conn.ConnectionString +
";charset=utf8");
+            c.Open();
 
-		[Test]
-		[Category("4.1")]
-		public void Russian() 
-		{
-			execSQL("DROP TABLE IF EXISTS Test");
-			execSQL("CREATE TABLE Test (id int, name VARCHAR(200) CHAR SET cp1251)");
-			
-			MySqlConnection c = new MySqlConnection( conn.ConnectionString + ";charset=utf8" );
-			c.Open();
-			
-			MySqlCommand cmd = new MySqlCommand( "INSERT INTO Test VALUES(1, 'щьеи')", c);
-			cmd.ExecuteNonQuery();
+            execSQL("DROP TABLE IF EXISTS Test");
+            execSQL("CREATE TABLE Test (id int, name VARCHAR(200) CHAR SET big5, name2
VARCHAR(200) CHAR SET gb2312)");
 
-			cmd.CommandText = "SELECT * FROM Test";
-			MySqlDataReader reader = null;
-			try 
-			{
-				reader = cmd.ExecuteReader();
-				reader.Read();
-				Assert.AreEqual( "щьеи", reader.GetString(1) );
-			}
-			catch (Exception ex) 
-			{
-				Assert.Fail( ex.Message );
-			}
-			finally 
-			{
-				if (reader != null) reader.Close();
-				c.Close();
-			}
-		}
+            MySqlCommand cmd = new MySqlCommand("INSERT INTO Test VALUES(1,
'困巫忘否役', '涝搞谷侪魍' )", c);
+            cmd.ExecuteNonQuery();
 
-		[Test]
-		[Category("4.1")]
-		public void VariousCollations() 
-		{
-			execSQL("CREATE TABLE `test_tbl` ( `test` VARCHAR( 255 ) NOT NULL) CHARACTER SET utf8
COLLATE utf8_swedish_ci TYPE = MYISAM");
-			execSQL("INSERT INTO test_tbl VALUES ('myval')");
+            cmd.CommandText = "SELECT * FROM Test";
+            MySqlDataReader reader = null;
             try
             {
+                reader = cmd.ExecuteReader();
+                reader.Read();
+                Assert.AreEqual("困巫忘否役", reader.GetString(1));
+                Assert.AreEqual("涝搞谷侪魍", reader.GetString(2));
+            }
+            catch (Exception ex)
+            {
+                Assert.Fail(ex.Message);
+            }
+            finally
+            {
+                if (reader != null) reader.Close();
+                c.Close();
+            }
+        }
+
+        [Test]
+        [Category("4.1")]
+        public void Turkish()
+        {
+            execSQL("DROP TABLE IF EXISTS Test");
+            execSQL("CREATE TABLE Test (id int, name VARCHAR(200) CHAR SET latin5 )");
+
+            MySqlConnection c = new MySqlConnection(conn.ConnectionString +
";charset=utf8");
+            c.Open();
+
+
+            MySqlCommand cmd = new MySqlCommand("INSERT INTO Test VALUES(1,
'ĞËÇÄŞ')", c);
+            cmd.ExecuteNonQuery();
+
+            cmd.CommandText = "SELECT * FROM Test";
+            MySqlDataReader reader = null;
+            try
+            {
+                reader = cmd.ExecuteReader();
+                reader.Read();
+                Assert.AreEqual("ĞËÇÄŞ", reader.GetString(1));
+            }
+            catch (Exception ex)
+            {
+                Assert.Fail(ex.Message);
+            }
+            finally
+            {
+                if (reader != null) reader.Close();
+                c.Close();
+            }
+        }
+
+        [Test]
+        [Category("4.1")]
+        public void Russian()
+        {
+            execSQL("DROP TABLE IF EXISTS Test");
+            execSQL("CREATE TABLE Test (id int, name VARCHAR(200) CHAR SET cp1251)");
+
+            MySqlConnection c = new MySqlConnection(conn.ConnectionString +
";charset=utf8");
+            c.Open();
+
+            MySqlCommand cmd = new MySqlCommand("INSERT INTO Test VALUES(1, 'щьеи')",
c);
+            cmd.ExecuteNonQuery();
+
+            cmd.CommandText = "SELECT * FROM Test";
+            MySqlDataReader reader = null;
+            try
+            {
+                reader = cmd.ExecuteReader();
+                reader.Read();
+                Assert.AreEqual("щьеи", reader.GetString(1));
+            }
+            catch (Exception ex)
+            {
+                Assert.Fail(ex.Message);
+            }
+            finally
+            {
+                if (reader != null) reader.Close();
+                c.Close();
+            }
+        }
+
+        [Test]
+        [Category("4.1")]
+        public void VariousCollations()
+        {
+            execSQL("CREATE TABLE `test_tbl` ( `test` VARCHAR( 255 ) NOT NULL) CHARACTER
SET utf8 COLLATE utf8_swedish_ci TYPE = MYISAM");
+            execSQL("INSERT INTO test_tbl VALUES ('myval')");
+            try
+            {
                 MySqlCommand cmd = new MySqlCommand("SELECT test FROM test_tbl", conn);
                 cmd.ExecuteScalar();
             }
@@ -357,6 +358,40 @@
             {
                 execSQL("DROP TABLE test_tbl");
             }
-		}
-	}
+        }
+
+        /// <summary>
+        /// Bug #25651 SELECT does not work properly when WHERE contains UTF-8 characters

+        /// </summary>
+        [Test]
+        public void UTF8Parameters()
+        {
+            execSQL("DROP TABLE IF EXISTS test");
+            execSQL("CREATE TABLE test (id int(11) NOT NULL, " +
+                "value varchar(100) NOT NULL, PRIMARY KEY (id)) " +
+                "ENGINE=MyISAM DEFAULT CHARSET=utf8");
+            execSQL("INSERT INTO test VALUES (1, 'šđč枊ĐČĆŽ')");
+
+            string conString = GetConnectionString(true) + ";charset=utf8";
+            try
+            {
+                using (MySqlConnection con = new MySqlConnection(conString))
+                {
+                    con.Open();
+
+                    MySqlCommand command = new MySqlCommand(
+                        "SELECT id FROM test WHERE value =  ?parameter", con);
+                    command.Parameters.Add("?parameter", MySqlDbType.VarString);
+                    command.Parameters[0].Value = "šđč枊ĐČĆŽ";
+                    command.CommandTimeout = 0;
+                    object o = command.ExecuteScalar();
+                    Assert.AreEqual(1, o);
+                }
+            }
+            catch (Exception ex)
+            {
+                Assert.Fail(ex.Message);
+            }
+        }
+    }
 }

Thread
Connector/NET commit: r559 - in branches/5.0: . Driver/Source TestSuiterburnett17 Jan