You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Kathey Marsden (JIRA)" <de...@db.apache.org> on 2005/04/29 14:46:07 UTC

[jira] Updated: (DERBY-250) With client setObject( parameterIndex, x, java.sql.DOUBLE) throws conversion exception if the object passed is a BigDecimal with more than 31 digits

     [ http://issues.apache.org/jira/browse/DERBY-250?page=all ]

Kathey Marsden updated DERBY-250:
---------------------------------

    Summary: With client setObject( parameterIndex, x, java.sql.DOUBLE) throws conversion exception if the object passed is a BigDecimal with more than 31 digits  (was: With client setObject( parameterIndex, x, java.sql.DOUBLE) throws conversion exception if the object passed is a BigDecimal with precision)

For these calls the API doc says:

The given Java object will be converted to the given targetSqlType before being sent to the database

Converting the values on the client prior to sending them to the server eliminates the error.  I will post a patch with this change.


> With client setObject( parameterIndex, x, java.sql.DOUBLE) throws conversion exception if the object passed is a BigDecimal with more than 31 digits
> ----------------------------------------------------------------------------------------------------------------------------------------------------
>
>          Key: DERBY-250
>          URL: http://issues.apache.org/jira/browse/DERBY-250
>      Project: Derby
>         Type: Bug
>   Components: Network Client
>     Versions: 10.1.0.0
>     Reporter: Kathey Marsden
>     Assignee: Kathey Marsden
>      Fix For: 10.1.0.0

>
> Trying to insert a  BigDecimal value with unscaled value longer than 31 digits using 
> public void setObject(int parameterIndex,
>                       Object x,
>                       int targetSqlType)
>                throws SQLException
> or 
> public void setObject(int parameterIndex,
>                       Object x,
>                       int targetSqlType,
>                       int scale)
>                throws SQLException
> fails with Network client.
> ps.setObject(1,1000000000000000000000000000000000000000000000000
> 0000000000000000000000000000000000000000000000000000000000000000
> 0000000000000,java.sql.Types.DOUBLE)
> org.apache.derby.client.am.ConversionException: [converters] 
> The numeric literal 
> "100000000000000000000000000000000000000000000000000000000000000
> 0000000000000000000000000000000000000000000000000000000
> 00000000" is not valid because its value is out of range.
>         at 
> org.apache.derby.client.am.Decimal.bigDecimalToPackedDecimalByte
> s(Decimal.java:391)
>         at 
> org.apache.derby.client.net.Request.writeBigDecimal(Request.java
> :1632)
>         at 
> org.apache.derby.client.net.NetStatementRequest.buildFDODTA(NetS
> tatementRequest.java:692)
>         at 
> org.apache.derby.client.net.NetStatementRequest.buildSQLDTAcomma
> ndData(NetStatementRequest.java:514)
>         at 
> org.apache.derby.client.net.NetStatementRequest.writeExecute(Net
> StatementRequest.java:137)
>         at 
> org.apache.derby.client.net.NetPreparedStatement.writeExecute_(N
> etPreparedStatement.java:124)
>         at 
> org.apache.derby.client.am.PreparedStatement.writeExecute(Prepar
> edStatement.java:956)
>         at 
> org.apache.derby.client.am.PreparedStatement.flowExecute(Prepare
> dStatement.java:1173)
>         at 
> org.apache.derby.client.am.PreparedStatement.executeUpdateX(Prep
> aredStatement.java:324)
>         at 
> org.apache.derby.client.am.PreparedStatement.executeUpdate(Prepa
> redStatement.java:315)
> See attached patch with modified prepStmt.java test for reproduction.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira