[
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:
ij> ALTER TABLE T ADD COLUMN B BOOLEAN;
0 rows inserted/updated/deleted
ij> UPDATE T SET B = (S<>0);
4 rows inserted/updated/deleted
ij> SELECT * FROM T;
S |B
------------
NULL |NULL
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: 10.7.1.1
> 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