1
1
CREATE EXTENSION aqo;
2
2
SET aqo.mode = 'learn';
3
+ DROP TABLE IF EXISTS a;
4
+ NOTICE: table "a" does not exist, skipping
5
+ DROP TABLE IF EXISTS b;
6
+ NOTICE: table "b" does not exist, skipping
3
7
CREATE TABLE a();
4
8
SELECT * FROM a;
5
9
--
@@ -13,13 +17,42 @@ NOTICE: Cleaning aqo_data records
13
17
14
18
(1 row)
15
19
16
- -- lines with a_oid should remain
20
+ /*
21
+ * lines with a_oid in aqo_data,
22
+ * lines with fspace_hash corresponding to a_oid in aqo_queries,
23
+ * lines with query_hash corresponding to a_oid's fspace_hash in aqo_query_texts,
24
+ * lines with query_hash corresponding to a_oid's fspace_hash in aqo_query_stat
25
+ * should remain
26
+ */
17
27
SELECT count(*) FROM aqo_data WHERE :a_oid=ANY(oids);
18
28
count
19
29
-------
20
30
1
21
31
(1 row)
22
32
33
+ SELECT count(*) FROM aqo_queries WHERE
34
+ aqo_queries.fspace_hash = ANY(SELECT aqo_data.fspace_hash FROM aqo_data WHERE :a_oid=ANY(oids));
35
+ count
36
+ -------
37
+ 1
38
+ (1 row)
39
+
40
+ SELECT count(*) FROM aqo_query_texts WHERE
41
+ aqo_query_texts.query_hash = ANY(SELECT aqo_queries.query_hash FROM aqo_queries WHERE
42
+ aqo_queries.fspace_hash = ANY(SELECT aqo_data.fspace_hash FROM aqo_data WHERE :a_oid=ANY(oids)));
43
+ count
44
+ -------
45
+ 1
46
+ (1 row)
47
+
48
+ SELECT count(*) FROM aqo_query_stat WHERE
49
+ aqo_query_stat.query_hash = ANY(SELECT aqo_queries.query_hash FROM aqo_queries WHERE
50
+ aqo_queries.fspace_hash = ANY(SELECT aqo_data.fspace_hash FROM aqo_data WHERE :a_oid=ANY(oids)));
51
+ count
52
+ -------
53
+ 1
54
+ (1 row)
55
+
23
56
DROP TABLE a;
24
57
SELECT clean_aqo_data();
25
58
NOTICE: Cleaning aqo_data records
@@ -28,13 +61,45 @@ NOTICE: Cleaning aqo_data records
28
61
29
62
(1 row)
30
63
31
- -- lines with a_oid should be deleted
64
+ /*
65
+ * lines with a_oid in aqo_data,
66
+ * lines with a_oid's fspace_hash EQUAL TO query_hash in aqo_queries,
67
+ * lines with query_hash corresponding to a_oid's fspace_hash in aqo_query_texts,
68
+ * lines with query_hash corresponding to a_oid's fspace_hash in aqo_query_stat,
69
+ * should be deleted
70
+ */
32
71
SELECT count(*) FROM aqo_data WHERE :a_oid=ANY(oids);
33
72
count
34
73
-------
35
74
0
36
75
(1 row)
37
76
77
+ SELECT count(*) FROM aqo_queries WHERE
78
+ aqo_queries.fspace_hash = ANY(SELECT aqo_data.fspace_hash FROM aqo_data WHERE :a_oid=ANY(oids)) AND
79
+ aqo_queries.fspace_hash = aqo_queries.query_hash;
80
+ count
81
+ -------
82
+ 0
83
+ (1 row)
84
+
85
+ SELECT count(*) FROM aqo_query_texts WHERE
86
+ aqo_query_texts.query_hash = ANY(SELECT aqo_queries.query_hash FROM aqo_queries WHERE
87
+ aqo_queries.fspace_hash = ANY(SELECT aqo_data.fspace_hash FROM aqo_data WHERE :a_oid=ANY(oids)) AND
88
+ aqo_queries.fspace_hash = aqo_queries.query_hash);
89
+ count
90
+ -------
91
+ 0
92
+ (1 row)
93
+
94
+ SELECT count(*) FROM aqo_query_stat WHERE
95
+ aqo_query_stat.query_hash = ANY(SELECT aqo_queries.query_hash FROM aqo_queries WHERE
96
+ aqo_queries.fspace_hash = ANY(SELECT aqo_data.fspace_hash FROM aqo_data WHERE :a_oid=ANY(oids)) AND
97
+ aqo_queries.fspace_hash = aqo_queries.query_hash);
98
+ count
99
+ -------
100
+ 0
101
+ (1 row)
102
+
38
103
CREATE TABLE a();
39
104
CREATE TABLE b();
40
105
SELECT * FROM a;
@@ -58,12 +123,58 @@ SELECT count(*) FROM aqo_data WHERE :a_oid=ANY(oids);
58
123
3
59
124
(1 row)
60
125
126
+ SELECT count(*) FROM aqo_queries WHERE
127
+ aqo_queries.fspace_hash = ANY(SELECT aqo_data.fspace_hash FROM aqo_data WHERE :a_oid=ANY(oids));
128
+ count
129
+ -------
130
+ 2
131
+ (1 row)
132
+
133
+ SELECT count(*) FROM aqo_query_texts WHERE
134
+ aqo_query_texts.query_hash = ANY(SELECT aqo_queries.query_hash FROM aqo_queries WHERE
135
+ aqo_queries.fspace_hash = ANY(SELECT aqo_data.fspace_hash FROM aqo_data WHERE :a_oid=ANY(oids)));
136
+ count
137
+ -------
138
+ 2
139
+ (1 row)
140
+
141
+ SELECT count(*) FROM aqo_query_stat WHERE
142
+ aqo_query_stat.query_hash = ANY(SELECT aqo_queries.query_hash FROM aqo_queries WHERE
143
+ aqo_queries.fspace_hash = ANY(SELECT aqo_data.fspace_hash FROM aqo_data WHERE :a_oid=ANY(oids)));
144
+ count
145
+ -------
146
+ 2
147
+ (1 row)
148
+
61
149
SELECT count(*) FROM aqo_data WHERE :b_oid=ANY(oids);
62
150
count
63
151
-------
64
152
3
65
153
(1 row)
66
154
155
+ SELECT count(*) FROM aqo_queries WHERE
156
+ aqo_queries.fspace_hash = ANY(SELECT aqo_data.fspace_hash FROM aqo_data WHERE :b_oid=ANY(oids));
157
+ count
158
+ -------
159
+ 2
160
+ (1 row)
161
+
162
+ SELECT count(*) FROM aqo_query_texts WHERE
163
+ aqo_query_texts.query_hash = ANY(SELECT aqo_queries.query_hash FROM aqo_queries WHERE
164
+ aqo_queries.fspace_hash = ANY(SELECT aqo_data.fspace_hash FROM aqo_data WHERE :b_oid=ANY(oids)));
165
+ count
166
+ -------
167
+ 2
168
+ (1 row)
169
+
170
+ SELECT count(*) FROM aqo_query_stat WHERE
171
+ aqo_query_stat.query_hash = ANY(SELECT aqo_queries.query_hash FROM aqo_queries WHERE
172
+ aqo_queries.fspace_hash = ANY(SELECT aqo_data.fspace_hash FROM aqo_data WHERE :b_oid=ANY(oids)));
173
+ count
174
+ -------
175
+ 2
176
+ (1 row)
177
+
67
178
DROP TABLE a;
68
179
SELECT clean_aqo_data();
69
180
NOTICE: Cleaning aqo_data records
@@ -72,17 +183,75 @@ NOTICE: Cleaning aqo_data records
72
183
73
184
(1 row)
74
185
75
- -- lines with a_oid deleted, including line with both a_oid and b_oid
186
+ /*
187
+ * lines corresponding to a_oid and both a_oid's fspace_hash deleted in aqo_data,
188
+ * lines with fspace_hash corresponding to a_oid deleted in aqo_queries,
189
+ * lines with query_hash corresponding to a_oid's fspace_hash deleted in aqo_query_texts,
190
+ * lines with query_hash corresponding to a_oid's fspace_hash deleted in aqo_query_stat,
191
+ */
76
192
SELECT count(*) FROM aqo_data WHERE :a_oid=ANY(oids);
77
193
count
78
194
-------
79
195
0
80
196
(1 row)
81
197
198
+ SELECT count(*) FROM aqo_queries WHERE
199
+ aqo_queries.fspace_hash = ANY(SELECT aqo_data.fspace_hash FROM aqo_data WHERE :a_oid=ANY(oids)) AND
200
+ aqo_queries.fspace_hash = aqo_queries.query_hash;
201
+ count
202
+ -------
203
+ 0
204
+ (1 row)
205
+
206
+ SELECT count(*) FROM aqo_query_texts WHERE
207
+ aqo_query_texts.query_hash = ANY(SELECT aqo_queries.query_hash FROM aqo_queries WHERE
208
+ aqo_queries.fspace_hash = ANY(SELECT aqo_data.fspace_hash FROM aqo_data WHERE :a_oid=ANY(oids)) AND
209
+ aqo_queries.fspace_hash = aqo_queries.query_hash);
210
+ count
211
+ -------
212
+ 0
213
+ (1 row)
214
+
215
+ SELECT count(*) FROM aqo_query_stat WHERE
216
+ aqo_query_stat.query_hash = ANY(SELECT aqo_queries.query_hash FROM aqo_queries WHERE
217
+ aqo_queries.fspace_hash = ANY(SELECT aqo_data.fspace_hash FROM aqo_data WHERE :a_oid=ANY(oids)) AND
218
+ aqo_queries.fspace_hash = aqo_queries.query_hash);
219
+ count
220
+ -------
221
+ 0
222
+ (1 row)
223
+
224
+ -- lines corresponding to b_oid in all theese tables should remain
82
225
SELECT count(*) FROM aqo_data WHERE :b_oid=ANY(oids);
83
226
count
84
227
-------
85
- 2
228
+ 1
229
+ (1 row)
230
+
231
+ SELECT count(*) FROM aqo_queries WHERE
232
+ aqo_queries.fspace_hash = ANY(SELECT aqo_data.fspace_hash FROM aqo_data WHERE :b_oid=ANY(oids)) AND
233
+ aqo_queries.fspace_hash = aqo_queries.query_hash;
234
+ count
235
+ -------
236
+ 1
237
+ (1 row)
238
+
239
+ SELECT count(*) FROM aqo_query_texts WHERE
240
+ aqo_query_texts.query_hash = ANY(SELECT aqo_queries.query_hash FROM aqo_queries WHERE
241
+ aqo_queries.fspace_hash = ANY(SELECT aqo_data.fspace_hash FROM aqo_data WHERE :b_oid=ANY(oids)) AND
242
+ aqo_queries.fspace_hash = aqo_queries.query_hash);
243
+ count
244
+ -------
245
+ 1
246
+ (1 row)
247
+
248
+ SELECT count(*) FROM aqo_query_stat WHERE
249
+ aqo_query_stat.query_hash = ANY(SELECT aqo_queries.query_hash FROM aqo_queries WHERE
250
+ aqo_queries.fspace_hash = ANY(SELECT aqo_data.fspace_hash FROM aqo_data WHERE :b_oid=ANY(oids)) AND
251
+ aqo_queries.fspace_hash = aqo_queries.query_hash);
252
+ count
253
+ -------
254
+ 1
86
255
(1 row)
87
256
88
257
DROP TABLE b;
@@ -93,10 +262,36 @@ NOTICE: Cleaning aqo_data records
93
262
94
263
(1 row)
95
264
96
- -- lines with b_oid deleted
265
+ -- lines corresponding to b_oid in theese tables deleted
97
266
SELECT count(*) FROM aqo_data WHERE :b_oid=ANY(oids);
98
267
count
99
268
-------
100
269
0
101
270
(1 row)
102
271
272
+ SELECT count(*) FROM aqo_queries WHERE
273
+ aqo_queries.fspace_hash = ANY(SELECT aqo_data.fspace_hash FROM aqo_data WHERE :b_oid=ANY(oids)) AND
274
+ aqo_queries.fspace_hash = aqo_queries.query_hash;
275
+ count
276
+ -------
277
+ 0
278
+ (1 row)
279
+
280
+ SELECT count(*) FROM aqo_query_texts WHERE
281
+ aqo_query_texts.query_hash = ANY(SELECT aqo_queries.query_hash FROM aqo_queries WHERE
282
+ aqo_queries.fspace_hash = ANY(SELECT aqo_data.fspace_hash FROM aqo_data WHERE :b_oid=ANY(oids)) AND
283
+ aqo_queries.fspace_hash = aqo_queries.query_hash);
284
+ count
285
+ -------
286
+ 0
287
+ (1 row)
288
+
289
+ SELECT count(*) FROM aqo_query_stat WHERE
290
+ aqo_query_stat.query_hash = ANY(SELECT aqo_queries.query_hash FROM aqo_queries WHERE
291
+ aqo_queries.fspace_hash = ANY(SELECT aqo_data.fspace_hash FROM aqo_data WHERE :b_oid=ANY(oids)) AND
292
+ aqo_queries.fspace_hash = aqo_queries.query_hash);
293
+ count
294
+ -------
295
+ 0
296
+ (1 row)
297
+
0 commit comments