[ 
https://issues.apache.org/jira/browse/DERBY-5784?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14027743#comment-14027743
 ] 

Knut Anders Hatlen commented on DERBY-5784:
-------------------------------------------

Is this perhaps the same issue that was reported in DERBY-6483 and closed as 
not a problem?

The repro contains this code:

{code}
        BigDecimal      decimalValue = new BigDecimal( "12.375" );

        // fails to match row
        print( "Setting NUMERIC variable..." );
        ps.setObject(1, decimalValue, Types.NUMERIC );
        printResultSet( ps.executeQuery() );
{code}

Per the JDBC API javadocs, the PreparedStatement.setObject(int, Object, int) 
method is supposed to assume a scale of zero. That means it should lose the 
fractional part. I therefore believe the above code would be equivalent to 
ps.setInt(1, 12), and not as one might expect ps.setDouble(1, 12.375), and 
Derby does the right thing by not returning a match.

> Setting a parameter as NUMERIC fails to match stored value, but setting the 
> parameter as untyped does match
> -----------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-5784
>                 URL: https://issues.apache.org/jira/browse/DERBY-5784
>             Project: Derby
>          Issue Type: Bug
>          Components: JDBC
>    Affects Versions: 10.10.1.1
>            Reporter: Rick Hillegas
>              Labels: derby_triage10_10
>         Attachments: DERBY_5784.java
>
>
> I will attach a repro. The behavior should be the same according to table B-4 
> in the JDBC spec. Lance Andersen reports that other databases find the row 
> using both setObject() overloads.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to