Skip to content

Commit 1111fce

Browse files
author
Artur Zakirov
committed
Merge branch 'CORE-411-hash_in_rum'
2 parents ed97b99 + a4a7160 commit 1111fce

16 files changed

+1593
-1
lines changed

Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ EXTENSION = rum
1111
DATA = rum--1.0.sql
1212
PGFILEDESC = "RUM index access method"
1313

14-
REGRESS = rum rum_hash ruminv timestamp orderby altorder
14+
REGRESS = rum rum_hash ruminv timestamp orderby orderby_hash altorder \
15+
altorder_hash
1516

1617
LDFLAGS_SL += $(filter -lm, $(LIBS))
1718

expected/altorder.out

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,3 +323,4 @@ SELECT id, d FROM atsts WHERE t @@ 'wr&qh' AND d >= '2016-05-16 14:21:25' ORDER
323323
496 | Sun May 22 11:21:22.326724 2016
324324
(8 rows)
325325

326+
DROP TABLE atsts CASCADE;

expected/altorder_1.out

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,3 +322,4 @@ SELECT id, d FROM atsts WHERE t @@ 'wr&qh' AND d >= '2016-05-16 14:21:25' ORDER
322322
496 | Sun May 22 11:21:22.326724 2016
323323
(8 rows)
324324

325+
DROP TABLE atsts CASCADE;

expected/altorder_hash.out

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

0 commit comments

Comments
 (0)