@@ -2,8 +2,82 @@ CREATE TABLE tsts (id int, t tsvector, d timestamp);
22\copy tsts from 'data/tsts.data'
33CREATE INDEX tsts_idx ON tsts USING rum (t rum_tsvector_addon_ops, d)
44 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+
781SELECT count(*) FROM tsts WHERE t @@ 'wr|qh';
882 count
983-------
@@ -40,9 +114,19 @@ SELECT count(*) FROM tsts WHERE t @@ '(eq|yt)&(wr|qh)';
40114 39
41115(1 row)
42116
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+
46130SELECT 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;
47131 id | d | ?column?
48132-----+---------------------------------+---------------
@@ -53,6 +137,19 @@ SELECT id, d, d <=> '2016-05-16 14:21:25' FROM tsts WHERE t @@ 'wr&qh' ORDER BY
53137 415 | Thu May 19 02:21:22.326724 2016 | 215997.326724
54138(5 rows)
55139
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+
56153SELECT 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;
57154 id | d | ?column?
58155-----+---------------------------------+---------------
@@ -63,6 +160,19 @@ SELECT id, d, d <=| '2016-05-16 14:21:25' FROM tsts WHERE t @@ 'wr&qh' ORDER BY
63160 168 | Sun May 08 19:21:22.326724 2016 | 673202.673276
64161(5 rows)
65162
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+
66176SELECT 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;
67177 id | d | ?column?
68178-----+---------------------------------+---------------
@@ -73,6 +183,37 @@ SELECT id, d, d |=> '2016-05-16 14:21:25' FROM tsts WHERE t @@ 'wr&qh' ORDER BY
73183 457 | Fri May 20 20:21:22.326724 2016 | 367197.326724
74184(5 rows)
75185
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+
76217SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d <= '2016-05-16 14:21:25' ORDER BY d;
77218 id | d
78219-----+---------------------------------
@@ -87,6 +228,18 @@ SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d <= '2016-05-16 14:21:25' ORDER
87228 355 | Mon May 16 14:21:22.326724 2016
88229(9 rows)
89230
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+
90243SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d >= '2016-05-16 14:21:25' ORDER BY d;
91244 id | d
92245-----+---------------------------------
@@ -100,20 +253,18 @@ SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d >= '2016-05-16 14:21:25' ORDER
100253 496 | Sun May 22 11:21:22.326724 2016
101254(8 rows)
102255
256+ -- Test index scan
103257RESET enable_indexscan;
104258RESET enable_indexonlyscan;
105- RESET enable_bitmapscan;
106- SET enable_seqscan = off;
259+ SET enable_bitmapscan=OFF;
107260EXPLAIN (costs off)
108261SELECT count(*) FROM tsts WHERE t @@ 'wr|qh';
109- QUERY PLAN
110- -------------------------------------------------------------
262+ QUERY PLAN
263+ -------------------------------------------------------
111264 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)
117268
118269SELECT count(*) FROM tsts WHERE t @@ 'wr|qh';
119270 count
@@ -277,54 +428,6 @@ SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d >= '2016-05-16 14:21:25' ORDER
277428 496 | Sun May 22 11:21:22.326724 2016
278429(8 rows)
279430
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-
328431SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d <= '2016-05-16 14:21:25' ORDER BY d ASC LIMIT 3;
329432 id | d
330433----+---------------------------------
0 commit comments