+2006-01-16 Boris Kirzner <borisk@mainsoft.com>
+ * DataTable.cs: Drop dependend indexes on column removal.
+
2006-01-16 Atsushi Enomoto <atsushi@ximian.com>
* CustomDataClassGenerator.cs :
}\r
}\r
\r
+ internal void DropReferencedIndexes (DataColumn column)\r
+ {\r
+ if (_indexes != null)\r
+ for (int i = _indexes.Count - 1; i >= 0; i--) { \r
+ Index indx = (Index)_indexes [i];\r
+ if (indx.Key.DependsOn (column))\r
+ _indexes.Remove (indx);\r
+ }\r
+ }\r
+\r
internal void AddRowToIndexes (DataRow row) {\r
if (_indexes != null) {\r
foreach (Index indx in _indexes) {\r
/// <summary>\r
/// Notifies the DataTable that a DataColumn is being removed.\r
/// </summary>\r
- [MonoTODO]\r
protected internal virtual void OnRemoveColumn (DataColumn column) {\r
+ DropReferencedIndexes (column);\r
}\r
\r
\r
+2006-01-16 Boris Kirzner <borisk@mainsoft.com>
+ * DataColumnCollectionTest2.cs: added test case for index update on
+ column removal
+
2006-01-16 Atsushi Enomoto <atsushi@ximian.com>
* TypedDataSetGeneratorTest.cs : added test for bug #77248, but we
}\r
}\r
\r
+ [Test]\r
+ public void Test_Indexes ()\r
+ {\r
+ DataTable dt = new DataTable ();\r
+ DataColumn dc = new DataColumn("A");\r
+ dt.Columns.Add (dc);\r
+\r
+ dc = new DataColumn("B");\r
+ dt.Columns.Add (dc);\r
+\r
+ dc = new DataColumn("C");\r
+ dt.Columns.Add (dc);\r
+\r
+ for(int i=0; i < 10; i++) {\r
+ DataRow dr = dt.NewRow ();\r
+ dr ["A"] = i;\r
+ dr ["B"] = i + 1;\r
+ dr ["C"] = i + 2;\r
+ dt.Rows.Add (dr);\r
+ }\r
+\r
+ DataRow[] rows = dt.Select ("A=5");\r
+ Assert.AreEqual (1, rows.Length);\r
+\r
+ dt.Columns.Remove ("A");\r
+\r
+ dc = new DataColumn ("A");\r
+ dc.DefaultValue = 5;\r
+\r
+ dt.Columns.Add (dc);\r
+\r
+ rows = dt.Select ("A=5");\r
+ Assert.AreEqual (10, rows.Length);\r
+ }\r
+\r
private void Columns_CollectionChanged1(object sender, CollectionChangeEventArgs e)\r
{\r
eventOccured = true;\r