http://bugzilla.novell.com/show_bug.cgi?id=589482

http://bugzilla.novell.com/show_bug.cgi?id=589482#c0


           Summary: DataTable.Clone loses the AutoIncrement of Columns of
                    type Decimal
    Classification: Mono
           Product: Mono: Class Libraries
           Version: 2.6.x
          Platform: Macintosh
        OS/Version: Mac OS X 10.6
            Status: NEW
          Severity: Critical
          Priority: P5 - None
         Component: Sys.Data
        AssignedTo: [email protected]
        ReportedBy: [email protected]
         QAContact: [email protected]
          Found By: ---
           Blocker: ---


User-Agent:       Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-us)
AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7

When cloning a DataTable that has decimal columns set to auto increment, the
cloned decimal columns will lose their auto increment property 

Reproducible: Always

Steps to Reproduce:
1. DataTable t1 = new DataTable();
2. DataColumn dc = t1.Columns.Add("c1", typeof(Decimal));
3. dc.AutoIncrement = true ;
4. DataTable t2 = t1.Clone() ;
5. if (! t2.Columns[0].AutoIncrement) throw new Exception("AutoIncrement not
copied"); 
Actual Results:  
The exception "AutoIncrement not Copied" will be thrown

Expected Results:  
The AutoIncrement property of the column should be copied and no exception
should be thrown

The bug is in the property DataType of the class DataColumn.

Here is the section that's causing the problem
//Check AutoIncrement status, make compatible datatype
if(AutoIncrement == true) {
    // we want to check that the datatype is supported?
    // TODO: Is this the same as CanAutoIncrement or was the omission of
Decimal intended?
    TypeCode typeCode = Type.GetTypeCode(value);

    if (typeCode != TypeCode.Int16 &&
        typeCode != TypeCode.Int32 &&
        typeCode != TypeCode.Int64) {
        AutoIncrement = false;
    }
}

Note that someone added a TODO comment instead of actually fixing the defect.

I think the correct code should be

//Check AutoIncrement status, make compatible datatype
if(AutoIncrement == true) {
    // we want to check that the datatype is supported?
    if (! CanAutoIncrement(value)) {
        AutoIncrement = false;
    }
}

-- 
Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.
_______________________________________________
mono-bugs maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-bugs

Reply via email to