@@ -2,8 +2,82 @@ CREATE TABLE tsts (id int, t tsvector, d timestamp);
2
2
\copy tsts from 'data/tsts.data'
3
3
CREATE INDEX tsts_idx ON tsts USING rum (t rum_tsvector_addon_ops, d)
4
4
WITH (attach = 'd', to = 't');
5
- INSERT INTO tsts VALUES (-1, 't1 t2', '2016-05-02 02:24:22.326724');
6
- INSERT INTO tsts VALUES (-2, 't1 t2 t3', '2016-05-02 02:26:22.326724');
5
+ INSERT INTO tsts VALUES (-1, 't1 t2', '2016-05-02 02:24:22.326724');
6
+ INSERT INTO tsts VALUES (-2, 't1 t2 t3', '2016-05-02 02:26:22.326724');
7
+ SET enable_indexscan=OFF;
8
+ SET enable_indexonlyscan=OFF;
9
+ SET enable_bitmapscan=OFF;
10
+ SELECT id, d, d <=> '2016-05-16 14:21:25' FROM tsts WHERE t @@ 'wr&qh' ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
11
+ id | d | ?column?
12
+ -----+---------------------------------+---------------
13
+ 355 | Mon May 16 14:21:22.326724 2016 | 2.673276
14
+ 354 | Mon May 16 13:21:22.326724 2016 | 3602.673276
15
+ 371 | Tue May 17 06:21:22.326724 2016 | 57597.326724
16
+ 406 | Wed May 18 17:21:22.326724 2016 | 183597.326724
17
+ 415 | Thu May 19 02:21:22.326724 2016 | 215997.326724
18
+ (5 rows)
19
+
20
+ SELECT id, d, d <=| '2016-05-16 14:21:25' FROM tsts WHERE t @@ 'wr&qh' ORDER BY d <=| '2016-05-16 14:21:25' LIMIT 5;
21
+ id | d | ?column?
22
+ -----+---------------------------------+---------------
23
+ 355 | Mon May 16 14:21:22.326724 2016 | 2.673276
24
+ 354 | Mon May 16 13:21:22.326724 2016 | 3602.673276
25
+ 252 | Thu May 12 07:21:22.326724 2016 | 370802.673276
26
+ 232 | Wed May 11 11:21:22.326724 2016 | 442802.673276
27
+ 168 | Sun May 08 19:21:22.326724 2016 | 673202.673276
28
+ (5 rows)
29
+
30
+ SELECT id, d, d |=> '2016-05-16 14:21:25' FROM tsts WHERE t @@ 'wr&qh' ORDER BY d |=> '2016-05-16 14:21:25' LIMIT 5;
31
+ id | d | ?column?
32
+ -----+---------------------------------+---------------
33
+ 371 | Tue May 17 06:21:22.326724 2016 | 57597.326724
34
+ 406 | Wed May 18 17:21:22.326724 2016 | 183597.326724
35
+ 415 | Thu May 19 02:21:22.326724 2016 | 215997.326724
36
+ 428 | Thu May 19 15:21:22.326724 2016 | 262797.326724
37
+ 457 | Fri May 20 20:21:22.326724 2016 | 367197.326724
38
+ (5 rows)
39
+
40
+ SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d <= '2016-05-16 14:21:25' ORDER BY d;
41
+ id | d
42
+ -----+---------------------------------
43
+ 16 | Mon May 02 11:21:22.326724 2016
44
+ 39 | Tue May 03 10:21:22.326724 2016
45
+ 71 | Wed May 04 18:21:22.326724 2016
46
+ 135 | Sat May 07 10:21:22.326724 2016
47
+ 168 | Sun May 08 19:21:22.326724 2016
48
+ 232 | Wed May 11 11:21:22.326724 2016
49
+ 252 | Thu May 12 07:21:22.326724 2016
50
+ 354 | Mon May 16 13:21:22.326724 2016
51
+ 355 | Mon May 16 14:21:22.326724 2016
52
+ (9 rows)
53
+
54
+ SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d >= '2016-05-16 14:21:25' ORDER BY d;
55
+ id | d
56
+ -----+---------------------------------
57
+ 371 | Tue May 17 06:21:22.326724 2016
58
+ 406 | Wed May 18 17:21:22.326724 2016
59
+ 415 | Thu May 19 02:21:22.326724 2016
60
+ 428 | Thu May 19 15:21:22.326724 2016
61
+ 457 | Fri May 20 20:21:22.326724 2016
62
+ 458 | Fri May 20 21:21:22.326724 2016
63
+ 484 | Sat May 21 23:21:22.326724 2016
64
+ 496 | Sun May 22 11:21:22.326724 2016
65
+ (8 rows)
66
+
67
+ -- Test bitmap index scan
68
+ RESET enable_bitmapscan;
69
+ SET enable_seqscan = off;
70
+ EXPLAIN (costs off)
71
+ SELECT count(*) FROM tsts WHERE t @@ 'wr|qh';
72
+ QUERY PLAN
73
+ -------------------------------------------------------------
74
+ Aggregate
75
+ -> Bitmap Heap Scan on tsts
76
+ Recheck Cond: (t @@ '''wr'' | ''qh'''::tsquery)
77
+ -> Bitmap Index Scan on tsts_idx
78
+ Index Cond: (t @@ '''wr'' | ''qh'''::tsquery)
79
+ (5 rows)
80
+
7
81
SELECT count(*) FROM tsts WHERE t @@ 'wr|qh';
8
82
count
9
83
-------
@@ -40,9 +114,19 @@ SELECT count(*) FROM tsts WHERE t @@ '(eq|yt)&(wr|qh)';
40
114
39
41
115
(1 row)
42
116
43
- SET enable_indexscan=OFF;
44
- SET enable_indexonlyscan=OFF;
45
- SET enable_bitmapscan=OFF;
117
+ EXPLAIN (costs off)
118
+ SELECT id, d, d <=> '2016-05-16 14:21:25' FROM tsts WHERE t @@ 'wr&qh' ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
119
+ QUERY PLAN
120
+ -------------------------------------------------------------------------------------
121
+ Limit
122
+ -> Sort
123
+ Sort Key: ((d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone))
124
+ -> Bitmap Heap Scan on tsts
125
+ Recheck Cond: (t @@ '''wr'' & ''qh'''::tsquery)
126
+ -> Bitmap Index Scan on tsts_idx
127
+ Index Cond: (t @@ '''wr'' & ''qh'''::tsquery)
128
+ (7 rows)
129
+
46
130
SELECT id, d, d <=> '2016-05-16 14:21:25' FROM tsts WHERE t @@ 'wr&qh' ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
47
131
id | d | ?column?
48
132
-----+---------------------------------+---------------
@@ -53,6 +137,19 @@ SELECT id, d, d <=> '2016-05-16 14:21:25' FROM tsts WHERE t @@ 'wr&qh' ORDER BY
53
137
415 | Thu May 19 02:21:22.326724 2016 | 215997.326724
54
138
(5 rows)
55
139
140
+ EXPLAIN (costs off)
141
+ SELECT id, d, d <=| '2016-05-16 14:21:25' FROM tsts WHERE t @@ 'wr&qh' ORDER BY d <=| '2016-05-16 14:21:25' LIMIT 5;
142
+ QUERY PLAN
143
+ -------------------------------------------------------------------------------------
144
+ Limit
145
+ -> Sort
146
+ Sort Key: ((d <=| 'Mon May 16 14:21:25 2016'::timestamp without time zone))
147
+ -> Bitmap Heap Scan on tsts
148
+ Recheck Cond: (t @@ '''wr'' & ''qh'''::tsquery)
149
+ -> Bitmap Index Scan on tsts_idx
150
+ Index Cond: (t @@ '''wr'' & ''qh'''::tsquery)
151
+ (7 rows)
152
+
56
153
SELECT id, d, d <=| '2016-05-16 14:21:25' FROM tsts WHERE t @@ 'wr&qh' ORDER BY d <=| '2016-05-16 14:21:25' LIMIT 5;
57
154
id | d | ?column?
58
155
-----+---------------------------------+---------------
@@ -63,6 +160,19 @@ SELECT id, d, d <=| '2016-05-16 14:21:25' FROM tsts WHERE t @@ 'wr&qh' ORDER BY
63
160
168 | Sun May 08 19:21:22.326724 2016 | 673202.673276
64
161
(5 rows)
65
162
163
+ EXPLAIN (costs off)
164
+ SELECT id, d, d |=> '2016-05-16 14:21:25' FROM tsts WHERE t @@ 'wr&qh' ORDER BY d |=> '2016-05-16 14:21:25' LIMIT 5;
165
+ QUERY PLAN
166
+ -------------------------------------------------------------------------------------
167
+ Limit
168
+ -> Sort
169
+ Sort Key: ((d |=> 'Mon May 16 14:21:25 2016'::timestamp without time zone))
170
+ -> Bitmap Heap Scan on tsts
171
+ Recheck Cond: (t @@ '''wr'' & ''qh'''::tsquery)
172
+ -> Bitmap Index Scan on tsts_idx
173
+ Index Cond: (t @@ '''wr'' & ''qh'''::tsquery)
174
+ (7 rows)
175
+
66
176
SELECT id, d, d |=> '2016-05-16 14:21:25' FROM tsts WHERE t @@ 'wr&qh' ORDER BY d |=> '2016-05-16 14:21:25' LIMIT 5;
67
177
id | d | ?column?
68
178
-----+---------------------------------+---------------
@@ -73,6 +183,37 @@ SELECT id, d, d |=> '2016-05-16 14:21:25' FROM tsts WHERE t @@ 'wr&qh' ORDER BY
73
183
457 | Fri May 20 20:21:22.326724 2016 | 367197.326724
74
184
(5 rows)
75
185
186
+ EXPLAIN (costs off)
187
+ SELECT id, d, d <=> '2016-05-16 14:21:25' FROM tsts ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
188
+ QUERY PLAN
189
+ -----------------------------------------------------------------------------------
190
+ Limit
191
+ -> Index Scan using tsts_idx on tsts
192
+ Order By: (d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone)
193
+ (3 rows)
194
+
195
+ SELECT id, d, d <=> '2016-05-16 14:21:25' FROM tsts ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
196
+ id | d | ?column?
197
+ -----+---------------------------------+-------------
198
+ 355 | Mon May 16 14:21:22.326724 2016 | 2.673276
199
+ 356 | Mon May 16 15:21:22.326724 2016 | 3597.326724
200
+ 354 | Mon May 16 13:21:22.326724 2016 | 3602.673276
201
+ 357 | Mon May 16 16:21:22.326724 2016 | 7197.326724
202
+ 353 | Mon May 16 12:21:22.326724 2016 | 7202.673276
203
+ (5 rows)
204
+
205
+ EXPLAIN (costs off)
206
+ SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d <= '2016-05-16 14:21:25' ORDER BY d;
207
+ QUERY PLAN
208
+ ----------------------------------------------------------------------------------------------------------------------------------
209
+ Sort
210
+ Sort Key: d
211
+ -> Bitmap Heap Scan on tsts
212
+ Recheck Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (d <= 'Mon May 16 14:21:25 2016'::timestamp without time zone))
213
+ -> Bitmap Index Scan on tsts_idx
214
+ Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (d <= 'Mon May 16 14:21:25 2016'::timestamp without time zone))
215
+ (6 rows)
216
+
76
217
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d <= '2016-05-16 14:21:25' ORDER BY d;
77
218
id | d
78
219
-----+---------------------------------
@@ -87,6 +228,18 @@ SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d <= '2016-05-16 14:21:25' ORDER
87
228
355 | Mon May 16 14:21:22.326724 2016
88
229
(9 rows)
89
230
231
+ EXPLAIN (costs off)
232
+ SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d >= '2016-05-16 14:21:25' ORDER BY d;
233
+ QUERY PLAN
234
+ ----------------------------------------------------------------------------------------------------------------------------------
235
+ Sort
236
+ Sort Key: d
237
+ -> Bitmap Heap Scan on tsts
238
+ Recheck Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (d >= 'Mon May 16 14:21:25 2016'::timestamp without time zone))
239
+ -> Bitmap Index Scan on tsts_idx
240
+ Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (d >= 'Mon May 16 14:21:25 2016'::timestamp without time zone))
241
+ (6 rows)
242
+
90
243
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d >= '2016-05-16 14:21:25' ORDER BY d;
91
244
id | d
92
245
-----+---------------------------------
@@ -100,20 +253,18 @@ SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d >= '2016-05-16 14:21:25' ORDER
100
253
496 | Sun May 22 11:21:22.326724 2016
101
254
(8 rows)
102
255
256
+ -- Test index scan
103
257
RESET enable_indexscan;
104
258
RESET enable_indexonlyscan;
105
- RESET enable_bitmapscan;
106
- SET enable_seqscan = off;
259
+ SET enable_bitmapscan=OFF;
107
260
EXPLAIN (costs off)
108
261
SELECT count(*) FROM tsts WHERE t @@ 'wr|qh';
109
- QUERY PLAN
110
- -------------------------------------------------------------
262
+ QUERY PLAN
263
+ -------------------------------------------------------
111
264
Aggregate
112
- -> Bitmap Heap Scan on tsts
113
- Recheck Cond: (t @@ '''wr'' | ''qh'''::tsquery)
114
- -> Bitmap Index Scan on tsts_idx
115
- Index Cond: (t @@ '''wr'' | ''qh'''::tsquery)
116
- (5 rows)
265
+ -> Index Scan using tsts_idx on tsts
266
+ Index Cond: (t @@ '''wr'' | ''qh'''::tsquery)
267
+ (3 rows)
117
268
118
269
SELECT count(*) FROM tsts WHERE t @@ 'wr|qh';
119
270
count
@@ -277,54 +428,6 @@ SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d >= '2016-05-16 14:21:25' ORDER
277
428
496 | Sun May 22 11:21:22.326724 2016
278
429
(8 rows)
279
430
280
- SET enable_bitmapscan=OFF;
281
- EXPLAIN (costs off)
282
- SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d <= '2016-05-16 14:21:25' ORDER BY d;
283
- QUERY PLAN
284
- ----------------------------------------------------------------------------------------------------------------------------
285
- Sort
286
- Sort Key: d
287
- -> Index Scan using tsts_idx on tsts
288
- Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (d <= 'Mon May 16 14:21:25 2016'::timestamp without time zone))
289
- (4 rows)
290
-
291
- SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d <= '2016-05-16 14:21:25' ORDER BY d;
292
- id | d
293
- -----+---------------------------------
294
- 16 | Mon May 02 11:21:22.326724 2016
295
- 39 | Tue May 03 10:21:22.326724 2016
296
- 71 | Wed May 04 18:21:22.326724 2016
297
- 135 | Sat May 07 10:21:22.326724 2016
298
- 168 | Sun May 08 19:21:22.326724 2016
299
- 232 | Wed May 11 11:21:22.326724 2016
300
- 252 | Thu May 12 07:21:22.326724 2016
301
- 354 | Mon May 16 13:21:22.326724 2016
302
- 355 | Mon May 16 14:21:22.326724 2016
303
- (9 rows)
304
-
305
- EXPLAIN (costs off)
306
- SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d >= '2016-05-16 14:21:25' ORDER BY d;
307
- QUERY PLAN
308
- ----------------------------------------------------------------------------------------------------------------------------
309
- Sort
310
- Sort Key: d
311
- -> Index Scan using tsts_idx on tsts
312
- Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (d >= 'Mon May 16 14:21:25 2016'::timestamp without time zone))
313
- (4 rows)
314
-
315
- SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d >= '2016-05-16 14:21:25' ORDER BY d;
316
- id | d
317
- -----+---------------------------------
318
- 371 | Tue May 17 06:21:22.326724 2016
319
- 406 | Wed May 18 17:21:22.326724 2016
320
- 415 | Thu May 19 02:21:22.326724 2016
321
- 428 | Thu May 19 15:21:22.326724 2016
322
- 457 | Fri May 20 20:21:22.326724 2016
323
- 458 | Fri May 20 21:21:22.326724 2016
324
- 484 | Sat May 21 23:21:22.326724 2016
325
- 496 | Sun May 22 11:21:22.326724 2016
326
- (8 rows)
327
-
328
431
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d <= '2016-05-16 14:21:25' ORDER BY d ASC LIMIT 3;
329
432
id | d
330
433
----+---------------------------------
0 commit comments