db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Vladimir Pavlov (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (DERBY-5788) BIT support regression and confusing message in 10.8.2.2: org.apache.derby.client.am.SqlException: Invalid character string format for type BOOLEAN
Date Mon, 28 May 2012 17:29:22 GMT

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

Vladimir Pavlov edited comment on DERBY-5788 at 5/28/12 5:27 PM:
-----------------------------------------------------------------

Seems to be caused by the following code in org.apache.derby.client.am.CrossConverters:

{code}
   final Object setObject(int targetDriverType, String source) throws SqlException {
        try {
            switch (targetDriverType) {
            case Types.BIT:
            case Types.BOOLEAN:
            {
                String cleanSource = source.trim().toUpperCase(Locale.ENGLISH);
                if (cleanSource.equals("UNKNOWN")) {
                    return null;
                } else if (cleanSource.equals("TRUE")) {
                    return Boolean.TRUE;
                } else if (cleanSource.equals("FALSE")) {
                    return Boolean.FALSE;
                } else {
                    throw new SqlException(agent_.logWriter_,
                        new ClientMessageId(SQLState.LANG_FORMAT_EXCEPTION),
                        Types.getTypeString(targetDriverType));
                }
            }
{code}

Apparently the BIT type is mistaken for BOOLEAN, which is also what the error message hints:
Invalid character string format for type *BOOLEAN*.
                
      was (Author: vlado):
    Seems to be caused by the following code in org.apache.derby.client.am.CrossConverters:

{code}
   final Object setObject(int targetDriverType, String source) throws SqlException {
        try {
            switch (targetDriverType) {
            case Types.BIT:
            case Types.BOOLEAN:
            {
                String cleanSource = source.trim().toUpperCase(Locale.ENGLISH);
                if (cleanSource.equals("UNKNOWN")) {
                    return null;
                } else if (cleanSource.equals("TRUE")) {
                    return Boolean.TRUE;
                } else if (cleanSource.equals("FALSE")) {
                    return Boolean.FALSE;
                } else {
                    throw new SqlException(agent_.logWriter_,
                        new ClientMessageId(SQLState.LANG_FORMAT_EXCEPTION),
                        Types.getTypeString(targetDriverType));
                }
            }
{code}

Apparently the BIT type is mistaken for BOOLEAN, which is also what the error message hints:
Invalid character string format for type BOOLEAN.
                  
> BIT support regression and confusing message in 10.8.2.2: org.apache.derby.client.am.SqlException:
Invalid character string format for type BOOLEAN
> ---------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-5788
>                 URL: https://issues.apache.org/jira/browse/DERBY-5788
>             Project: Derby
>          Issue Type: Bug
>          Components: JDBC
>    Affects Versions: 10.8.2.2
>         Environment: Windows 7 (All)
>            Reporter: Radoslav Ivanov
>
> Scenario (on 10.8.2.2; with 10.5.1.1  the problem does not appear): when setting BIT
from this example :
> rsSch.createTab("Bit_Tab",sqlp,conn);
> String sMaxBooleanVal = rsSch.extractVal("Bit_Tab",1,sqlp,conn); //value is “1“
> cstmt = conn.prepareCall("{call Bit_In_Min(?)}");
> cstmt.setObject(1,sMaxBooleanVal,java.sql.Types.BIT); //-> throws the exception below
> Exception (Problem with not supporting “0” and “1” for the type BIT; moreover,
confusing message):
> java.sql.SQLDataException: Invalid character string format for type BOOLEAN.
>          at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown
Source)
>          at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
>          at org.apache.derby.client.am.PreparedStatement.setObject(Unknown Source)
>          at org.apache.commons.dbcp.DelegatingPreparedStatement.setObject(DelegatingPreparedStatement.java:166)
>          at org.apache.commons.dbcp.DelegatingPreparedStatement.setObject(DelegatingPreparedStatement.java:166)
>          at com.sun.ts.tests.jdbc.ee.callStmt.callStmt10.callStmtClient10.testSetObject48(callStmtClient10.java:812)
>          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

Mime
View raw message