1997-04-05 13:08:30 +02:00
|
|
|
--
|
2000-01-04 17:21:02 +01:00
|
|
|
-- BOOLEAN
|
1997-04-05 13:08:30 +02:00
|
|
|
--
|
|
|
|
|
|
|
|
--
|
|
|
|
-- sanity check - if this fails go insane!
|
|
|
|
--
|
|
|
|
SELECT 1 AS one;
|
|
|
|
|
|
|
|
|
|
|
|
-- ******************testing built-in type bool********************
|
|
|
|
|
2008-10-05 16:20:03 +02:00
|
|
|
-- check bool input syntax
|
|
|
|
|
|
|
|
SELECT true AS true;
|
|
|
|
|
|
|
|
SELECT false AS false;
|
1997-04-05 13:08:30 +02:00
|
|
|
|
2000-01-04 17:21:02 +01:00
|
|
|
SELECT bool 't' AS true;
|
1997-04-05 13:08:30 +02:00
|
|
|
|
2007-06-02 01:40:19 +02:00
|
|
|
SELECT bool ' f ' AS false;
|
1997-04-05 13:08:30 +02:00
|
|
|
|
2008-10-05 16:20:03 +02:00
|
|
|
SELECT bool 'true' AS true;
|
|
|
|
|
|
|
|
SELECT bool 'test' AS error;
|
|
|
|
|
|
|
|
SELECT bool 'false' AS false;
|
|
|
|
|
|
|
|
SELECT bool 'foo' AS error;
|
|
|
|
|
|
|
|
SELECT bool 'y' AS true;
|
|
|
|
|
|
|
|
SELECT bool 'yes' AS true;
|
|
|
|
|
|
|
|
SELECT bool 'yeah' AS error;
|
|
|
|
|
|
|
|
SELECT bool 'n' AS false;
|
|
|
|
|
|
|
|
SELECT bool 'no' AS false;
|
|
|
|
|
|
|
|
SELECT bool 'nay' AS error;
|
|
|
|
|
|
|
|
SELECT bool '1' AS true;
|
|
|
|
|
|
|
|
SELECT bool '11' AS error;
|
|
|
|
|
|
|
|
SELECT bool '0' AS false;
|
|
|
|
|
|
|
|
SELECT bool '000' AS error;
|
|
|
|
|
|
|
|
SELECT bool '' AS error;
|
|
|
|
|
|
|
|
-- and, or, not in qualifications
|
|
|
|
|
2000-01-04 17:21:02 +01:00
|
|
|
SELECT bool 't' or bool 'f' AS true;
|
1997-04-05 13:08:30 +02:00
|
|
|
|
2000-01-04 17:21:02 +01:00
|
|
|
SELECT bool 't' and bool 'f' AS false;
|
1997-04-05 13:08:30 +02:00
|
|
|
|
2000-01-04 17:21:02 +01:00
|
|
|
SELECT not bool 'f' AS true;
|
1997-04-05 13:08:30 +02:00
|
|
|
|
2000-01-04 17:21:02 +01:00
|
|
|
SELECT bool 't' = bool 'f' AS false;
|
1997-04-05 13:08:30 +02:00
|
|
|
|
2000-01-04 17:21:02 +01:00
|
|
|
SELECT bool 't' <> bool 'f' AS true;
|
1997-04-05 13:08:30 +02:00
|
|
|
|
2008-10-05 16:20:03 +02:00
|
|
|
SELECT bool 't' > bool 'f' AS true;
|
|
|
|
|
|
|
|
SELECT bool 't' >= bool 'f' AS true;
|
|
|
|
|
|
|
|
SELECT bool 'f' < bool 't' AS true;
|
|
|
|
|
|
|
|
SELECT bool 'f' <= bool 't' AS true;
|
|
|
|
|
2007-06-02 01:40:19 +02:00
|
|
|
-- explicit casts to/from text
|
|
|
|
SELECT 'TrUe'::text::boolean AS true, 'fAlse'::text::boolean AS false;
|
|
|
|
SELECT ' true '::text::boolean AS true,
|
|
|
|
' FALSE'::text::boolean AS false;
|
|
|
|
SELECT true::boolean::text AS true, false::boolean::text AS false;
|
|
|
|
|
|
|
|
SELECT ' tru e '::text::boolean AS invalid; -- error
|
|
|
|
SELECT ''::text::boolean AS invalid; -- error
|
1997-04-05 13:08:30 +02:00
|
|
|
|
|
|
|
CREATE TABLE BOOLTBL1 (f1 bool);
|
|
|
|
|
2000-01-04 17:21:02 +01:00
|
|
|
INSERT INTO BOOLTBL1 (f1) VALUES (bool 't');
|
1997-04-05 13:08:30 +02:00
|
|
|
|
2000-01-04 17:21:02 +01:00
|
|
|
INSERT INTO BOOLTBL1 (f1) VALUES (bool 'True');
|
1997-04-05 13:08:30 +02:00
|
|
|
|
2000-01-04 17:21:02 +01:00
|
|
|
INSERT INTO BOOLTBL1 (f1) VALUES (bool 'true');
|
1997-04-05 13:08:30 +02:00
|
|
|
|
|
|
|
|
|
|
|
-- BOOLTBL1 should be full of true's at this point
|
2005-04-07 03:51:41 +02:00
|
|
|
SELECT '' AS t_3, BOOLTBL1.* FROM BOOLTBL1;
|
1997-04-05 13:08:30 +02:00
|
|
|
|
|
|
|
|
|
|
|
SELECT '' AS t_3, BOOLTBL1.*
|
|
|
|
FROM BOOLTBL1
|
2000-01-04 17:21:02 +01:00
|
|
|
WHERE f1 = bool 'true';
|
1997-04-05 13:08:30 +02:00
|
|
|
|
|
|
|
|
|
|
|
SELECT '' AS t_3, BOOLTBL1.*
|
|
|
|
FROM BOOLTBL1
|
2000-01-04 17:21:02 +01:00
|
|
|
WHERE f1 <> bool 'false';
|
1997-04-05 13:08:30 +02:00
|
|
|
|
|
|
|
SELECT '' AS zero, BOOLTBL1.*
|
|
|
|
FROM BOOLTBL1
|
2000-01-04 17:21:02 +01:00
|
|
|
WHERE booleq(bool 'false', f1);
|
1997-04-05 13:08:30 +02:00
|
|
|
|
2000-01-04 17:21:02 +01:00
|
|
|
INSERT INTO BOOLTBL1 (f1) VALUES (bool 'f');
|
1997-04-05 13:08:30 +02:00
|
|
|
|
|
|
|
SELECT '' AS f_1, BOOLTBL1.*
|
|
|
|
FROM BOOLTBL1
|
2000-01-04 17:21:02 +01:00
|
|
|
WHERE f1 = bool 'false';
|
1997-04-05 13:08:30 +02:00
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE BOOLTBL2 (f1 bool);
|
|
|
|
|
2000-01-04 17:21:02 +01:00
|
|
|
INSERT INTO BOOLTBL2 (f1) VALUES (bool 'f');
|
1997-04-05 13:08:30 +02:00
|
|
|
|
2000-01-04 17:21:02 +01:00
|
|
|
INSERT INTO BOOLTBL2 (f1) VALUES (bool 'false');
|
1997-04-05 13:08:30 +02:00
|
|
|
|
2000-01-04 17:21:02 +01:00
|
|
|
INSERT INTO BOOLTBL2 (f1) VALUES (bool 'False');
|
1997-04-05 13:08:30 +02:00
|
|
|
|
2000-01-04 17:21:02 +01:00
|
|
|
INSERT INTO BOOLTBL2 (f1) VALUES (bool 'FALSE');
|
1997-10-25 08:03:08 +02:00
|
|
|
|
1997-12-01 03:46:13 +01:00
|
|
|
-- This is now an invalid expression
|
|
|
|
-- For pre-v6.3 this evaluated to false - thomas 1997-10-23
|
1997-04-05 13:08:30 +02:00
|
|
|
INSERT INTO BOOLTBL2 (f1)
|
2000-01-04 17:21:02 +01:00
|
|
|
VALUES (bool 'XXX');
|
1997-04-05 13:08:30 +02:00
|
|
|
|
|
|
|
-- BOOLTBL2 should be full of false's at this point
|
2005-04-07 03:51:41 +02:00
|
|
|
SELECT '' AS f_4, BOOLTBL2.* FROM BOOLTBL2;
|
1997-04-05 13:08:30 +02:00
|
|
|
|
|
|
|
|
|
|
|
SELECT '' AS tf_12, BOOLTBL1.*, BOOLTBL2.*
|
2005-04-07 03:51:41 +02:00
|
|
|
FROM BOOLTBL1, BOOLTBL2
|
1997-04-05 13:08:30 +02:00
|
|
|
WHERE BOOLTBL2.f1 <> BOOLTBL1.f1;
|
|
|
|
|
|
|
|
|
|
|
|
SELECT '' AS tf_12, BOOLTBL1.*, BOOLTBL2.*
|
2005-04-07 03:51:41 +02:00
|
|
|
FROM BOOLTBL1, BOOLTBL2
|
1997-04-05 13:08:30 +02:00
|
|
|
WHERE boolne(BOOLTBL2.f1,BOOLTBL1.f1);
|
|
|
|
|
|
|
|
|
|
|
|
SELECT '' AS ff_4, BOOLTBL1.*, BOOLTBL2.*
|
2005-04-07 03:51:41 +02:00
|
|
|
FROM BOOLTBL1, BOOLTBL2
|
2000-01-04 17:21:02 +01:00
|
|
|
WHERE BOOLTBL2.f1 = BOOLTBL1.f1 and BOOLTBL1.f1 = bool 'false';
|
1997-04-05 13:08:30 +02:00
|
|
|
|
|
|
|
|
|
|
|
SELECT '' AS tf_12_ff_4, BOOLTBL1.*, BOOLTBL2.*
|
2005-04-07 03:51:41 +02:00
|
|
|
FROM BOOLTBL1, BOOLTBL2
|
2000-01-04 17:21:02 +01:00
|
|
|
WHERE BOOLTBL2.f1 = BOOLTBL1.f1 or BOOLTBL1.f1 = bool 'true'
|
1997-05-09 05:26:56 +02:00
|
|
|
ORDER BY BOOLTBL1.f1, BOOLTBL2.f1;
|
1997-04-27 06:36:10 +02:00
|
|
|
|
1997-12-01 03:46:13 +01:00
|
|
|
--
|
2000-01-04 17:21:02 +01:00
|
|
|
-- SQL92 syntax
|
|
|
|
-- Try all combinations to ensure that we get nothing when we expect nothing
|
|
|
|
-- - thomas 2000-01-04
|
1997-12-01 03:46:13 +01:00
|
|
|
--
|
|
|
|
|
2000-01-04 17:21:02 +01:00
|
|
|
SELECT '' AS "True", f1
|
1997-12-01 03:46:13 +01:00
|
|
|
FROM BOOLTBL1
|
|
|
|
WHERE f1 IS TRUE;
|
|
|
|
|
2000-01-04 17:21:02 +01:00
|
|
|
SELECT '' AS "Not False", f1
|
1997-12-01 03:46:13 +01:00
|
|
|
FROM BOOLTBL1
|
|
|
|
WHERE f1 IS NOT FALSE;
|
|
|
|
|
2000-01-04 17:21:02 +01:00
|
|
|
SELECT '' AS "False", f1
|
1997-12-01 03:46:13 +01:00
|
|
|
FROM BOOLTBL1
|
|
|
|
WHERE f1 IS FALSE;
|
|
|
|
|
2000-01-04 17:21:02 +01:00
|
|
|
SELECT '' AS "Not True", f1
|
1997-12-01 03:46:13 +01:00
|
|
|
FROM BOOLTBL1
|
|
|
|
WHERE f1 IS NOT TRUE;
|
|
|
|
|
2000-01-04 17:21:02 +01:00
|
|
|
SELECT '' AS "True", f1
|
|
|
|
FROM BOOLTBL2
|
|
|
|
WHERE f1 IS TRUE;
|
|
|
|
|
|
|
|
SELECT '' AS "Not False", f1
|
|
|
|
FROM BOOLTBL2
|
|
|
|
WHERE f1 IS NOT FALSE;
|
|
|
|
|
|
|
|
SELECT '' AS "False", f1
|
|
|
|
FROM BOOLTBL2
|
|
|
|
WHERE f1 IS FALSE;
|
|
|
|
|
|
|
|
SELECT '' AS "Not True", f1
|
|
|
|
FROM BOOLTBL2
|
|
|
|
WHERE f1 IS NOT TRUE;
|
|
|
|
|
1997-12-01 03:46:13 +01:00
|
|
|
--
|
|
|
|
-- Clean up
|
|
|
|
-- Many tables are retained by the regression test, but these do not seem
|
|
|
|
-- particularly useful so just get rid of them for now.
|
|
|
|
-- - thomas 1997-11-30
|
|
|
|
--
|
|
|
|
|
1997-04-27 06:36:10 +02:00
|
|
|
DROP TABLE BOOLTBL1;
|
|
|
|
|
|
|
|
DROP TABLE BOOLTBL2;
|