[Mono-bugs] [Bug 667236] New: OracleClient OUT parameters have decimal values instead of integer values

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Wed Jan 26 02:32:27 EST 2011



           Summary: OracleClient OUT parameters have decimal values
                    instead of integer values
    Classification: Mono
           Product: Mono: Class Libraries
           Version: 2.8.x
          Platform: x86-64
        OS/Version: Linux
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: Sys.Data
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: Kalyanov.Dmitry at gmail.com
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---
           Blocker: ---

Created an attachment (id=410432)
 --> (http://bugzilla.novell.com/attachment.cgi?id=410432)
The test program

User-Agent:       Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.13
(KHTML, like Gecko) Chrome/9.0.597.19 Safari/534.13

To insert an entity into Oracle database NHibernate issues queries like this:

"INSERT INTO NEWS (Id, Header, NEWS_DATE) VALUES (hibernate_sequence.nextval,
:p0, :p1) returning Id into :nhIdOutParam"

In this query, "nhIdOutParam" is a parameter with OUT direction and with Int32
type. NHibernate uses it to retrieve identifier of newly added row. But after
executing this command the "nhIdOutParam" parameter gets value of type
System.Decimal (instead of expected System.Int32) and NHibernate crashes when
it tries to assign this value to the Id property of an object:

NHibernate.PropertyAccessException: The type System.Decimal can not be assigned
to a property of type System.Int32 setter of
Bars.EAS.DataAccess.PersistentObject.Id ---> System.ArgumentException: failed
to convert parameters

A minimal program that shows a similar behavior is attached.

The attached patch fixes this problem.

Reproducible: Always

Steps to Reproduce:
1. Change the oracle database credentials in the attached program and compile
it  with "mcs oracleout.cs -r:System.Data.OracleClient"
2. run "mono oracleout.exe --create-table"
3. run "mono oracleout.exe"
Actual Results:  
"System.Decimal" is printed to the console

Expected Results:  
"System.Int32" is printed to the console.

Configure bugmail: https://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