db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Knut Anders Hatlen (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DERBY-5042) ResultSet.updateBoolean() on new BOOLEAN type throws exception
Date Tue, 15 Feb 2011 09:34:57 GMT

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

Knut Anders Hatlen commented on DERBY-5042:

Derby doesn't support cast from smallint to boolean, only from string to boolean. According
to the comments in DERBY-4658, that's the only cast to boolean allowed by the SQL standard.

But there are ways around it. For example, if you have a table T with a smallint column S,
you could add a boolean column and populate it like this:

0 rows inserted/updated/deleted
ij> UPDATE T SET B = (S<>0);
4 rows inserted/updated/deleted
S     |B    
0     |false
1     |true 
2     |true 

4 rows selected

> ResultSet.updateBoolean() on new BOOLEAN type throws exception
> --------------------------------------------------------------
>                 Key: DERBY-5042
>                 URL: https://issues.apache.org/jira/browse/DERBY-5042
>             Project: Derby
>          Issue Type: Bug
>          Components: Network Client
>    Affects Versions:
>         Environment: OS X 10.6.5, Java 1.6
>            Reporter: Brett Wooldridge
>            Assignee: C.S. Nirmal J. Fernando
> I am encountering an error trying to update a BOOLEAN type through an
> updatable ResultSet.  My table looks like this:
> CREATE TABLE file_store (
>   path VARCHAR(255) NOT NULL,
>   network VARCHAR(32) NOT NULL,
>   file_blob BLOB,
>   file_md5 VARCHAR(32),
>   is_directory BOOLEAN NOT NULL DEFAULT false,
>   PRIMARY KEY (path, network)
> );
> My SQL looks like this:
> SELECT path, network, is_directory FROM file_store
> WHERE path=? AND network=? AND is_directory=true FOR UPDATE OF path, network, is_directory
> My Java code looks like this:
> ...
> resultSet.moveToInsertRow();
> resultSet.updateString("path", dirPath);
> resultSet.updateString("network", network);
> resultSet.updateBoolean("is_directory", true);
> resultSet.insertRow();
> An exception is thrown in the call to updateBoolean() as follows:
> java.sql.SQLException: An attempt was made to put a data value of type 'byte' into a
data value of type 'BOOLEAN'.
> It's a shame, I was looking forward to using the new BOOLEAN type before I roll out the
next version of our software.  For now I will fallback to SMALLINT.  Does/will ALTER TABLE
support a change from SMALLINT to BOOLEAN?

This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira


View raw message