]> granicus.if.org Git - postgresql/blob - src/test/regress/input/misc.source
Improve SELECT DISTINCT to consider hash aggregation, as well as sort/uniq,
[postgresql] / src / test / regress / input / misc.source
1 --
2 -- MISC
3 --
4
5 --
6 -- BTREE
7 --
8 UPDATE onek
9    SET unique1 = onek.unique1 + 1;
10
11 UPDATE onek
12    SET unique1 = onek.unique1 - 1;
13
14 --
15 -- BTREE partial
16 --
17 -- UPDATE onek2
18 --   SET unique1 = onek2.unique1 + 1;
19
20 --UPDATE onek2 
21 --   SET unique1 = onek2.unique1 - 1;
22
23 --
24 -- BTREE shutting out non-functional updates
25 --
26 -- the following two tests seem to take a long time on some 
27 -- systems.    This non-func update stuff needs to be examined
28 -- more closely.                        - jolly (2/22/96)
29 -- 
30 UPDATE tmp
31    SET stringu1 = reverse_name(onek.stringu1)
32    FROM onek
33    WHERE onek.stringu1 = 'JBAAAA' and
34           onek.stringu1 = tmp.stringu1;
35
36 UPDATE tmp
37    SET stringu1 = reverse_name(onek2.stringu1)
38    FROM onek2
39    WHERE onek2.stringu1 = 'JCAAAA' and
40           onek2.stringu1 = tmp.stringu1;
41
42 DROP TABLE tmp;
43
44 --UPDATE person*
45 --   SET age = age + 1;
46
47 --UPDATE person*
48 --   SET age = age + 3
49 --   WHERE name = 'linda';
50
51 --
52 -- copy
53 --
54 COPY onek TO '@abs_builddir@/results/onek.data';
55
56 DELETE FROM onek;
57
58 COPY onek FROM '@abs_builddir@/results/onek.data';
59
60 SELECT unique1 FROM onek WHERE unique1 < 2 ORDER BY unique1;
61
62 DELETE FROM onek2;
63
64 COPY onek2 FROM '@abs_builddir@/results/onek.data';
65
66 SELECT unique1 FROM onek2 WHERE unique1 < 2 ORDER BY unique1;
67
68 COPY BINARY stud_emp TO '@abs_builddir@/results/stud_emp.data';
69
70 DELETE FROM stud_emp;
71
72 COPY BINARY stud_emp FROM '@abs_builddir@/results/stud_emp.data';
73
74 SELECT * FROM stud_emp;
75
76 -- COPY aggtest FROM stdin;
77 -- 56   7.8
78 -- 100  99.097
79 -- 0    0.09561
80 -- 42   324.78
81 -- .
82 -- COPY aggtest TO stdout;
83
84
85 --
86 -- inheritance stress test
87 --
88 SELECT * FROM a_star*;
89
90 SELECT * 
91    FROM b_star* x
92    WHERE x.b = text 'bumble' or x.a < 3;
93
94 SELECT class, a 
95    FROM c_star* x 
96    WHERE x.c ~ text 'hi';
97
98 SELECT class, b, c
99    FROM d_star* x
100    WHERE x.a < 100;
101
102 SELECT class, c FROM e_star* x WHERE x.c NOTNULL;
103
104 SELECT * FROM f_star* x WHERE x.c ISNULL;
105
106 -- grouping and aggregation on inherited sets have been busted in the past...
107
108 SELECT sum(a) FROM a_star*;
109
110 SELECT class, sum(a) FROM a_star* GROUP BY class ORDER BY class;
111
112
113 ALTER TABLE f_star RENAME COLUMN f TO ff;
114
115 ALTER TABLE e_star* RENAME COLUMN e TO ee;
116
117 ALTER TABLE d_star* RENAME COLUMN d TO dd;
118
119 ALTER TABLE c_star* RENAME COLUMN c TO cc;
120
121 ALTER TABLE b_star* RENAME COLUMN b TO bb;
122
123 ALTER TABLE a_star* RENAME COLUMN a TO aa;
124
125 SELECT class, aa
126    FROM a_star* x
127    WHERE aa ISNULL;
128
129 -- As of Postgres 7.1, ALTER implicitly recurses,
130 -- so this should be same as ALTER a_star*
131
132 ALTER TABLE a_star RENAME COLUMN aa TO foo;
133
134 SELECT class, foo
135    FROM a_star* x
136    WHERE x.foo >= 2;
137
138 ALTER TABLE a_star RENAME COLUMN foo TO aa;
139
140 SELECT * 
141    from a_star*
142    WHERE aa < 1000;
143
144 ALTER TABLE f_star ADD COLUMN f int4;
145
146 UPDATE f_star SET f = 10;
147
148 ALTER TABLE e_star* ADD COLUMN e int4;
149
150 --UPDATE e_star* SET e = 42;
151
152 SELECT * FROM e_star*;
153
154 ALTER TABLE a_star* ADD COLUMN a text;
155
156 --UPDATE b_star*
157 --   SET a = text 'gazpacho'
158 --   WHERE aa > 4;
159
160 SELECT class, aa, a FROM a_star*;
161
162
163 --
164 -- versions
165 --
166
167 --
168 -- postquel functions
169 --
170 --
171 -- mike does post_hacking,
172 -- joe and sally play basketball, and
173 -- everyone else does nothing.
174 --
175 SELECT p.name, name(p.hobbies) FROM ONLY person p;
176
177 --
178 -- as above, but jeff also does post_hacking.
179 --
180 SELECT p.name, name(p.hobbies) FROM person* p;
181
182 --
183 -- the next two queries demonstrate how functions generate bogus duplicates.
184 -- this is a "feature" ..
185 --
186 SELECT DISTINCT hobbies_r.name, name(hobbies_r.equipment) FROM hobbies_r
187   ORDER BY 1,2;
188
189 SELECT hobbies_r.name, (hobbies_r.equipment).name FROM hobbies_r;
190
191 --
192 -- mike needs advil and peet's coffee,
193 -- joe and sally need hightops, and
194 -- everyone else is fine.
195 --
196 SELECT p.name, name(p.hobbies), name(equipment(p.hobbies)) FROM ONLY person p;
197
198 --
199 -- as above, but jeff needs advil and peet's coffee as well.
200 --
201 SELECT p.name, name(p.hobbies), name(equipment(p.hobbies)) FROM person* p;
202
203 --
204 -- just like the last two, but make sure that the target list fixup and
205 -- unflattening is being done correctly.
206 --
207 SELECT name(equipment(p.hobbies)), p.name, name(p.hobbies) FROM ONLY person p;
208
209 SELECT (p.hobbies).equipment.name, p.name, name(p.hobbies) FROM person* p;
210
211 SELECT (p.hobbies).equipment.name, name(p.hobbies), p.name FROM ONLY person p;
212
213 SELECT name(equipment(p.hobbies)), name(p.hobbies), p.name FROM person* p;
214
215 SELECT user_relns() AS user_relns
216    ORDER BY user_relns;
217
218 SELECT name(equipment(hobby_construct(text 'skywalking', text 'mer')));
219
220 SELECT hobbies_by_name('basketball');
221
222 SELECT name, overpaid(emp.*) FROM emp;
223
224 --
225 -- Try a few cases with SQL-spec row constructor expressions
226 --
227 SELECT * FROM equipment(ROW('skywalking', 'mer'));
228
229 SELECT name(equipment(ROW('skywalking', 'mer')));
230
231 SELECT *, name(equipment(h.*)) FROM hobbies_r h;
232
233 SELECT *, (equipment(CAST((h.*) AS hobbies_r))).name FROM hobbies_r h;
234
235 --
236 -- check that old-style C functions work properly with TOASTed values
237 --
238 create table oldstyle_test(i int4, t text);
239 insert into oldstyle_test values(null,null);
240 insert into oldstyle_test values(0,'12');
241 insert into oldstyle_test values(1000,'12');
242 insert into oldstyle_test values(0, repeat('x', 50000));
243
244 select i, length(t), octet_length(t), oldstyle_length(i,t) from oldstyle_test;
245
246 drop table oldstyle_test;
247
248 --
249 -- functional joins
250 --
251
252 --
253 -- instance rules
254 --
255
256 --
257 -- rewrite rules
258 --
259