Knut Anders Hatlen created DERBY-6584:
-----------------------------------------

             Summary: Comparisons between BOOLEAN and other types sometimes 
succeed
                 Key: DERBY-6584
                 URL: https://issues.apache.org/jira/browse/DERBY-6584
             Project: Derby
          Issue Type: Bug
          Components: SQL
    Affects Versions: 10.10.2.0
            Reporter: Knut Anders Hatlen


I would have expected the following queries to fail because of type mismatch 
between CHAR and BOOLEAN:

{noformat}
ij> values 'abc' = true, true = 'xyz', false = 'yes';
1    
-----
true 
true 
false

3 rows selected
ij> values 'abc' in (true, false), true in ('abc', 'def');
1    
-----
true 
true 

2 rows selected
{noformat}

Similar queries using INTEGER values instead of CHAR values fail as expected:

{noformat}
ij> values 1 = true;
ERROR 42818: Comparisons between 'INTEGER' and 'BOOLEAN' are not supported. 
Types must be comparable. String types must also have matching collation. If 
collation does not match, a possible solution is to cast operands to force them 
to the default collation (e.g. SELECT tablename FROM sys.systables WHERE 
CAST(tablename AS VARCHAR(128)) = 'T1')
ij> values true = 1;
ERROR 42818: Comparisons between 'BOOLEAN' and 'INTEGER' are not supported. 
Types must be comparable. String types must also have matching collation. If 
collation does not match, a possible solution is to cast operands to force them 
to the default collation (e.g. SELECT tablename FROM sys.systables WHERE 
CAST(tablename AS VARCHAR(128)) = 'T1')
ij> values true in (1,2,3);
ERROR 42818: Comparisons between 'BOOLEAN' and 'INTEGER' are not supported. 
Types must be comparable. String types must also have matching collation. If 
collation does not match, a possible solution is to cast operands to force them 
to the default collation (e.g. SELECT tablename FROM sys.systables WHERE 
CAST(tablename AS VARCHAR(128)) = 'T1')
ij> values 1 in (true, false);
ERROR 42818: Comparisons between 'INTEGER' and 'BOOLEAN' are not supported. 
Types must be comparable. String types must also have matching collation. If 
collation does not match, a possible solution is to cast operands to force them 
to the default collation (e.g. SELECT tablename FROM sys.systables WHERE 
CAST(tablename AS VARCHAR(128)) = 'T1')
{noformat}



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

Reply via email to