[Mono-bugs] [Bug 79695][Min] Changed - Extra space characters issue when using System.Data.DataTable.Select

bugzilla-daemon at bugzilla.ximian.com bugzilla-daemon at bugzilla.ximian.com
Sat Dec 16 17:27:39 EST 2006


Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

Changed by neaorin at gmail.com.

http://bugzilla.ximian.com/show_bug.cgi?id=79695

--- shadow/79695	2006-10-18 18:29:47.000000000 -0400
+++ shadow/79695.tmp.24129	2006-12-16 17:27:39.000000000 -0500
@@ -1,14 +1,14 @@
 Bug#: 79695
 Product: Mono: Class Libraries
 Version: 1.1
-OS: 
+OS: unknown
 OS Details: OpenSuSE
 Status: NEW   
 Resolution: 
-Severity: 
+Severity: Unknown
 Priority: Minor
 Component: Sys.Data
 AssignedTo: anagappan at novell.com                            
 ReportedBy: anagappan at novell.com               
 QAContact: mono-bugs at ximian.com
 TargetMilestone: ---
@@ -63,6 +63,52 @@
 		foreach (System.Data.DataRow row in dataTable.Select("Name =
 'Mike'"))
 			System.Console.WriteLine(row[0]);
 
 	}
 }
+
+------- Additional Comments From neaorin at gmail.com  2006-12-16 17:27 -------
+A modified version of the test program reveals exactly which
+"whitespace" characters are ignored when comparing strings. The
+WhiteChars array below is from the String.cs class in corlib.
+
+using System;
+
+class MainClass {
+		private static readonly char[] WhiteChars = { (char) 0x9, (char)
+0xA, (char) 0xB, (char) 0xC, (char) 0xD,
+#if NET_2_0
+			(char) 0x85, (char) 0x1680, (char) 0x2028, (char) 0x2029,
+#endif
+			(char) 0x20, (char) 0xA0, (char) 0x2000, (char) 0x2001, (char)
+0x2002, (char) 0x2003, (char) 0x2004,
+			(char) 0x2005, (char) 0x2006, (char) 0x2007, (char) 0x2008, (char)
+0x2009, (char) 0x200A, (char) 0x200B,
+			(char) 0x3000, (char) 0xFEFF };	
+
+	static void Main(string[] args)
+	{
+		System.Data.DataTable dataTable = new System.Data.DataTable("Person");
+		dataTable.CaseSensitive = true;
+		dataTable.Columns.Add("Name", typeof(string));
+		dataTable.Columns.Add("Code", typeof(int));
+		foreach (char c in WhiteChars) 
+			dataTable.Rows.Add(new object[] {"Mike" + c, c});
+		foreach (System.Data.DataRow row in dataTable.Select("Name = 'Mike'"))
+			System.Console.WriteLine(String.Format("0x{0:X}", row[1]));			
+	}
+}
+
+The program only shows hex codes for chars which are ignored when
+found at the end of strings before doing the comparison. The .NET 2.0
+runtime outputs the following codes:
+
+0x20          (space)
+0x3000
+0xFEFF
+
+Mono only outputs
+
+0xFEFF
+
+I will post a patch & test case immediately.


More information about the mono-bugs mailing list