]> granicus.if.org Git - postgresql/blob - src/test/regress/expected/case.out
Remove useless whitespace at end of lines
[postgresql] / src / test / regress / expected / case.out
1 --
2 -- CASE
3 -- Test the case statement
4 --
5 CREATE TABLE CASE_TBL (
6   i integer,
7   f double precision
8 );
9 CREATE TABLE CASE2_TBL (
10   i integer,
11   j integer
12 );
13 INSERT INTO CASE_TBL VALUES (1, 10.1);
14 INSERT INTO CASE_TBL VALUES (2, 20.2);
15 INSERT INTO CASE_TBL VALUES (3, -30.3);
16 INSERT INTO CASE_TBL VALUES (4, NULL);
17 INSERT INTO CASE2_TBL VALUES (1, -1);
18 INSERT INTO CASE2_TBL VALUES (2, -2);
19 INSERT INTO CASE2_TBL VALUES (3, -3);
20 INSERT INTO CASE2_TBL VALUES (2, -4);
21 INSERT INTO CASE2_TBL VALUES (1, NULL);
22 INSERT INTO CASE2_TBL VALUES (NULL, -6);
23 --
24 -- Simplest examples without tables
25 --
26 SELECT '3' AS "One",
27   CASE
28     WHEN 1 < 2 THEN 3
29   END AS "Simple WHEN";
30  One | Simple WHEN 
31 -----+-------------
32  3   |           3
33 (1 row)
34
35 SELECT '<NULL>' AS "One",
36   CASE
37     WHEN 1 > 2 THEN 3
38   END AS "Simple default";
39   One   | Simple default 
40 --------+----------------
41  <NULL> |               
42 (1 row)
43
44 SELECT '3' AS "One",
45   CASE
46     WHEN 1 < 2 THEN 3
47     ELSE 4
48   END AS "Simple ELSE";
49  One | Simple ELSE 
50 -----+-------------
51  3   |           3
52 (1 row)
53
54 SELECT '4' AS "One",
55   CASE
56     WHEN 1 > 2 THEN 3
57     ELSE 4
58   END AS "ELSE default";
59  One | ELSE default 
60 -----+--------------
61  4   |            4
62 (1 row)
63
64 SELECT '6' AS "One",
65   CASE
66     WHEN 1 > 2 THEN 3
67     WHEN 4 < 5 THEN 6
68     ELSE 7
69   END AS "Two WHEN with default";
70  One | Two WHEN with default 
71 -----+-----------------------
72  6   |                     6
73 (1 row)
74
75 -- Constant-expression folding shouldn't evaluate unreachable subexpressions
76 SELECT CASE WHEN 1=0 THEN 1/0 WHEN 1=1 THEN 1 ELSE 2/0 END;
77  case 
78 ------
79     1
80 (1 row)
81
82 SELECT CASE 1 WHEN 0 THEN 1/0 WHEN 1 THEN 1 ELSE 2/0 END;
83  case 
84 ------
85     1
86 (1 row)
87
88 -- However we do not currently suppress folding of potentially
89 -- reachable subexpressions
90 SELECT CASE WHEN i > 100 THEN 1/0 ELSE 0 END FROM case_tbl;
91 ERROR:  division by zero
92 -- Test for cases involving untyped literals in test expression
93 SELECT CASE 'a' WHEN 'a' THEN 1 ELSE 2 END;
94  case 
95 ------
96     1
97 (1 row)
98
99 --
100 -- Examples of targets involving tables
101 --
102 SELECT '' AS "Five",
103   CASE
104     WHEN i >= 3 THEN i
105   END AS ">= 3 or Null"
106   FROM CASE_TBL;
107  Five | >= 3 or Null 
108 ------+--------------
109       |             
110       |             
111       |            3
112       |            4
113 (4 rows)
114
115 SELECT '' AS "Five",
116   CASE WHEN i >= 3 THEN (i + i)
117        ELSE i
118   END AS "Simplest Math"
119   FROM CASE_TBL;
120  Five | Simplest Math 
121 ------+---------------
122       |             1
123       |             2
124       |             6
125       |             8
126 (4 rows)
127
128 SELECT '' AS "Five", i AS "Value",
129   CASE WHEN (i < 0) THEN 'small'
130        WHEN (i = 0) THEN 'zero'
131        WHEN (i = 1) THEN 'one'
132        WHEN (i = 2) THEN 'two'
133        ELSE 'big'
134   END AS "Category"
135   FROM CASE_TBL;
136  Five | Value | Category 
137 ------+-------+----------
138       |     1 | one
139       |     2 | two
140       |     3 | big
141       |     4 | big
142 (4 rows)
143
144 SELECT '' AS "Five",
145   CASE WHEN ((i < 0) or (i < 0)) THEN 'small'
146        WHEN ((i = 0) or (i = 0)) THEN 'zero'
147        WHEN ((i = 1) or (i = 1)) THEN 'one'
148        WHEN ((i = 2) or (i = 2)) THEN 'two'
149        ELSE 'big'
150   END AS "Category"
151   FROM CASE_TBL;
152  Five | Category 
153 ------+----------
154       | one
155       | two
156       | big
157       | big
158 (4 rows)
159
160 --
161 -- Examples of qualifications involving tables
162 --
163 --
164 -- NULLIF() and COALESCE()
165 -- Shorthand forms for typical CASE constructs
166 --  defined in the SQL92 standard.
167 --
168 SELECT * FROM CASE_TBL WHERE COALESCE(f,i) = 4;
169  i | f 
170 ---+---
171  4 |  
172 (1 row)
173
174 SELECT * FROM CASE_TBL WHERE NULLIF(f,i) = 2;
175  i | f 
176 ---+---
177 (0 rows)
178
179 SELECT COALESCE(a.f, b.i, b.j)
180   FROM CASE_TBL a, CASE2_TBL b;
181  coalesce 
182 ----------
183      10.1
184      20.2
185     -30.3
186         1
187      10.1
188      20.2
189     -30.3
190         2
191      10.1
192      20.2
193     -30.3
194         3
195      10.1
196      20.2
197     -30.3
198         2
199      10.1
200      20.2
201     -30.3
202         1
203      10.1
204      20.2
205     -30.3
206        -6
207 (24 rows)
208
209 SELECT *
210   FROM CASE_TBL a, CASE2_TBL b
211   WHERE COALESCE(a.f, b.i, b.j) = 2;
212  i | f | i | j  
213 ---+---+---+----
214  4 |   | 2 | -2
215  4 |   | 2 | -4
216 (2 rows)
217
218 SELECT '' AS Five, NULLIF(a.i,b.i) AS "NULLIF(a.i,b.i)",
219   NULLIF(b.i, 4) AS "NULLIF(b.i,4)"
220   FROM CASE_TBL a, CASE2_TBL b;
221  five | NULLIF(a.i,b.i) | NULLIF(b.i,4) 
222 ------+-----------------+---------------
223       |                 |             1
224       |               2 |             1
225       |               3 |             1
226       |               4 |             1
227       |               1 |             2
228       |                 |             2
229       |               3 |             2
230       |               4 |             2
231       |               1 |             3
232       |               2 |             3
233       |                 |             3
234       |               4 |             3
235       |               1 |             2
236       |                 |             2
237       |               3 |             2
238       |               4 |             2
239       |                 |             1
240       |               2 |             1
241       |               3 |             1
242       |               4 |             1
243       |               1 |              
244       |               2 |              
245       |               3 |              
246       |               4 |              
247 (24 rows)
248
249 SELECT '' AS "Two", *
250   FROM CASE_TBL a, CASE2_TBL b
251   WHERE COALESCE(f,b.i) = 2;
252  Two | i | f | i | j  
253 -----+---+---+---+----
254      | 4 |   | 2 | -2
255      | 4 |   | 2 | -4
256 (2 rows)
257
258 --
259 -- Examples of updates involving tables
260 --
261 UPDATE CASE_TBL
262   SET i = CASE WHEN i >= 3 THEN (- i)
263                 ELSE (2 * i) END;
264 SELECT * FROM CASE_TBL;
265  i  |   f   
266 ----+-------
267   2 |  10.1
268   4 |  20.2
269  -3 | -30.3
270  -4 |      
271 (4 rows)
272
273 UPDATE CASE_TBL
274   SET i = CASE WHEN i >= 2 THEN (2 * i)
275                 ELSE (3 * i) END;
276 SELECT * FROM CASE_TBL;
277   i  |   f   
278 -----+-------
279    4 |  10.1
280    8 |  20.2
281   -9 | -30.3
282  -12 |      
283 (4 rows)
284
285 UPDATE CASE_TBL
286   SET i = CASE WHEN b.i >= 2 THEN (2 * j)
287                 ELSE (3 * j) END
288   FROM CASE2_TBL b
289   WHERE j = -CASE_TBL.i;
290 SELECT * FROM CASE_TBL;
291   i  |   f   
292 -----+-------
293    8 |  20.2
294   -9 | -30.3
295  -12 |      
296   -8 |  10.1
297 (4 rows)
298
299 --
300 -- Clean up
301 --
302 DROP TABLE CASE_TBL;
303 DROP TABLE CASE2_TBL;