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

Rick Hillegas commented on DERBY-6223:
--------------------------------------

You may be able to use a CASE expression to workaround this problem:

{noformat}
connect 'jdbc:derby:memory:db;create=true';

create table t( booleanColumn boolean, smallintColumn smallint );

insert into t( booleanColumn, smallintColumn ) values ( true, 1 ), ( false, 0 
), ( null, null );

-- use a CASE expression to cast a smallint to boolean
insert into t( booleanColumn )
select
case
  when smallintColumn is null then null
  when smallintColumn = 0 then false
  else true
end
from t;

-- use a CASE expression to cast a boolean to a smallint
insert into t( smallintColumn )
select
case
  when booleanColumn is null then null
  when booleanColumn then 1
  else 0
end
from t;

select * from t;
{noformat}

Hope this helps,
-Rick


> Columns of type 'SMALLINT' cannot hold values of type 'BOOLEAN'
> ---------------------------------------------------------------
>
>                 Key: DERBY-6223
>                 URL: https://issues.apache.org/jira/browse/DERBY-6223
>             Project: Derby
>          Issue Type: Improvement
>          Components: Store
>    Affects Versions: 10.10.1.1
>         Environment: NA
>            Reporter: Andy Gumbrecht
>            Priority: Minor
>             Fix For: 10.10.1.4
>
>
> This minor issue is in relation to a bug at Liquibase 
> (https://liquibase.jira.com/browse/CORE-1088) that occurred due to the 
> addition of the boolean type.
> Prior to the boolean type I am assuming that just about everyone would resort 
> to using smallint.Older databases that may have been machine created based on 
> meta-data are not going to be compatible with future code that will now 
> assume boolean is the norm.
> The improvement I am suggesting is that when smallint columns are fed a 
> boolean value that '1' is accepted as 'true' and anything else 'false'  (0 
> would be a good idea), and likewise for retrieval. Although technically 
> correct, throwing an exception seems to be a touch aggressive here as 
> smallint is more than capable of storing a bit.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to