OSDN Git Service

Fix compilation failure on Apple LLVM 6.0.
[pgbigm/pg_bigm.git] / sql / pg_bigm.sql
1 CREATE EXTENSION pg_bigm;
2
3 \pset null '(null)'
4
5 SET standard_conforming_strings = on;
6 SET escape_string_warning = off;
7 SET enable_seqscan = off;
8 SET pg_bigm.enable_recheck = on;
9 SET pg_bigm.gin_key_limit = 0;
10 SET pg_bigm.similarity_limit = 0.02;
11
12 -- tests for pg_bigm.last_update
13 SHOW pg_bigm.last_update;
14 SET pg_bigm.last_update = '2013.09.18';
15
16 -- tests for likequery
17 SELECT likequery(NULL);
18 SELECT likequery('');
19 SELECT likequery('  ');
20 SELECT likequery('aBc023#*^&');
21 SELECT likequery('\_%');
22
23 -- tests for show_bigm
24 SELECT show_bigm(NULL);
25 SELECT show_bigm('');
26 SELECT show_bigm('i');
27 SELECT show_bigm('ab');
28 SELECT show_bigm('aBc023$&^');
29 SELECT show_bigm('\_%');
30 SELECT show_bigm('  ');
31 SELECT show_bigm('pg_bigm improves performance by 200%');
32
33 -- tests for creation of full-text search index
34 CREATE TABLE test_bigm (col1 text, col2 text);
35 CREATE INDEX test_bigm_idx ON test_bigm
36                          USING gin (col1 gin_bigm_ops, col2 gin_bigm_ops);
37
38 \copy test_bigm from 'data/bigm.csv' with csv
39
40 -- tests pg_gin_pending_stats
41 SELECT * FROM pg_gin_pending_stats('test_bigm_idx');
42 VACUUM;
43 SELECT * FROM pg_gin_pending_stats('test_bigm_idx');
44
45 -- tests for full-text search
46 EXPLAIN (COSTS off) SELECT * FROM test_bigm WHERE col1 LIKE likequery('a');
47 EXPLAIN (COSTS off) SELECT * FROM test_bigm WHERE col1 LIKE likequery('am');
48 EXPLAIN (COSTS off) SELECT * FROM test_bigm WHERE col1 LIKE likequery('XML');
49 EXPLAIN (COSTS off) SELECT * FROM test_bigm WHERE col1 LIKE likequery('bigm');
50
51 SELECT col1 FROM test_bigm WHERE col1 LIKE likequery(NULL);
52 SELECT col1 FROM test_bigm WHERE col1 LIKE likequery('');
53
54 SELECT col1 FROM test_bigm WHERE col1 LIKE likequery('%');
55 SELECT col1 FROM test_bigm WHERE col1 LIKE likequery('\');
56 SELECT col1 FROM test_bigm WHERE col1 LIKE likequery('_');
57 SELECT col1 FROM test_bigm WHERE col1 LIKE likequery('\dx');
58 SELECT col1 FROM test_bigm WHERE col1 LIKE likequery('pg_bigm');
59 SELECT col1 FROM test_bigm WHERE col1 LIKE likequery('200%');
60 SELECT col1 FROM test_bigm WHERE col1 LIKE likequery('  ');
61
62 SELECT col1 FROM test_bigm WHERE col1 LIKE likequery('Y');
63 SELECT col1 FROM test_bigm WHERE col1 LIKE likequery('pi');
64 SELECT col1 FROM test_bigm WHERE col1 LIKE likequery('GIN');
65 SELECT col1 FROM test_bigm WHERE col1 LIKE likequery('gin');
66 SELECT col1 FROM test_bigm WHERE col1 LIKE likequery('Tool');
67 SELECT col1 FROM test_bigm WHERE col1 LIKE likequery('performance');
68
69 -- check that the search results don't change if enable_recheck is disabled
70 -- in order to check that index full search is NOT executed
71 SET pg_bigm.enable_recheck = off;
72 SELECT col1 FROM test_bigm WHERE col1 LIKE likequery('Y');
73 SELECT col1 FROM test_bigm WHERE col1 LIKE likequery('pi');
74 SET pg_bigm.enable_recheck = on;
75
76 EXPLAIN (COSTS off) SELECT col1 FROM test_bigm WHERE col1 LIKE '%bigm%';
77 SELECT col1 FROM test_bigm WHERE col1 LIKE '%Tool%';
78 EXPLAIN (COSTS off) SELECT col1 FROM test_bigm WHERE col1 LIKE '%\%';
79 SELECT col1 FROM test_bigm WHERE col1 LIKE '%\%';
80 EXPLAIN (COSTS off) SELECT col1 FROM test_bigm WHERE col1 LIKE 'pg\___gm%';
81 SELECT col1 FROM test_bigm WHERE col1 LIKE 'pg\___gm%';
82
83 -- tests for pg_bigm.enable_recheck
84 SELECT col1 FROM test_bigm WHERE col1 LIKE likequery('trial');
85 SET pg_bigm.enable_recheck = off;
86 SELECT col1 FROM test_bigm WHERE col1 LIKE likequery('trial');
87
88 -- tests for pg_bigm.gin_key_limit
89 SELECT count(*) FROM test_bigm WHERE col1 LIKE likequery('she tore');
90 SET pg_bigm.gin_key_limit = 6;
91 SELECT count(*) FROM test_bigm WHERE col1 LIKE likequery('she tore');
92 SET pg_bigm.gin_key_limit = 5;
93 SELECT count(*) FROM test_bigm WHERE col1 LIKE likequery('she tore');
94 SET pg_bigm.gin_key_limit = 4;
95 SELECT count(*) FROM test_bigm WHERE col1 LIKE likequery('she tore');
96 SET pg_bigm.gin_key_limit = 3;
97 SELECT count(*) FROM test_bigm WHERE col1 LIKE likequery('she tore');
98 SET pg_bigm.gin_key_limit = 2;
99 SELECT count(*) FROM test_bigm WHERE col1 LIKE likequery('she tore');
100 SET pg_bigm.gin_key_limit = 1;
101 SELECT count(*) FROM test_bigm WHERE col1 LIKE likequery('she tore');
102
103 SET pg_bigm.enable_recheck = on;
104 SET pg_bigm.gin_key_limit = 0;
105
106 -- tests with standard_conforming_strings disabled
107 SET standard_conforming_strings = off;
108 SELECT likequery('\\_%');
109 SELECT show_bigm('\\_%');
110 SELECT col1 FROM test_bigm WHERE col1 LIKE likequery('\\');
111 SELECT col1 FROM test_bigm WHERE col1 LIKE likequery('\\dx');
112 SELECT col1 FROM test_bigm WHERE col1 LIKE likequery('200%');
113
114 -- tests for full text search with multi-column index
115 -- keyword exists only in col1. Query on col2 must not return any rows.
116 EXPLAIN (COSTS off) SELECT * FROM test_bigm WHERE col2 LIKE likequery('queries');
117 SELECT * FROM test_bigm WHERE col2 LIKE likequery('queries');
118 -- keyword exists only in col2. All rows with keyword in col2 are returned.
119 EXPLAIN (COSTS off) SELECT * FROM test_bigm WHERE col2 LIKE likequery('meta');
120 SELECT * FROM test_bigm WHERE col2 LIKE likequery('meta');
121 -- keyword exists in both columns. Query on col1 must not return rows with keyword in col2 only.
122 EXPLAIN (COSTS off) SELECT * FROM test_bigm WHERE col1 LIKE likequery('bigm');
123 SELECT * FROM test_bigm WHERE col1 LIKE likequery('bigm');
124
125 -- tests for bigm_similarity
126 SELECT bigm_similarity('wow', NULL);
127 SELECT bigm_similarity('wow', '');
128
129 SELECT bigm_similarity('wow', 'WOWa ');
130 SELECT bigm_similarity('wow', ' WOW ');
131 SELECT bigm_similarity('wow', ' wow ');
132
133 SELECT bigm_similarity('---', '####---');
134
135 -- tests for text similarity serach
136 EXPLAIN (COSTS off) SELECT * FROM test_bigm WHERE col1 =% 'a';
137 EXPLAIN (COSTS off) SELECT * FROM test_bigm WHERE col1 =% 'am';
138 EXPLAIN (COSTS off) SELECT * FROM test_bigm WHERE col1 =% 'XML';
139 EXPLAIN (COSTS off) SELECT * FROM test_bigm WHERE col1 =% 'bigm';
140
141 SELECT col1 FROM test_bigm WHERE col1 =% NULL;
142 SELECT col1 FROM test_bigm WHERE col1 =% '';
143
144 SELECT col1 FROM test_bigm WHERE col1 =% '%';
145 SELECT col1 FROM test_bigm WHERE col1 =% '\\';
146 SELECT col1 FROM test_bigm WHERE col1 =% '_';
147 SELECT col1 FROM test_bigm WHERE col1 =% '\\dx';
148 SELECT col1 FROM test_bigm WHERE col1 =% '200%';
149 SELECT col1 FROM test_bigm WHERE col1 =% '  ';
150
151 SELECT count(*), min(bigm_similarity(col1, 'Y')) FROM test_bigm WHERE col1 =% 'Y';
152 SELECT count(*), max(bigm_similarity(col1, 'Y')) FROM test_bigm WHERE NOT col1 =% 'Y';
153 SELECT count(*), min(bigm_similarity(col1, 'pi')) FROM test_bigm WHERE col1 =% 'pi';
154 SELECT count(*), max(bigm_similarity(col1, 'pi')) FROM test_bigm WHERE NOT col1 =% 'pi';
155 SET pg_bigm.similarity_limit = 0.06;
156 SELECT count(*), min(bigm_similarity(col1, 'GIN')) FROM test_bigm WHERE col1 =% 'GIN';
157 SELECT count(*), max(bigm_similarity(col1, 'GIN')) FROM test_bigm WHERE NOT col1 =% 'GIN';
158 SELECT count(*), min(bigm_similarity(col1, 'gin')) FROM test_bigm WHERE col1 =% 'gin';
159 SELECT count(*), max(bigm_similarity(col1, 'gin')) FROM test_bigm WHERE NOT col1 =% 'gin';
160 SELECT count(*), min(bigm_similarity(col1, 'Tool')) FROM test_bigm WHERE col1 =% 'Tool';
161 SELECT count(*), max(bigm_similarity(col1, 'Tool')) FROM test_bigm WHERE NOT col1 =% 'Tool';
162 SELECT count(*), min(bigm_similarity(col1, 'performance')) FROM test_bigm WHERE col1 =% 'performance';
163 SELECT count(*), max(bigm_similarity(col1, 'performance')) FROM test_bigm WHERE NOT col1 =% 'performance';
164
165 -- tests for drop of pg_bigm
166 DROP EXTENSION pg_bigm CASCADE;
167 SELECT likequery('test');