~vcs-imports/mammoth-replicator/trunk

« back to all changes in this revision

Viewing changes to src/test/regress/expected/select_implicit_2.out

  • Committer: alvherre
  • Date: 2005-12-16 21:24:52 UTC
  • Revision ID: svn-v4:db760fc0-0f08-0410-9d63-cc6633f64896:trunk:1
Initial import of the REL8_0_3 sources from the Pgsql CVS repository.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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     |     1
 
26
 BBBB     |     2
 
27
 cccc     |     2
 
28
 CCCC     |     2
 
29
 XXXX     |     1
 
30
(6 rows)
 
31
 
 
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
     1
 
38
     2
 
39
     2
 
40
     2
 
41
     1
 
42
(6 rows)
 
43
 
 
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
--   w/o existing GROUP BY target and w/o existing same ORDER BY target
 
49
SELECT count(*) FROM test_missing_target GROUP BY b ORDER BY b;
 
50
 count 
 
51
-------
 
52
     1
 
53
     2
 
54
     3
 
55
     4
 
56
(4 rows)
 
57
 
 
58
--   w/ existing GROUP BY target using a relation name in target
 
59
SELECT test_missing_target.b, count(*)
 
60
  FROM test_missing_target GROUP BY b ORDER BY b;
 
61
 b | count 
 
62
---+-------
 
63
 1 |     1
 
64
 2 |     2
 
65
 3 |     3
 
66
 4 |     4
 
67
(4 rows)
 
68
 
 
69
--   w/o existing GROUP BY target
 
70
SELECT c FROM test_missing_target ORDER BY a;
 
71
    c     
 
72
----------
 
73
 XXXX    
 
74
 AAAA    
 
75
 AAAA    
 
76
 BBBB    
 
77
 BBBB    
 
78
 bbbb    
 
79
 cccc    
 
80
 cccc    
 
81
 CCCC    
 
82
 CCCC    
 
83
(10 rows)
 
84
 
 
85
--   w/o existing ORDER BY target
 
86
SELECT count(*) FROM test_missing_target GROUP BY b ORDER BY b desc;
 
87
 count 
 
88
-------
 
89
     4
 
90
     3
 
91
     2
 
92
     1
 
93
(4 rows)
 
94
 
 
95
--   group using reference number
 
96
SELECT count(*) FROM test_missing_target ORDER BY 1 desc;
 
97
 count 
 
98
-------
 
99
    10
 
100
(1 row)
 
101
 
 
102
--   order using reference number
 
103
SELECT c, count(*) FROM test_missing_target GROUP BY 1 ORDER BY 1;
 
104
    c     | count 
 
105
----------+-------
 
106
 AAAA     |     2
 
107
 bbbb     |     1
 
108
 BBBB     |     2
 
109
 cccc     |     2
 
110
 CCCC     |     2
 
111
 XXXX     |     1
 
112
(6 rows)
 
113
 
 
114
--   group using reference number out of range
 
115
--   failure expected
 
116
SELECT c, count(*) FROM test_missing_target GROUP BY 3;
 
117
ERROR:  GROUP BY position 3 is not in select list
 
118
--   group w/o existing GROUP BY and ORDER BY target under ambiguous condition
 
119
--   failure expected
 
120
SELECT count(*) FROM test_missing_target x, test_missing_target y 
 
121
        WHERE x.a = y.a
 
122
        GROUP BY b ORDER BY b;
 
123
ERROR:  column reference "b" is ambiguous
 
124
--   order w/ target under ambiguous condition
 
125
--   failure NOT expected
 
126
SELECT a, a FROM test_missing_target
 
127
        ORDER BY a;
 
128
 a | a 
 
129
---+---
 
130
 0 | 0
 
131
 1 | 1
 
132
 2 | 2
 
133
 3 | 3
 
134
 4 | 4
 
135
 5 | 5
 
136
 6 | 6
 
137
 7 | 7
 
138
 8 | 8
 
139
 9 | 9
 
140
(10 rows)
 
141
 
 
142
--   order expression w/ target under ambiguous condition
 
143
--   failure NOT expected
 
144
SELECT a/2, a/2 FROM test_missing_target
 
145
        ORDER BY a/2;
 
146
 ?column? | ?column? 
 
147
----------+----------
 
148
        0 |        0
 
149
        0 |        0
 
150
        1 |        1
 
151
        1 |        1
 
152
        2 |        2
 
153
        2 |        2
 
154
        3 |        3
 
155
        3 |        3
 
156
        4 |        4
 
157
        4 |        4
 
158
(10 rows)
 
159
 
 
160
--   group expression w/ target under ambiguous condition
 
161
--   failure NOT expected
 
162
SELECT a/2, a/2 FROM test_missing_target
 
163
        GROUP BY a/2 ORDER BY a/2;
 
164
 ?column? | ?column? 
 
165
----------+----------
 
166
        0 |        0
 
167
        1 |        1
 
168
        2 |        2
 
169
        3 |        3
 
170
        4 |        4
 
171
(5 rows)
 
172
 
 
173
--   group w/ existing GROUP BY target under ambiguous condition
 
174
SELECT x.b, count(*) FROM test_missing_target x, test_missing_target y 
 
175
        WHERE x.a = y.a
 
176
        GROUP BY x.b ORDER BY x.b;
 
177
 b | count 
 
178
---+-------
 
179
 1 |     1
 
180
 2 |     2
 
181
 3 |     3
 
182
 4 |     4
 
183
(4 rows)
 
184
 
 
185
--   group w/o existing GROUP BY target under ambiguous condition
 
186
SELECT count(*) FROM test_missing_target x, test_missing_target y 
 
187
        WHERE x.a = y.a
 
188
        GROUP BY x.b ORDER BY x.b;
 
189
 count 
 
190
-------
 
191
     1
 
192
     2
 
193
     3
 
194
     4
 
195
(4 rows)
 
196
 
 
197
--   group w/o existing GROUP BY target under ambiguous condition
 
198
--   into a table
 
199
SELECT count(*) INTO TABLE test_missing_target2 
 
200
FROM test_missing_target x, test_missing_target y 
 
201
        WHERE x.a = y.a
 
202
        GROUP BY x.b ORDER BY x.b;
 
203
SELECT * FROM test_missing_target2;
 
204
 count 
 
205
-------
 
206
     1
 
207
     2
 
208
     3
 
209
     4
 
210
(4 rows)
 
211
 
 
212
--  Functions and expressions
 
213
--   w/ existing GROUP BY target
 
214
SELECT a%2, count(b) FROM test_missing_target
 
215
GROUP BY test_missing_target.a%2
 
216
ORDER BY test_missing_target.a%2;
 
217
 ?column? | count 
 
218
----------+-------
 
219
        0 |     5
 
220
        1 |     5
 
221
(2 rows)
 
222
 
 
223
--   w/o existing GROUP BY target using a relation name in GROUP BY clause
 
224
SELECT count(c) FROM test_missing_target
 
225
GROUP BY lower(test_missing_target.c)
 
226
ORDER BY lower(test_missing_target.c);
 
227
 count 
 
228
-------
 
229
     2
 
230
     3
 
231
     4
 
232
     1
 
233
(4 rows)
 
234
 
 
235
--   w/o existing GROUP BY target and w/o existing a different ORDER BY target
 
236
--   failure expected
 
237
SELECT count(a) FROM test_missing_target GROUP BY a ORDER BY b;
 
238
ERROR:  column "test_missing_target.b" must appear in the GROUP BY clause or be used in an aggregate function
 
239
--   w/o existing GROUP BY target and w/o existing same ORDER BY target
 
240
SELECT count(b) FROM test_missing_target GROUP BY b/2 ORDER BY b/2;
 
241
 count 
 
242
-------
 
243
     1
 
244
     5
 
245
     4
 
246
(3 rows)
 
247
 
 
248
--   w/ existing GROUP BY target using a relation name in target
 
249
SELECT lower(test_missing_target.c), count(c)
 
250
  FROM test_missing_target GROUP BY lower(c) ORDER BY lower(c);
 
251
 lower | count 
 
252
-------+-------
 
253
 aaaa  |     2
 
254
 bbbb  |     3
 
255
 cccc  |     4
 
256
 xxxx  |     1
 
257
(4 rows)
 
258
 
 
259
--   w/o existing GROUP BY target
 
260
SELECT a FROM test_missing_target ORDER BY upper(d);
 
261
 a 
 
262
---
 
263
 0
 
264
 1
 
265
 2
 
266
 3
 
267
 4
 
268
 5
 
269
 6
 
270
 7
 
271
 8
 
272
 9
 
273
(10 rows)
 
274
 
 
275
--   w/o existing ORDER BY target
 
276
SELECT count(b) FROM test_missing_target
 
277
        GROUP BY (b + 1) / 2 ORDER BY (b + 1) / 2 desc;
 
278
 count 
 
279
-------
 
280
     7
 
281
     3
 
282
(2 rows)
 
283
 
 
284
--   group w/o existing GROUP BY and ORDER BY target under ambiguous condition
 
285
--   failure expected
 
286
SELECT count(x.a) FROM test_missing_target x, test_missing_target y 
 
287
        WHERE x.a = y.a
 
288
        GROUP BY b/2 ORDER BY b/2;
 
289
ERROR:  column reference "b" is ambiguous
 
290
--   group w/ existing GROUP BY target under ambiguous condition
 
291
SELECT x.b/2, count(x.b) FROM test_missing_target x, test_missing_target y 
 
292
        WHERE x.a = y.a
 
293
        GROUP BY x.b/2 ORDER BY x.b/2;
 
294
 ?column? | count 
 
295
----------+-------
 
296
        0 |     1
 
297
        1 |     5
 
298
        2 |     4
 
299
(3 rows)
 
300
 
 
301
--   group w/o existing GROUP BY target under ambiguous condition
 
302
--   failure expected due to ambiguous b in count(b)
 
303
SELECT count(b) FROM test_missing_target x, test_missing_target y 
 
304
        WHERE x.a = y.a
 
305
        GROUP BY x.b/2;
 
306
ERROR:  column reference "b" is ambiguous
 
307
--   group w/o existing GROUP BY target under ambiguous condition
 
308
--   into a table
 
309
SELECT count(x.b) INTO TABLE test_missing_target3 
 
310
FROM test_missing_target x, test_missing_target y 
 
311
        WHERE x.a = y.a
 
312
        GROUP BY x.b/2 ORDER BY x.b/2;
 
313
SELECT * FROM test_missing_target3;
 
314
 count 
 
315
-------
 
316
     1
 
317
     5
 
318
     4
 
319
(3 rows)
 
320
 
 
321
--   Cleanup
 
322
DROP TABLE test_missing_target;
 
323
DROP TABLE test_missing_target2;
 
324
DROP TABLE test_missing_target3;