Fix pg_dump bug in the database-level collation patch. "datcollate" and
[PostgreSQL.git] / src / test / regress / sql / boolean.sql
blobc68f02e7a5a8252927f4bb20f716a964eeb90fe7
1 --
2 -- BOOLEAN
3 --
5 --
6 -- sanity check - if this fails go insane!
7 --
8 SELECT 1 AS one;
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.*
52    FROM BOOLTBL1
53    WHERE f1 = bool 'true';
56 SELECT '' AS t_3, BOOLTBL1.* 
57    FROM BOOLTBL1
58    WHERE f1 <> bool 'false';
60 SELECT '' AS zero, BOOLTBL1.*
61    FROM BOOLTBL1
62    WHERE booleq(bool 'false', f1);
64 INSERT INTO BOOLTBL1 (f1) VALUES (bool 'f');
66 SELECT '' AS f_1, BOOLTBL1.* 
67    FROM 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) 
84    VALUES (bool 'XXX');  
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;
111 -- SQL92 syntax
112 -- Try all combinations to ensure that we get nothing when we expect nothing
113 -- - thomas 2000-01-04
116 SELECT '' AS "True", f1
117    FROM BOOLTBL1
118    WHERE f1 IS TRUE;
120 SELECT '' AS "Not False", f1
121    FROM BOOLTBL1
122    WHERE f1 IS NOT FALSE;
124 SELECT '' AS "False", f1
125    FROM BOOLTBL1
126    WHERE f1 IS FALSE;
128 SELECT '' AS "Not True", f1
129    FROM BOOLTBL1
130    WHERE f1 IS NOT TRUE;
132 SELECT '' AS "True", f1
133    FROM BOOLTBL2
134    WHERE f1 IS TRUE;
136 SELECT '' AS "Not False", f1
137    FROM BOOLTBL2
138    WHERE f1 IS NOT FALSE;
140 SELECT '' AS "False", f1
141    FROM BOOLTBL2
142    WHERE f1 IS FALSE;
144 SELECT '' AS "Not True", f1
145    FROM BOOLTBL2
146    WHERE f1 IS NOT TRUE;
149 -- Clean up
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
155 DROP TABLE  BOOLTBL1;
157 DROP TABLE  BOOLTBL2;