Skip to content

Commit f06f900

Browse files
committed
New version of RUM incorporated
1 parent 6750a00 commit f06f900

22 files changed

+595
-376
lines changed

contrib/rum/.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,3 @@ bin
1111
include
1212
lib
1313
pip-selfcheck.json
14-

contrib/rum/Makefile

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ REGRESS = rum rum_hash ruminv timestamp orderby orderby_hash altorder \
1919
macaddr inet cidr text varchar char bytea bit varbit \
2020
numeric
2121

22-
#EXTRA_CLEAN += rum--1.1.sql rum--1.0--1.1.sql
23-
2422
LDFLAGS_SL += $(filter -lm, $(LIBS))
2523

2624
ifdef USE_PGXS
@@ -37,15 +35,6 @@ endif
3735
wal-check: temp-install
3836
$(prove_check)
3937

40-
all: rum--1.1.sql
41-
42-
#9.6 requires 1.1 file but 10.0 could live with 1.0 + 1.0-1.1 files
43-
rum--1.1.sql: rum--1.0.sql rum--1.0--1.1.sql
44-
cat rum--1.0.sql rum--1.0--1.1.sql > rum--1.1.sql
45-
46-
rum--1.0--1.1.sql: Makefile gen_rum_sql--1.0--1.1.pl
47-
perl gen_rum_sql--1.0--1.1.pl > rum--1.0--1.1.sql
48-
4938
install: installincludes
5039

5140
installincludes:

contrib/rum/expected/orderby.out

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -357,3 +357,73 @@ SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d >= '2016-05-16 14:21:25' ORDER
357357
458 | Fri May 20 21:21:22.326724 2016
358358
(3 rows)
359359

360+
-- Test multicolumn index
361+
RESET enable_indexscan;
362+
RESET enable_indexonlyscan;
363+
RESET enable_bitmapscan;
364+
SET enable_seqscan = off;
365+
DROP INDEX tsts_idx;
366+
CREATE INDEX tsts_id_idx ON tsts USING rum (t rum_tsvector_addon_ops, id, d)
367+
WITH (attach = 'd', to = 't');
368+
EXPLAIN (costs off)
369+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 1::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
370+
QUERY PLAN
371+
-----------------------------------------------------------------------------------
372+
Limit
373+
-> Index Scan using tsts_id_idx on tsts
374+
Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (id = 1))
375+
Order By: (d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone)
376+
(4 rows)
377+
378+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 1::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
379+
id | d
380+
----+---
381+
(0 rows)
382+
383+
EXPLAIN (costs off)
384+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 355::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
385+
QUERY PLAN
386+
-----------------------------------------------------------------------------------
387+
Limit
388+
-> Index Scan using tsts_id_idx on tsts
389+
Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (id = 355))
390+
Order By: (d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone)
391+
(4 rows)
392+
393+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 355::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
394+
id | d
395+
-----+---------------------------------
396+
355 | Mon May 16 14:21:22.326724 2016
397+
(1 row)
398+
399+
EXPLAIN (costs off)
400+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2016-05-11 11:21:22.326724'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
401+
QUERY PLAN
402+
----------------------------------------------------------------------------------------------------------------------------------
403+
Limit
404+
-> Index Scan using tsts_id_idx on tsts
405+
Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (d = 'Wed May 11 11:21:22.326724 2016'::timestamp without time zone))
406+
Order By: (d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone)
407+
(4 rows)
408+
409+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2016-05-11 11:21:22.326724'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
410+
id | d
411+
-----+---------------------------------
412+
232 | Wed May 11 11:21:22.326724 2016
413+
(1 row)
414+
415+
EXPLAIN (costs off)
416+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2000-05-01'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
417+
QUERY PLAN
418+
---------------------------------------------------------------------------------------------------------------------------
419+
Limit
420+
-> Index Scan using tsts_id_idx on tsts
421+
Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (d = 'Mon May 01 00:00:00 2000'::timestamp without time zone))
422+
Order By: (d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone)
423+
(4 rows)
424+
425+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2000-05-01'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
426+
id | d
427+
----+---
428+
(0 rows)
429+

contrib/rum/expected/orderby_1.out

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,3 +325,73 @@ SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d >= '2016-05-16 14:21:25' ORDER
325325
458 | Fri May 20 21:21:22.326724 2016
326326
(3 rows)
327327

328+
-- Test multicolumn index
329+
RESET enable_indexscan;
330+
RESET enable_indexonlyscan;
331+
RESET enable_bitmapscan;
332+
SET enable_seqscan = off;
333+
DROP INDEX tsts_idx;
334+
CREATE INDEX tsts_id_idx ON tsts USING rum (t rum_tsvector_addon_ops, id, d)
335+
WITH (attach = 'd', to = 't');
336+
EXPLAIN (costs off)
337+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 1::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
338+
QUERY PLAN
339+
-----------------------------------------------------------------------------------
340+
Limit
341+
-> Index Scan using tsts_id_idx on tsts
342+
Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (id = 1))
343+
Order By: (d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone)
344+
(4 rows)
345+
346+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 1::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
347+
id | d
348+
----+---
349+
(0 rows)
350+
351+
EXPLAIN (costs off)
352+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 355::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
353+
QUERY PLAN
354+
-----------------------------------------------------------------------------------
355+
Limit
356+
-> Index Scan using tsts_id_idx on tsts
357+
Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (id = 355))
358+
Order By: (d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone)
359+
(4 rows)
360+
361+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 355::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
362+
id | d
363+
-----+---------------------------------
364+
355 | Mon May 16 14:21:22.326724 2016
365+
(1 row)
366+
367+
EXPLAIN (costs off)
368+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2016-05-11 11:21:22.326724'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
369+
QUERY PLAN
370+
----------------------------------------------------------------------------------------------------------------------------------
371+
Limit
372+
-> Index Scan using tsts_id_idx on tsts
373+
Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (d = 'Wed May 11 11:21:22.326724 2016'::timestamp without time zone))
374+
Order By: (d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone)
375+
(4 rows)
376+
377+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2016-05-11 11:21:22.326724'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
378+
id | d
379+
-----+---------------------------------
380+
232 | Wed May 11 11:21:22.326724 2016
381+
(1 row)
382+
383+
EXPLAIN (costs off)
384+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2000-05-01'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
385+
QUERY PLAN
386+
---------------------------------------------------------------------------------------------------------------------------
387+
Limit
388+
-> Index Scan using tsts_id_idx on tsts
389+
Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (d = 'Mon May 01 00:00:00 2000'::timestamp without time zone))
390+
Order By: (d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone)
391+
(4 rows)
392+
393+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2000-05-01'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
394+
id | d
395+
----+---
396+
(0 rows)
397+

contrib/rum/expected/orderby_hash.out

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -357,3 +357,73 @@ SELECT id, d FROM tstsh WHERE t @@ 'wr&qh' AND d >= '2016-05-16 14:21:25' ORDER
357357
458 | Fri May 20 21:21:22.326724 2016
358358
(3 rows)
359359

360+
-- Test multicolumn index
361+
RESET enable_indexscan;
362+
RESET enable_indexonlyscan;
363+
RESET enable_bitmapscan;
364+
SET enable_seqscan = off;
365+
DROP INDEX tstsh_idx;
366+
CREATE INDEX tstsh_id_idx ON tsts USING rum (t rum_tsvector_addon_ops, id, d)
367+
WITH (attach = 'd', to = 't');
368+
EXPLAIN (costs off)
369+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 1::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
370+
QUERY PLAN
371+
-----------------------------------------------------------------------------------
372+
Limit
373+
-> Index Scan using tstsh_id_idx on tsts
374+
Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (id = 1))
375+
Order By: (d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone)
376+
(4 rows)
377+
378+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 1::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
379+
id | d
380+
----+---
381+
(0 rows)
382+
383+
EXPLAIN (costs off)
384+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 355::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
385+
QUERY PLAN
386+
-----------------------------------------------------------------------------------
387+
Limit
388+
-> Index Scan using tstsh_id_idx on tsts
389+
Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (id = 355))
390+
Order By: (d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone)
391+
(4 rows)
392+
393+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 355::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
394+
id | d
395+
-----+---------------------------------
396+
355 | Mon May 16 14:21:22.326724 2016
397+
(1 row)
398+
399+
EXPLAIN (costs off)
400+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2016-05-11 11:21:22.326724'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
401+
QUERY PLAN
402+
----------------------------------------------------------------------------------------------------------------------------------
403+
Limit
404+
-> Index Scan using tstsh_id_idx on tsts
405+
Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (d = 'Wed May 11 11:21:22.326724 2016'::timestamp without time zone))
406+
Order By: (d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone)
407+
(4 rows)
408+
409+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2016-05-11 11:21:22.326724'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
410+
id | d
411+
-----+---------------------------------
412+
232 | Wed May 11 11:21:22.326724 2016
413+
(1 row)
414+
415+
EXPLAIN (costs off)
416+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2000-05-01'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
417+
QUERY PLAN
418+
---------------------------------------------------------------------------------------------------------------------------
419+
Limit
420+
-> Index Scan using tstsh_id_idx on tsts
421+
Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (d = 'Mon May 01 00:00:00 2000'::timestamp without time zone))
422+
Order By: (d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone)
423+
(4 rows)
424+
425+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2000-05-01'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
426+
id | d
427+
----+---
428+
(0 rows)
429+

contrib/rum/expected/orderby_hash_1.out

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,3 +325,73 @@ SELECT id, d FROM tstsh WHERE t @@ 'wr&qh' AND d >= '2016-05-16 14:21:25' ORDER
325325
458 | Fri May 20 21:21:22.326724 2016
326326
(3 rows)
327327

328+
-- Test multicolumn index
329+
RESET enable_indexscan;
330+
RESET enable_indexonlyscan;
331+
RESET enable_bitmapscan;
332+
SET enable_seqscan = off;
333+
DROP INDEX tstsh_idx;
334+
CREATE INDEX tstsh_id_idx ON tsts USING rum (t rum_tsvector_addon_ops, id, d)
335+
WITH (attach = 'd', to = 't');
336+
EXPLAIN (costs off)
337+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 1::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
338+
QUERY PLAN
339+
-----------------------------------------------------------------------------------
340+
Limit
341+
-> Index Scan using tstsh_id_idx on tsts
342+
Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (id = 1))
343+
Order By: (d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone)
344+
(4 rows)
345+
346+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 1::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
347+
id | d
348+
----+---
349+
(0 rows)
350+
351+
EXPLAIN (costs off)
352+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 355::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
353+
QUERY PLAN
354+
-----------------------------------------------------------------------------------
355+
Limit
356+
-> Index Scan using tstsh_id_idx on tsts
357+
Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (id = 355))
358+
Order By: (d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone)
359+
(4 rows)
360+
361+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND id = 355::int ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
362+
id | d
363+
-----+---------------------------------
364+
355 | Mon May 16 14:21:22.326724 2016
365+
(1 row)
366+
367+
EXPLAIN (costs off)
368+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2016-05-11 11:21:22.326724'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
369+
QUERY PLAN
370+
----------------------------------------------------------------------------------------------------------------------------------
371+
Limit
372+
-> Index Scan using tstsh_id_idx on tsts
373+
Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (d = 'Wed May 11 11:21:22.326724 2016'::timestamp without time zone))
374+
Order By: (d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone)
375+
(4 rows)
376+
377+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2016-05-11 11:21:22.326724'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
378+
id | d
379+
-----+---------------------------------
380+
232 | Wed May 11 11:21:22.326724 2016
381+
(1 row)
382+
383+
EXPLAIN (costs off)
384+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2000-05-01'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
385+
QUERY PLAN
386+
---------------------------------------------------------------------------------------------------------------------------
387+
Limit
388+
-> Index Scan using tstsh_id_idx on tsts
389+
Index Cond: ((t @@ '''wr'' & ''qh'''::tsquery) AND (d = 'Mon May 01 00:00:00 2000'::timestamp without time zone))
390+
Order By: (d <=> 'Mon May 16 14:21:25 2016'::timestamp without time zone)
391+
(4 rows)
392+
393+
SELECT id, d FROM tsts WHERE t @@ 'wr&qh' AND d = '2000-05-01'::timestamp ORDER BY d <=> '2016-05-16 14:21:25' LIMIT 5;
394+
id | d
395+
----+---
396+
(0 rows)
397+

contrib/rum/expected/rum.out

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -350,3 +350,15 @@ SELECT a <=> to_tsquery('pg_catalog.english', 'b:*'), *
350350
16.4493 | the few that escaped destruction in 1693. It is a beautiful, highly | '1693':7 'beauti':11 'destruct':5 'escap':4 'high':12
351351
(20 rows)
352352

353+
select 'bjarn:6237 stroustrup:6238'::tsvector <=> 'bjarn <-> stroustrup'::tsquery;
354+
?column?
355+
----------
356+
8.22467
357+
(1 row)
358+
359+
SELECT 'stroustrup:5508B,6233B,6238B bjarn:6235B,6237B' <=> 'bjarn <-> stroustrup'::tsquery;
360+
?column?
361+
----------
362+
2.05617
363+
(1 row)
364+

contrib/rum/gen_rum_sql--1.0--1.1.pl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,12 @@
6363
AS 'MODULE_PATHNAME'
6464
LANGUAGE C STRICT IMMUTABLE;
6565
66+
CREATE FUNCTION rum_TYPEIDENT_config(internal)
67+
RETURNS void
68+
AS 'MODULE_PATHNAME'
69+
LANGUAGE C IMMUTABLE STRICT;
70+
71+
6672
EOT
6773

6874
my $opclass_base_template=<<EOT;
@@ -103,6 +109,7 @@
103109
FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal),
104110
FUNCTION 5 rum_TYPESUBIDENT_compare_prefix(TYPESUBNAME,TYPESUBNAME,int2, internal),
105111
-- support to TYPEIDENT distance in rum_tsvector_addon_ops
112+
FUNCTION 6 rum_TYPEIDENT_config(internal),
106113
FUNCTION 9 rum_TYPEIDENT_outer_distance(TYPENAME, TYPENAME, smallint),
107114
STORAGE TYPENAME;
108115

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy