[Mono-bugs] [Bug 550960] New: Dataset binary serialization fails if first row contains nulls.
bugzilla_noreply at novell.com
bugzilla_noreply at novell.com
Thu Oct 29 07:03:11 EDT 2009
http://bugzilla.novell.com/show_bug.cgi?id=550960
Summary: Dataset binary serialization fails if first row
contains nulls.
Classification: Mono
Product: Mono: Class Libraries
Version: 2.4.x
Platform: x86-64
OS/Version: RHEL 5
Status: NEW
Severity: Normal
Priority: P5 - None
Component: Sys.Data
AssignedTo: bnc-blr-team-mono at forge.provo.novell.com
ReportedBy: stefano.sapienti at apsystems.it
QAContact: mono-bugs at lists.ximian.com
Found By: ---
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.14)
Gecko/2009082707 Firefox/3.0.14 (.NET CLR 3.5.30729)
Making binary serialization of a typed dataset that contains in the first row
null values result in a type cast exception. It works on MS.NET
Reproducible: Always
Steps to Reproduce:
1. Create a dataset
DataSet outputs = new DataSet();
DataTable dt = outputs.Tables.Add();
2. Add 2 field to datatable
dt.Columns.Add("field1", typeof(string));
dt.Columns.Add("field2", typeof(string));
3. Add 2 rows to datatable, first one with null values
dt.Rows.Add(new object[] { null,"a"});
dt.Rows.Add(new object[] { "a","b"});
4. Binary Serialize the DataSet
outputs.RemotingFormat = SerializationFormat.Binary;
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
using (System.IO.MemoryStream ms = new
System.IO.MemoryStream()) {
bf.Serialize(ms, outputs);
ms.ToArray();
}
Actual Results:
System.InvalidCastException: Cannot cast from source type to destination type.
at (wrapper managed-to-native) System.Array:SetValueImpl (object,int)
at System.Array.SetValue (System.Object value, Int32 index) [0x00000]
at System.Data.DataTable.BinarySerialize
(System.Runtime.Serialization.SerializationInfo info, System.String prefix)
[0x00000]
at System.Data.DataSet.BinarySerialize
(System.Runtime.Serialization.SerializationInfo si) [0x00000]
at System.Data.DataSet.GetObjectData
(System.Runtime.Serialization.SerializationInfo info, StreamingContext context)
[0x00000]
at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.GetObjectData
(System.Object obj,
System.Runtime.Serialization.Formatters.Binary.TypeMetadata& metadata,
System.Object& data) [0x00000]
at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.WriteObject
(System.IO.BinaryWriter writer, Int64 id, System.Object obj) [0x00000]
at
System.Runtime.Serialization.Formatters.Binary.ObjectWriter.WriteObjectInstance
(System.IO.BinaryWriter writer, System.Object obj, Boolean isValueObject)
[0x00000]
at
System.Runtime.Serialization.Formatters.Binary.ObjectWriter.WriteQueuedObjects
(System.IO.BinaryWriter writer) [0x00000]
at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.WriteObjectGraph
(System.IO.BinaryWriter writer, System.Object obj,
System.Runtime.Remoting.Messaging.Header[] headers) [0x00000]
at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize
(System.IO.Stream serializationStream, System.Object graph,
System.Runtime.Remoting.Messaging.Header[] headers) [0x00000]
at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize
(System.IO.Stream serializationStream, System.Object graph) [0x00000]
at testmono.testserialize.Page_Load (System.Object sender, System.EventArgs e)
[0x00000]
Expected Results:
A byte array.
Changing the rows to
dt.Rows.Add(new object[] { "","a"});
dt.Rows.Add(new object[] { "b","b"});
or also to
dt.Rows.Add(new object[] { "","a"});
dt.Rows.Add(new object[] { null,"b"});
works.
--
Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
More information about the mono-bugs
mailing list