Icon View Incident Report

Serious Serious
Reported By: Hedley Muscroft
Reported On: 10/25/2002
For: Version 3.19 Build 1
# 1254 CASTing a NULL to a Boolean Within an IF() Function Returns a False Instead of a NULL

If I do this...

SELECT *, CAST (NULL AS BOOLEAN) AS MyBool FROM MyTable

...then "MyBool" is returned as NULL in each row (as expected).

But when I do this :-

SELECT *, IF(MyTable.SomeValue > 0 THEN TRUE ELSE CAST (NULL AS BOOLEAN)) AS
MyBool FROM MyTable

...then the MyBool column is FALSE when it should be NULL.

/* Copy this SQL into DBSYS */

DROP TABLE IF EXISTS MEMORY "Temp";

CREATE TABLE MEMORY "Temp"
(
   ANumber INTEGER
);

INSERT INTO MEMORY "Temp" (ANumber) VALUES (1);
INSERT INTO MEMORY "Temp" (ANumber) VALUES (2);
INSERT INTO MEMORY "Temp" (ANumber) VALUES (3);
INSERT INTO MEMORY "Temp" (ANumber) VALUES (4);
INSERT INTO MEMORY "Temp" (ANumber) VALUES (5);
INSERT INTO MEMORY "Temp" (ANumber) VALUES (6);

/*
This works as expected (remove comments to see)...
SELECT *, CAST(NULL AS BOOLEAN) AS NullBoolField FROM MEMORY Temp;
*/

/*
This returns FALSE rather than NULL values...
*/
SELECT *, IF (ANumber>10 THEN true ELSE CAST(NULL AS BOOLEAN)) AS 
NullBoolField FROM MEMORY Temp;



Resolution Resolution
Fixed Problem on 11/5/2002 in version 3.20 build 1
Image