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 "Bernt M. Johnsen (JIRA)" <de...@db.apache.org> on 2006/01/04 13:28:01 UTC
[jira] Created: (DERBY-794) setObject(col, BigDecimal, Types.NUMERIC) implies setObject(col, BigDecimal, Types.NUMERIC, 0)
setObject(col, BigDecimal, Types.NUMERIC) implies setObject(col, BigDecimal, Types.NUMERIC, 0)
----------------------------------------------------------------------------------------------
Key: DERBY-794
URL: http://issues.apache.org/jira/browse/DERBY-794
Project: Derby
Type: Bug
Components: JDBC
Reporter: Bernt M. Johnsen
Assigned to: Bernt M. Johnsen
setObject(col, BigDecimal, Types.NUMERIC) implies setObject(col,
BigDecimal,Types.NUMERIC , 0) and the result is stored with no digits
to the right of the decimal point.
thus (given the SQL type NUMERIC(10,2) the following occurs:
setBigDecimal(col, new BigDecimal("1.9999")) gives 1.99 (OK
setObject(col, new BigDecimal("1.9999"), Types.NUMERIC) gives 1.00 (WRONG)
setObject(col, new BigDecimal("1.9999"), Types.NUMERIC, 4) gives 1.99 (OK)
This also applies to Types.DECIMAL
The problem is that "unspecified scale" is translated to zero in
1) org/apache/derby/impl/jdbc/EmbedPreparedStatement:
/**
* This method is like setObject above, but assumes a scale of zero.
* @exception SQLException thrown on failure.
*/
public final void setObject(int parameterIndex, Object x, int targetSqlType)
throws SQLException {
setObject(parameterIndex, x, targetSqlType, 0);
}
and 2) org/apache/derby/client/am/PreparedStatement:
public void setObject(int parameterIndex, Object x, int targetJdbcType) throws SqlException {
synchronized (connection_) {
if (agent_.loggingEnabled()) {
agent_.logWriter_.traceEntry(this, "setObject", parameterIndex, x, targetJdbcType);
}
setObjectX(parameterIndex, x, targetJdbcType, 0);
}
}
--
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
[jira] Closed: (DERBY-794) setObject(col, BigDecimal, Types.NUMERIC) implies setObject(col, BigDecimal, Types.NUMERIC, 0)
Posted by "Bernt M. Johnsen (JIRA)" <de...@db.apache.org>.
[ http://issues.apache.org/jira/browse/DERBY-794?page=all ]
Bernt M. Johnsen closed DERBY-794:
----------------------------------
Resolution: Invalid
Dan is quite right. This is not a bug but defined behaviour.
> setObject(col, BigDecimal, Types.NUMERIC) implies setObject(col, BigDecimal, Types.NUMERIC, 0)
> ----------------------------------------------------------------------------------------------
>
> Key: DERBY-794
> URL: http://issues.apache.org/jira/browse/DERBY-794
> Project: Derby
> Type: Bug
> Components: JDBC
> Reporter: Bernt M. Johnsen
> Assignee: Bernt M. Johnsen
>
> setObject(col, BigDecimal, Types.NUMERIC) implies setObject(col,
> BigDecimal,Types.NUMERIC , 0) and the result is stored with no digits
> to the right of the decimal point.
> thus (given the SQL type NUMERIC(10,2) the following occurs:
> setBigDecimal(col, new BigDecimal("1.9999")) gives 1.99 (OK
> setObject(col, new BigDecimal("1.9999"), Types.NUMERIC) gives 1.00 (WRONG)
> setObject(col, new BigDecimal("1.9999"), Types.NUMERIC, 4) gives 1.99 (OK)
> This also applies to Types.DECIMAL
> The problem is that "unspecified scale" is translated to zero in
> 1) org/apache/derby/impl/jdbc/EmbedPreparedStatement:
> /**
> * This method is like setObject above, but assumes a scale of zero.
> * @exception SQLException thrown on failure.
> */
> public final void setObject(int parameterIndex, Object x, int targetSqlType)
> throws SQLException {
> setObject(parameterIndex, x, targetSqlType, 0);
> }
> and 2) org/apache/derby/client/am/PreparedStatement:
> public void setObject(int parameterIndex, Object x, int targetJdbcType) throws SqlException {
> synchronized (connection_) {
> if (agent_.loggingEnabled()) {
> agent_.logWriter_.traceEntry(this, "setObject", parameterIndex, x, targetJdbcType);
> }
> setObjectX(parameterIndex, x, targetJdbcType, 0);
> }
> }
--
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
[jira] Commented: (DERBY-794) setObject(col, BigDecimal, Types.NUMERIC) implies setObject(col, BigDecimal, Types.NUMERIC, 0)
Posted by "Daniel John Debrunner (JIRA)" <de...@db.apache.org>.
[ http://issues.apache.org/jira/browse/DERBY-794?page=comments#action_12361768 ]
Daniel John Debrunner commented on DERBY-794:
---------------------------------------------
Why is this a bug, it's the defined behaviour for setObject?
> setObject(col, BigDecimal, Types.NUMERIC) implies setObject(col, BigDecimal, Types.NUMERIC, 0)
> ----------------------------------------------------------------------------------------------
>
> Key: DERBY-794
> URL: http://issues.apache.org/jira/browse/DERBY-794
> Project: Derby
> Type: Bug
> Components: JDBC
> Reporter: Bernt M. Johnsen
> Assignee: Bernt M. Johnsen
>
> setObject(col, BigDecimal, Types.NUMERIC) implies setObject(col,
> BigDecimal,Types.NUMERIC , 0) and the result is stored with no digits
> to the right of the decimal point.
> thus (given the SQL type NUMERIC(10,2) the following occurs:
> setBigDecimal(col, new BigDecimal("1.9999")) gives 1.99 (OK
> setObject(col, new BigDecimal("1.9999"), Types.NUMERIC) gives 1.00 (WRONG)
> setObject(col, new BigDecimal("1.9999"), Types.NUMERIC, 4) gives 1.99 (OK)
> This also applies to Types.DECIMAL
> The problem is that "unspecified scale" is translated to zero in
> 1) org/apache/derby/impl/jdbc/EmbedPreparedStatement:
> /**
> * This method is like setObject above, but assumes a scale of zero.
> * @exception SQLException thrown on failure.
> */
> public final void setObject(int parameterIndex, Object x, int targetSqlType)
> throws SQLException {
> setObject(parameterIndex, x, targetSqlType, 0);
> }
> and 2) org/apache/derby/client/am/PreparedStatement:
> public void setObject(int parameterIndex, Object x, int targetJdbcType) throws SqlException {
> synchronized (connection_) {
> if (agent_.loggingEnabled()) {
> agent_.logWriter_.traceEntry(this, "setObject", parameterIndex, x, targetJdbcType);
> }
> setObjectX(parameterIndex, x, targetJdbcType, 0);
> }
> }
--
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