@@ -4761,6 +4761,12 @@ insert into test2 values ('abcdef');
4761
4761
insert into test2 values ('quark');
4762
4762
insert into test2 values (' z foo bar');
4763
4763
insert into test2 values ('/123/-45/');
4764
+ insert into test2 values ('line 1');
4765
+ insert into test2 values ('%line 2');
4766
+ insert into test2 values ('line 3%');
4767
+ insert into test2 values ('%line 4%');
4768
+ insert into test2 values ('%li%ne 5%');
4769
+ insert into test2 values ('li_e 6');
4764
4770
create index test2_idx_gin on test2 using gin (t gin_trgm_ops);
4765
4771
set enable_seqscan=off;
4766
4772
explain (costs off)
@@ -4863,7 +4869,13 @@ select * from test2 where t ~ '(abc)*$';
4863
4869
quark
4864
4870
z foo bar
4865
4871
/123/-45/
4866
- (4 rows)
4872
+ line 1
4873
+ %line 2
4874
+ line 3%
4875
+ %line 4%
4876
+ %li%ne 5%
4877
+ li_e 6
4878
+ (10 rows)
4867
4879
4868
4880
select * from test2 where t ~* 'DEF';
4869
4881
t
@@ -4918,7 +4930,11 @@ select * from test2 where t ~ '[a-z]{3}';
4918
4930
abcdef
4919
4931
quark
4920
4932
z foo bar
4921
- (3 rows)
4933
+ line 1
4934
+ %line 2
4935
+ line 3%
4936
+ %line 4%
4937
+ (7 rows)
4922
4938
4923
4939
select * from test2 where t ~* '(a{10}|b{10}|c{10}){10}';
4924
4940
t
@@ -4961,6 +4977,93 @@ select * from test2 where t ~ '/\d+/-\d';
4961
4977
/123/-45/
4962
4978
(1 row)
4963
4979
4980
+ -- test = operator
4981
+ explain (costs off)
4982
+ select * from test2 where t = 'abcdef';
4983
+ QUERY PLAN
4984
+ ------------------------------------------
4985
+ Bitmap Heap Scan on test2
4986
+ Recheck Cond: (t = 'abcdef'::text)
4987
+ -> Bitmap Index Scan on test2_idx_gin
4988
+ Index Cond: (t = 'abcdef'::text)
4989
+ (4 rows)
4990
+
4991
+ select * from test2 where t = 'abcdef';
4992
+ t
4993
+ --------
4994
+ abcdef
4995
+ (1 row)
4996
+
4997
+ explain (costs off)
4998
+ select * from test2 where t = '%line%';
4999
+ QUERY PLAN
5000
+ ------------------------------------------
5001
+ Bitmap Heap Scan on test2
5002
+ Recheck Cond: (t = '%line%'::text)
5003
+ -> Bitmap Index Scan on test2_idx_gin
5004
+ Index Cond: (t = '%line%'::text)
5005
+ (4 rows)
5006
+
5007
+ select * from test2 where t = '%line%';
5008
+ t
5009
+ ---
5010
+ (0 rows)
5011
+
5012
+ select * from test2 where t = 'li_e 1';
5013
+ t
5014
+ ---
5015
+ (0 rows)
5016
+
5017
+ select * from test2 where t = '%line 2';
5018
+ t
5019
+ ---------
5020
+ %line 2
5021
+ (1 row)
5022
+
5023
+ select * from test2 where t = 'line 3%';
5024
+ t
5025
+ ---------
5026
+ line 3%
5027
+ (1 row)
5028
+
5029
+ select * from test2 where t = '%line 3%';
5030
+ t
5031
+ ---
5032
+ (0 rows)
5033
+
5034
+ select * from test2 where t = '%line 4%';
5035
+ t
5036
+ ----------
5037
+ %line 4%
5038
+ (1 row)
5039
+
5040
+ select * from test2 where t = '%line 5%';
5041
+ t
5042
+ ---
5043
+ (0 rows)
5044
+
5045
+ select * from test2 where t = '%li_ne 5%';
5046
+ t
5047
+ ---
5048
+ (0 rows)
5049
+
5050
+ select * from test2 where t = '%li%ne 5%';
5051
+ t
5052
+ -----------
5053
+ %li%ne 5%
5054
+ (1 row)
5055
+
5056
+ select * from test2 where t = 'line 6';
5057
+ t
5058
+ ---
5059
+ (0 rows)
5060
+
5061
+ select * from test2 where t = 'li_e 6';
5062
+ t
5063
+ --------
5064
+ li_e 6
5065
+ (1 row)
5066
+
4964
5067
drop index test2_idx_gin;
4965
5068
create index test2_idx_gist on test2 using gist (t gist_trgm_ops);
4966
5069
set enable_seqscan=off;
@@ -5056,7 +5159,13 @@ select * from test2 where t ~ '(abc)*$';
5056
5159
quark
5057
5160
z foo bar
5058
5161
/123/-45/
5059
- (4 rows)
5162
+ line 1
5163
+ %line 2
5164
+ line 3%
5165
+ %line 4%
5166
+ %li%ne 5%
5167
+ li_e 6
5168
+ (10 rows)
5060
5169
5061
5170
select * from test2 where t ~* 'DEF';
5062
5171
t
@@ -5111,7 +5220,11 @@ select * from test2 where t ~ '[a-z]{3}';
5111
5220
abcdef
5112
5221
quark
5113
5222
z foo bar
5114
- (3 rows)
5223
+ line 1
5224
+ %line 2
5225
+ line 3%
5226
+ %line 4%
5227
+ (7 rows)
5115
5228
5116
5229
select * from test2 where t ~* '(a{10}|b{10}|c{10}){10}';
5117
5230
t
@@ -5154,6 +5267,89 @@ select * from test2 where t ~ '/\d+/-\d';
5154
5267
/123/-45/
5155
5268
(1 row)
5156
5269
5270
+ -- test = operator
5271
+ explain (costs off)
5272
+ select * from test2 where t = 'abcdef';
5273
+ QUERY PLAN
5274
+ ------------------------------------------
5275
+ Index Scan using test2_idx_gist on test2
5276
+ Index Cond: (t = 'abcdef'::text)
5277
+ (2 rows)
5278
+
5279
+ select * from test2 where t = 'abcdef';
5280
+ t
5281
+ --------
5282
+ abcdef
5283
+ (1 row)
5284
+
5285
+ explain (costs off)
5286
+ select * from test2 where t = '%line%';
5287
+ QUERY PLAN
5288
+ ------------------------------------------
5289
+ Index Scan using test2_idx_gist on test2
5290
+ Index Cond: (t = '%line%'::text)
5291
+ (2 rows)
5292
+
5293
+ select * from test2 where t = '%line%';
5294
+ t
5295
+ ---
5296
+ (0 rows)
5297
+
5298
+ select * from test2 where t = 'li_e 1';
5299
+ t
5300
+ ---
5301
+ (0 rows)
5302
+
5303
+ select * from test2 where t = '%line 2';
5304
+ t
5305
+ ---------
5306
+ %line 2
5307
+ (1 row)
5308
+
5309
+ select * from test2 where t = 'line 3%';
5310
+ t
5311
+ ---------
5312
+ line 3%
5313
+ (1 row)
5314
+
5315
+ select * from test2 where t = '%line 3%';
5316
+ t
5317
+ ---
5318
+ (0 rows)
5319
+
5320
+ select * from test2 where t = '%line 4%';
5321
+ t
5322
+ ----------
5323
+ %line 4%
5324
+ (1 row)
5325
+
5326
+ select * from test2 where t = '%line 5%';
5327
+ t
5328
+ ---
5329
+ (0 rows)
5330
+
5331
+ select * from test2 where t = '%li_ne 5%';
5332
+ t
5333
+ ---
5334
+ (0 rows)
5335
+
5336
+ select * from test2 where t = '%li%ne 5%';
5337
+ t
5338
+ -----------
5339
+ %li%ne 5%
5340
+ (1 row)
5341
+
5342
+ select * from test2 where t = 'line 6';
5343
+ t
5344
+ ---
5345
+ (0 rows)
5346
+
5347
+ select * from test2 where t = 'li_e 6';
5348
+ t
5349
+ --------
5350
+ li_e 6
5351
+ (1 row)
5352
+
5157
5353
-- Check similarity threshold (bug #14202)
5158
5354
CREATE TEMP TABLE restaurants (city text);
5159
5355
INSERT INTO restaurants SELECT 'Warsaw' FROM generate_series(1, 10000);
0 commit comments