[Mono-bugs] [Bug 591443] New: Cloning a DataColumn with Expression result in a DataColumn in an invalid state

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Fri Mar 26 10:14:48 EDT 2010


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

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


           Summary: Cloning a DataColumn with Expression result in a
                    DataColumn in an invalid state
    Classification: Mono
           Product: Mono: Class Libraries
           Version: 2.6.x
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Critical
          Priority: P5 - None
         Component: Sys.Data
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: Dominique.Normand at cegedim.com
         QAContact: mono-bugs at lists.ximian.com
          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

Cloning a DataColumn that has an Expression will result in a DataColumn that
has an Expression set but for which the CompiledExpression is null. This causes
an exception when trying to read a row value for that column

Reproducible: Always

Steps to Reproduce:
1. Create a DataTable + DataColumn with an expression 
2. Clone the DataTable
3. Add a row to the cloned DataTable
4. Try to read the column value of that row
Actual Results:  
A null exception is thrown

Expected Results:  
We should get back the result of the expression for that row/column

The problem comes from the clone copying the _expression field but not the
_compiledExpression. 
I think the Expression should be parsed and compiled on demand in the
CompiledExpression property instead of in the Expression property. This would
fix the problem and also allow column #1 expression to depend on column #2.
Today, you cannot add an expression that depends on a column that doesn't
exists yet. This is a problem with the Deserialization.
The downside would be that invalid expression wouldn't be detected until the
row value is accessed, but if the row value is never accessed, then the
expression will never be parsed & compiled which might be good.

-- 
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.


More information about the mono-bugs mailing list