6 -- sanity check - if this fails go insane!
11 -- ******************testing built-in type bool********************
13 -- check bool type-casting as well as and, or, not in qualifications--
15 SELECT bool 't' AS true;
17 SELECT bool ' f ' AS false;
19 SELECT bool 't' or bool 'f' AS true;
21 SELECT bool 't' and bool 'f' AS false;
23 SELECT not bool 'f' AS true;
25 SELECT bool 't' = bool 'f' AS false;
27 SELECT bool 't' <> bool 'f' AS true;
29 -- explicit casts to/from text
30 SELECT 'TrUe'::text::boolean AS true, 'fAlse'::text::boolean AS false;
31 SELECT ' true '::text::boolean AS true,
32 ' FALSE'::text::boolean AS false;
33 SELECT true::boolean::text AS true, false::boolean::text AS false;
35 SELECT ' tru e '::text::boolean AS invalid; -- error
36 SELECT ''::text::boolean AS invalid; -- error
38 CREATE TABLE BOOLTBL1 (f1 bool);
40 INSERT INTO BOOLTBL1 (f1) VALUES (bool 't');
42 INSERT INTO BOOLTBL1 (f1) VALUES (bool 'True');
44 INSERT INTO BOOLTBL1 (f1) VALUES (bool 'true');
47 -- BOOLTBL1 should be full of true's at this point
48 SELECT '' AS t_3, BOOLTBL1.* FROM BOOLTBL1;
51 SELECT '' AS t_3, BOOLTBL1.*
53 WHERE f1 = bool 'true';
56 SELECT '' AS t_3, BOOLTBL1.*
58 WHERE f1 <> bool 'false';
60 SELECT '' AS zero, BOOLTBL1.*
62 WHERE booleq(bool 'false', f1);
64 INSERT INTO BOOLTBL1 (f1) VALUES (bool 'f');
66 SELECT '' AS f_1, BOOLTBL1.*
68 WHERE f1 = bool 'false';
71 CREATE TABLE BOOLTBL2 (f1 bool);
73 INSERT INTO BOOLTBL2 (f1) VALUES (bool 'f');
75 INSERT INTO BOOLTBL2 (f1) VALUES (bool 'false');
77 INSERT INTO BOOLTBL2 (f1) VALUES (bool 'False');
79 INSERT INTO BOOLTBL2 (f1) VALUES (bool 'FALSE');
81 -- This is now an invalid expression
82 -- For pre-v6.3 this evaluated to false - thomas 1997-10-23
83 INSERT INTO BOOLTBL2 (f1)
86 -- BOOLTBL2 should be full of false's at this point
87 SELECT '' AS f_4, BOOLTBL2.* FROM BOOLTBL2;
90 SELECT '' AS tf_12, BOOLTBL1.*, BOOLTBL2.*
91 FROM BOOLTBL1, BOOLTBL2
92 WHERE BOOLTBL2.f1 <> BOOLTBL1.f1;
95 SELECT '' AS tf_12, BOOLTBL1.*, BOOLTBL2.*
96 FROM BOOLTBL1, BOOLTBL2
97 WHERE boolne(BOOLTBL2.f1,BOOLTBL1.f1);
100 SELECT '' AS ff_4, BOOLTBL1.*, BOOLTBL2.*
101 FROM BOOLTBL1, BOOLTBL2
102 WHERE BOOLTBL2.f1 = BOOLTBL1.f1 and BOOLTBL1.f1 = bool 'false';
105 SELECT '' AS tf_12_ff_4, BOOLTBL1.*, BOOLTBL2.*
106 FROM BOOLTBL1, BOOLTBL2
107 WHERE BOOLTBL2.f1 = BOOLTBL1.f1 or BOOLTBL1.f1 = bool 'true'
108 ORDER BY BOOLTBL1.f1, BOOLTBL2.f1;
112 -- Try all combinations to ensure that we get nothing when we expect nothing
113 -- - thomas 2000-01-04
116 SELECT '' AS "True", f1
120 SELECT '' AS "Not False", f1
122 WHERE f1 IS NOT FALSE;
124 SELECT '' AS "False", f1
128 SELECT '' AS "Not True", f1
130 WHERE f1 IS NOT TRUE;
132 SELECT '' AS "True", f1
136 SELECT '' AS "Not False", f1
138 WHERE f1 IS NOT FALSE;
140 SELECT '' AS "False", f1
144 SELECT '' AS "Not True", f1
146 WHERE f1 IS NOT TRUE;
150 -- Many tables are retained by the regression test, but these do not seem
151 -- particularly useful so just get rid of them for now.
152 -- - thomas 1997-11-30