Fix obsolete comment regarding FSM truncation.
[PostgreSQL.git] / src / test / regress / expected / select_implicit_1.out
blob1527ce42774b2f52ca845165f5d8bbe179e73845
1 --
2 -- SELECT_IMPLICIT
3 -- Test cases for queries with ordering terms missing from the target list.
4 -- This used to be called "junkfilter.sql".
5 -- The parser uses the term "resjunk" to handle these cases.
6 -- - thomas 1998-07-09
7 --
8 -- load test data
9 CREATE TABLE test_missing_target (a int, b int, c char(8), d char);
10 INSERT INTO test_missing_target VALUES (0, 1, 'XXXX', 'A');
11 INSERT INTO test_missing_target VALUES (1, 2, 'AAAA', 'b');
12 INSERT INTO test_missing_target VALUES (2, 2, 'AAAA', 'c');
13 INSERT INTO test_missing_target VALUES (3, 3, 'BBBB', 'D');
14 INSERT INTO test_missing_target VALUES (4, 3, 'BBBB', 'e');
15 INSERT INTO test_missing_target VALUES (5, 3, 'bbbb', 'F');
16 INSERT INTO test_missing_target VALUES (6, 4, 'cccc', 'g');
17 INSERT INTO test_missing_target VALUES (7, 4, 'cccc', 'h');
18 INSERT INTO test_missing_target VALUES (8, 4, 'CCCC', 'I');
19 INSERT INTO test_missing_target VALUES (9, 4, 'CCCC', 'j');
20 --   w/ existing GROUP BY target
21 SELECT c, count(*) FROM test_missing_target GROUP BY test_missing_target.c ORDER BY c;
22     c     | count 
23 ----------+-------
24  AAAA     |     2
25  BBBB     |     2
26  bbbb     |     1
27  CCCC     |     2
28  cccc     |     2
29  XXXX     |     1
30 (6 rows)
32 --   w/o existing GROUP BY target using a relation name in GROUP BY clause
33 SELECT count(*) FROM test_missing_target GROUP BY test_missing_target.c ORDER BY c;
34  count 
35 -------
36      2
37      2
38      1
39      2
40      2
41      1
42 (6 rows)
44 --   w/o existing GROUP BY target and w/o existing a different ORDER BY target
45 --   failure expected
46 SELECT count(*) FROM test_missing_target GROUP BY a ORDER BY b;
47 ERROR:  column "test_missing_target.b" must appear in the GROUP BY clause or be used in an aggregate function
48 LINE 1: ...ECT count(*) FROM test_missing_target GROUP BY a ORDER BY b;
49                                                                      ^
50 --   w/o existing GROUP BY target and w/o existing same ORDER BY target
51 SELECT count(*) FROM test_missing_target GROUP BY b ORDER BY b;
52  count 
53 -------
54      1
55      2
56      3
57      4
58 (4 rows)
60 --   w/ existing GROUP BY target using a relation name in target
61 SELECT test_missing_target.b, count(*)
62   FROM test_missing_target GROUP BY b ORDER BY b;
63  b | count 
64 ---+-------
65  1 |     1
66  2 |     2
67  3 |     3
68  4 |     4
69 (4 rows)
71 --   w/o existing GROUP BY target
72 SELECT c FROM test_missing_target ORDER BY a;
73     c     
74 ----------
75  XXXX    
76  AAAA    
77  AAAA    
78  BBBB    
79  BBBB    
80  bbbb    
81  cccc    
82  cccc    
83  CCCC    
84  CCCC    
85 (10 rows)
87 --   w/o existing ORDER BY target
88 SELECT count(*) FROM test_missing_target GROUP BY b ORDER BY b desc;
89  count 
90 -------
91      4
92      3
93      2
94      1
95 (4 rows)
97 --   group using reference number
98 SELECT count(*) FROM test_missing_target ORDER BY 1 desc;
99  count 
100 -------
101     10
102 (1 row)
104 --   order using reference number
105 SELECT c, count(*) FROM test_missing_target GROUP BY 1 ORDER BY 1;
106     c     | count 
107 ----------+-------
108  AAAA     |     2
109  BBBB     |     2
110  bbbb     |     1
111  CCCC     |     2
112  cccc     |     2
113  XXXX     |     1
114 (6 rows)
116 --   group using reference number out of range
117 --   failure expected
118 SELECT c, count(*) FROM test_missing_target GROUP BY 3;
119 ERROR:  GROUP BY position 3 is not in select list
120 LINE 1: SELECT c, count(*) FROM test_missing_target GROUP BY 3;
121                                                              ^
122 --   group w/o existing GROUP BY and ORDER BY target under ambiguous condition
123 --   failure expected
124 SELECT count(*) FROM test_missing_target x, test_missing_target y 
125         WHERE x.a = y.a
126         GROUP BY b ORDER BY b;
127 ERROR:  column reference "b" is ambiguous
128 LINE 3:  GROUP BY b ORDER BY b;
129                              ^
130 --   order w/ target under ambiguous condition
131 --   failure NOT expected
132 SELECT a, a FROM test_missing_target
133         ORDER BY a;
134  a | a 
135 ---+---
136  0 | 0
137  1 | 1
138  2 | 2
139  3 | 3
140  4 | 4
141  5 | 5
142  6 | 6
143  7 | 7
144  8 | 8
145  9 | 9
146 (10 rows)
148 --   order expression w/ target under ambiguous condition
149 --   failure NOT expected
150 SELECT a/2, a/2 FROM test_missing_target
151         ORDER BY a/2;
152  ?column? | ?column? 
153 ----------+----------
154         0 |        0
155         0 |        0
156         1 |        1
157         1 |        1
158         2 |        2
159         2 |        2
160         3 |        3
161         3 |        3
162         4 |        4
163         4 |        4
164 (10 rows)
166 --   group expression w/ target under ambiguous condition
167 --   failure NOT expected
168 SELECT a/2, a/2 FROM test_missing_target
169         GROUP BY a/2 ORDER BY a/2;
170  ?column? | ?column? 
171 ----------+----------
172         0 |        0
173         1 |        1
174         2 |        2
175         3 |        3
176         4 |        4
177 (5 rows)
179 --   group w/ existing GROUP BY target under ambiguous condition
180 SELECT x.b, count(*) FROM test_missing_target x, test_missing_target y 
181         WHERE x.a = y.a
182         GROUP BY x.b ORDER BY x.b;
183  b | count 
184 ---+-------
185  1 |     1
186  2 |     2
187  3 |     3
188  4 |     4
189 (4 rows)
191 --   group w/o existing GROUP BY target under ambiguous condition
192 SELECT count(*) FROM test_missing_target x, test_missing_target y 
193         WHERE x.a = y.a
194         GROUP BY x.b ORDER BY x.b;
195  count 
196 -------
197      1
198      2
199      3
200      4
201 (4 rows)
203 --   group w/o existing GROUP BY target under ambiguous condition
204 --   into a table
205 SELECT count(*) INTO TABLE test_missing_target2 
206 FROM test_missing_target x, test_missing_target y 
207         WHERE x.a = y.a
208         GROUP BY x.b ORDER BY x.b;
209 SELECT * FROM test_missing_target2;
210  count 
211 -------
212      1
213      2
214      3
215      4
216 (4 rows)
218 --  Functions and expressions
219 --   w/ existing GROUP BY target
220 SELECT a%2, count(b) FROM test_missing_target
221 GROUP BY test_missing_target.a%2
222 ORDER BY test_missing_target.a%2;
223  ?column? | count 
224 ----------+-------
225         0 |     5
226         1 |     5
227 (2 rows)
229 --   w/o existing GROUP BY target using a relation name in GROUP BY clause
230 SELECT count(c) FROM test_missing_target
231 GROUP BY lower(test_missing_target.c)
232 ORDER BY lower(test_missing_target.c);
233  count 
234 -------
235      2
236      3
237      4
238      1
239 (4 rows)
241 --   w/o existing GROUP BY target and w/o existing a different ORDER BY target
242 --   failure expected
243 SELECT count(a) FROM test_missing_target GROUP BY a ORDER BY b;
244 ERROR:  column "test_missing_target.b" must appear in the GROUP BY clause or be used in an aggregate function
245 LINE 1: ...ECT count(a) FROM test_missing_target GROUP BY a ORDER BY b;
246                                                                      ^
247 --   w/o existing GROUP BY target and w/o existing same ORDER BY target
248 SELECT count(b) FROM test_missing_target GROUP BY b/2 ORDER BY b/2;
249  count 
250 -------
251      1
252      5
253      4
254 (3 rows)
256 --   w/ existing GROUP BY target using a relation name in target
257 SELECT lower(test_missing_target.c), count(c)
258   FROM test_missing_target GROUP BY lower(c) ORDER BY lower(c);
259  lower | count 
260 -------+-------
261  aaaa  |     2
262  bbbb  |     3
263  cccc  |     4
264  xxxx  |     1
265 (4 rows)
267 --   w/o existing GROUP BY target
268 SELECT a FROM test_missing_target ORDER BY upper(d);
269  a 
281 (10 rows)
283 --   w/o existing ORDER BY target
284 SELECT count(b) FROM test_missing_target
285         GROUP BY (b + 1) / 2 ORDER BY (b + 1) / 2 desc;
286  count 
287 -------
288      7
289      3
290 (2 rows)
292 --   group w/o existing GROUP BY and ORDER BY target under ambiguous condition
293 --   failure expected
294 SELECT count(x.a) FROM test_missing_target x, test_missing_target y 
295         WHERE x.a = y.a
296         GROUP BY b/2 ORDER BY b/2;
297 ERROR:  column reference "b" is ambiguous
298 LINE 3:  GROUP BY b/2 ORDER BY b/2;
299                                ^
300 --   group w/ existing GROUP BY target under ambiguous condition
301 SELECT x.b/2, count(x.b) FROM test_missing_target x, test_missing_target y 
302         WHERE x.a = y.a
303         GROUP BY x.b/2 ORDER BY x.b/2;
304  ?column? | count 
305 ----------+-------
306         0 |     1
307         1 |     5
308         2 |     4
309 (3 rows)
311 --   group w/o existing GROUP BY target under ambiguous condition
312 --   failure expected due to ambiguous b in count(b)
313 SELECT count(b) FROM test_missing_target x, test_missing_target y 
314         WHERE x.a = y.a
315         GROUP BY x.b/2;
316 ERROR:  column reference "b" is ambiguous
317 LINE 1: SELECT count(b) FROM test_missing_target x, test_missing_tar...
318                      ^
319 --   group w/o existing GROUP BY target under ambiguous condition
320 --   into a table
321 SELECT count(x.b) INTO TABLE test_missing_target3 
322 FROM test_missing_target x, test_missing_target y 
323         WHERE x.a = y.a
324         GROUP BY x.b/2 ORDER BY x.b/2;
325 SELECT * FROM test_missing_target3;
326  count 
327 -------
328      1
329      5
330      4
331 (3 rows)
333 --   Cleanup
334 DROP TABLE test_missing_target;
335 DROP TABLE test_missing_target2;
336 DROP TABLE test_missing_target3;