From: Date: January 17 2007 11:25pm Subject: Connector/NET commit: r560 - in branches/1.0: . TestSuite mysqlclient/Types List-Archive: http://lists.mysql.com/commits/18298 X-Bug: 25651 Message-Id: <200701172225.l0HMPex6023975@bk-internal.mysql.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Modified: branches/1.0/CHANGES branches/1.0/TestSuite/LanguageTests.cs branches/1.0/mysqlclient/Types/MySqlValue.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/1.0/CHANGES =================================================================== --- branches/1.0/CHANGES 2007-01-17 22:16:25 UTC (rev 559) +++ branches/1.0/CHANGES 2007-01-17 22:25:39 UTC (rev 560) @@ -21,6 +21,7 @@ Bug #24802 Error Handling 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 #25651 SELECT does not work properly when WHERE contains UTF-8 characters Other changes ------------- Modified: branches/1.0/TestSuite/LanguageTests.cs =================================================================== --- branches/1.0/TestSuite/LanguageTests.cs 2007-01-17 22:16:25 UTC (rev 559) +++ branches/1.0/TestSuite/LanguageTests.cs 2007-01-17 22:25:39 UTC (rev 560) @@ -356,5 +356,40 @@ } execSQL("DROP TABLE test_tbl"); } + + /// + /// Bug #25651 SELECT does not work properly when WHERE contains UTF-8 characters + /// + [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"); + + string conString = GetConnectionString(true) + ";charset=utf8"; + try + { + using (MySqlConnection con = new MySqlConnection(conString)) + { + con.Open(); + + MySqlCommand cmd = new MySqlCommand("INSERT INTO test VALUES (1, 'šđč枊ĐČĆŽ')", con); + cmd.ExecuteNonQuery(); + + cmd.CommandText = "SELECT id FROM test WHERE value = ?parameter"; + cmd.Parameters.Add("?parameter", MySqlDbType.VarString); + cmd.Parameters[0].Value = "šđč枊ĐČĆŽ"; + cmd.CommandTimeout = 0; + object o = cmd.ExecuteScalar(); + Assert.AreEqual(1, o); + } + } + catch (Exception ex) + { + Assert.Fail(ex.Message); + } + } } } Modified: branches/1.0/mysqlclient/Types/MySqlValue.cs =================================================================== --- branches/1.0/mysqlclient/Types/MySqlValue.cs 2007-01-17 22:16:25 UTC (rev 559) +++ branches/1.0/mysqlclient/Types/MySqlValue.cs 2007-01-17 22:25:39 UTC (rev 560) @@ -160,6 +160,7 @@ case MySqlDbType.Set: case MySqlDbType.Enum: case MySqlDbType.Char: + case MySqlDbType.VarString: case MySqlDbType.VarChar: return new MySqlString(null, type);