Improve nbtree unsatisfiable RowCompare detection.
[pgsql.git] / src / test / regress / expected / create_index_spgist.out
blob5c04df9c01b14fc2dcc60d8ea7c2463f686575e2
1 --
2 -- SP-GiST index tests
3 --
4 CREATE TABLE quad_point_tbl AS
5     SELECT point(unique1,unique2) AS p FROM tenk1;
6 INSERT INTO quad_point_tbl
7     SELECT '(333.0,400.0)'::point FROM generate_series(1,1000);
8 INSERT INTO quad_point_tbl VALUES (NULL), (NULL), (NULL);
9 CREATE INDEX sp_quad_ind ON quad_point_tbl USING spgist (p);
10 CREATE TABLE kd_point_tbl AS SELECT * FROM quad_point_tbl;
11 CREATE INDEX sp_kd_ind ON kd_point_tbl USING spgist (p kd_point_ops);
12 CREATE TABLE radix_text_tbl AS
13     SELECT name AS t FROM road WHERE name !~ '^[0-9]';
14 INSERT INTO radix_text_tbl
15     SELECT 'P0123456789abcdef' FROM generate_series(1,1000);
16 INSERT INTO radix_text_tbl VALUES ('P0123456789abcde');
17 INSERT INTO radix_text_tbl VALUES ('P0123456789abcdefF');
18 CREATE INDEX sp_radix_ind ON radix_text_tbl USING spgist (t);
19 -- get non-indexed results for comparison purposes
20 SET enable_seqscan = ON;
21 SET enable_indexscan = OFF;
22 SET enable_bitmapscan = OFF;
23 SELECT count(*) FROM quad_point_tbl WHERE p IS NULL;
24  count 
25 -------
26      3
27 (1 row)
29 SELECT count(*) FROM quad_point_tbl WHERE p IS NOT NULL;
30  count 
31 -------
32  11000
33 (1 row)
35 SELECT count(*) FROM quad_point_tbl;
36  count 
37 -------
38  11003
39 (1 row)
41 SELECT count(*) FROM quad_point_tbl WHERE p <@ box '(200,200,1000,1000)';
42  count 
43 -------
44   1057
45 (1 row)
47 SELECT count(*) FROM quad_point_tbl WHERE box '(200,200,1000,1000)' @> p;
48  count 
49 -------
50   1057
51 (1 row)
53 SELECT count(*) FROM quad_point_tbl WHERE p << '(5000, 4000)';
54  count 
55 -------
56   6000
57 (1 row)
59 SELECT count(*) FROM quad_point_tbl WHERE p >> '(5000, 4000)';
60  count 
61 -------
62   4999
63 (1 row)
65 SELECT count(*) FROM quad_point_tbl WHERE p <<| '(5000, 4000)';
66  count 
67 -------
68   5000
69 (1 row)
71 SELECT count(*) FROM quad_point_tbl WHERE p |>> '(5000, 4000)';
72  count 
73 -------
74   5999
75 (1 row)
77 SELECT count(*) FROM quad_point_tbl WHERE p ~= '(4585, 365)';
78  count 
79 -------
80      1
81 (1 row)
83 CREATE TEMP TABLE quad_point_tbl_ord_seq1 AS
84 SELECT row_number() OVER (ORDER BY p <-> '0,0') n, p <-> '0,0' dist, p
85 FROM quad_point_tbl;
86 CREATE TEMP TABLE quad_point_tbl_ord_seq2 AS
87 SELECT row_number() OVER (ORDER BY p <-> '0,0') n, p <-> '0,0' dist, p
88 FROM quad_point_tbl WHERE p <@ box '(200,200,1000,1000)';
89 CREATE TEMP TABLE quad_point_tbl_ord_seq3 AS
90 SELECT row_number() OVER (ORDER BY p <-> '333,400') n, p <-> '333,400' dist, p
91 FROM quad_point_tbl WHERE p IS NOT NULL;
92 SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdef';
93  count 
94 -------
95   1000
96 (1 row)
98 SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcde';
99  count 
100 -------
101      1
102 (1 row)
104 SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdefF';
105  count 
106 -------
107      1
108 (1 row)
110 SELECT count(*) FROM radix_text_tbl WHERE t <    'Aztec                         Ct  ';
111  count 
112 -------
113    272
114 (1 row)
116 SELECT count(*) FROM radix_text_tbl WHERE t ~<~  'Aztec                         Ct  ';
117  count 
118 -------
119    272
120 (1 row)
122 SELECT count(*) FROM radix_text_tbl WHERE t <=   'Aztec                         Ct  ';
123  count 
124 -------
125    273
126 (1 row)
128 SELECT count(*) FROM radix_text_tbl WHERE t ~<=~ 'Aztec                         Ct  ';
129  count 
130 -------
131    273
132 (1 row)
134 SELECT count(*) FROM radix_text_tbl WHERE t =    'Aztec                         Ct  ';
135  count 
136 -------
137      1
138 (1 row)
140 SELECT count(*) FROM radix_text_tbl WHERE t =    'Worth                         St  ';
141  count 
142 -------
143      2
144 (1 row)
146 SELECT count(*) FROM radix_text_tbl WHERE t >=   'Worth                         St  ';
147  count 
148 -------
149     50
150 (1 row)
152 SELECT count(*) FROM radix_text_tbl WHERE t ~>=~ 'Worth                         St  ';
153  count 
154 -------
155     50
156 (1 row)
158 SELECT count(*) FROM radix_text_tbl WHERE t >    'Worth                         St  ';
159  count 
160 -------
161     48
162 (1 row)
164 SELECT count(*) FROM radix_text_tbl WHERE t ~>~  'Worth                         St  ';
165  count 
166 -------
167     48
168 (1 row)
170 SELECT count(*) FROM radix_text_tbl WHERE t ^@  'Worth';
171  count 
172 -------
173      2
174 (1 row)
176 -- Now check the results from plain indexscan
177 SET enable_seqscan = OFF;
178 SET enable_indexscan = ON;
179 SET enable_bitmapscan = OFF;
180 EXPLAIN (COSTS OFF)
181 SELECT count(*) FROM quad_point_tbl WHERE p IS NULL;
182                         QUERY PLAN                         
183 -----------------------------------------------------------
184  Aggregate
185    ->  Index Only Scan using sp_quad_ind on quad_point_tbl
186          Index Cond: (p IS NULL)
187 (3 rows)
189 SELECT count(*) FROM quad_point_tbl WHERE p IS NULL;
190  count 
191 -------
192      3
193 (1 row)
195 EXPLAIN (COSTS OFF)
196 SELECT count(*) FROM quad_point_tbl WHERE p IS NOT NULL;
197                         QUERY PLAN                         
198 -----------------------------------------------------------
199  Aggregate
200    ->  Index Only Scan using sp_quad_ind on quad_point_tbl
201          Index Cond: (p IS NOT NULL)
202 (3 rows)
204 SELECT count(*) FROM quad_point_tbl WHERE p IS NOT NULL;
205  count 
206 -------
207  11000
208 (1 row)
210 EXPLAIN (COSTS OFF)
211 SELECT count(*) FROM quad_point_tbl;
212                         QUERY PLAN                         
213 -----------------------------------------------------------
214  Aggregate
215    ->  Index Only Scan using sp_quad_ind on quad_point_tbl
216 (2 rows)
218 SELECT count(*) FROM quad_point_tbl;
219  count 
220 -------
221  11003
222 (1 row)
224 EXPLAIN (COSTS OFF)
225 SELECT count(*) FROM quad_point_tbl WHERE p <@ box '(200,200,1000,1000)';
226                         QUERY PLAN                         
227 -----------------------------------------------------------
228  Aggregate
229    ->  Index Only Scan using sp_quad_ind on quad_point_tbl
230          Index Cond: (p <@ '(1000,1000),(200,200)'::box)
231 (3 rows)
233 SELECT count(*) FROM quad_point_tbl WHERE p <@ box '(200,200,1000,1000)';
234  count 
235 -------
236   1057
237 (1 row)
239 EXPLAIN (COSTS OFF)
240 SELECT count(*) FROM quad_point_tbl WHERE box '(200,200,1000,1000)' @> p;
241                         QUERY PLAN                         
242 -----------------------------------------------------------
243  Aggregate
244    ->  Index Only Scan using sp_quad_ind on quad_point_tbl
245          Index Cond: (p <@ '(1000,1000),(200,200)'::box)
246 (3 rows)
248 SELECT count(*) FROM quad_point_tbl WHERE box '(200,200,1000,1000)' @> p;
249  count 
250 -------
251   1057
252 (1 row)
254 EXPLAIN (COSTS OFF)
255 SELECT count(*) FROM quad_point_tbl WHERE p << '(5000, 4000)';
256                         QUERY PLAN                         
257 -----------------------------------------------------------
258  Aggregate
259    ->  Index Only Scan using sp_quad_ind on quad_point_tbl
260          Index Cond: (p << '(5000,4000)'::point)
261 (3 rows)
263 SELECT count(*) FROM quad_point_tbl WHERE p << '(5000, 4000)';
264  count 
265 -------
266   6000
267 (1 row)
269 EXPLAIN (COSTS OFF)
270 SELECT count(*) FROM quad_point_tbl WHERE p >> '(5000, 4000)';
271                         QUERY PLAN                         
272 -----------------------------------------------------------
273  Aggregate
274    ->  Index Only Scan using sp_quad_ind on quad_point_tbl
275          Index Cond: (p >> '(5000,4000)'::point)
276 (3 rows)
278 SELECT count(*) FROM quad_point_tbl WHERE p >> '(5000, 4000)';
279  count 
280 -------
281   4999
282 (1 row)
284 EXPLAIN (COSTS OFF)
285 SELECT count(*) FROM quad_point_tbl WHERE p <<| '(5000, 4000)';
286                         QUERY PLAN                         
287 -----------------------------------------------------------
288  Aggregate
289    ->  Index Only Scan using sp_quad_ind on quad_point_tbl
290          Index Cond: (p <<| '(5000,4000)'::point)
291 (3 rows)
293 SELECT count(*) FROM quad_point_tbl WHERE p <<| '(5000, 4000)';
294  count 
295 -------
296   5000
297 (1 row)
299 EXPLAIN (COSTS OFF)
300 SELECT count(*) FROM quad_point_tbl WHERE p |>> '(5000, 4000)';
301                         QUERY PLAN                         
302 -----------------------------------------------------------
303  Aggregate
304    ->  Index Only Scan using sp_quad_ind on quad_point_tbl
305          Index Cond: (p |>> '(5000,4000)'::point)
306 (3 rows)
308 SELECT count(*) FROM quad_point_tbl WHERE p |>> '(5000, 4000)';
309  count 
310 -------
311   5999
312 (1 row)
314 EXPLAIN (COSTS OFF)
315 SELECT count(*) FROM quad_point_tbl WHERE p ~= '(4585, 365)';
316                         QUERY PLAN                         
317 -----------------------------------------------------------
318  Aggregate
319    ->  Index Only Scan using sp_quad_ind on quad_point_tbl
320          Index Cond: (p ~= '(4585,365)'::point)
321 (3 rows)
323 SELECT count(*) FROM quad_point_tbl WHERE p ~= '(4585, 365)';
324  count 
325 -------
326      1
327 (1 row)
329 EXPLAIN (COSTS OFF)
330 SELECT row_number() OVER (ORDER BY p <-> '0,0') n, p <-> '0,0' dist, p
331 FROM quad_point_tbl;
332                         QUERY PLAN                         
333 -----------------------------------------------------------
334  WindowAgg
335    ->  Index Only Scan using sp_quad_ind on quad_point_tbl
336          Order By: (p <-> '(0,0)'::point)
337 (3 rows)
339 CREATE TEMP TABLE quad_point_tbl_ord_idx1 AS
340 SELECT row_number() OVER (ORDER BY p <-> '0,0') n, p <-> '0,0' dist, p
341 FROM quad_point_tbl;
342 SELECT * FROM quad_point_tbl_ord_seq1 seq FULL JOIN quad_point_tbl_ord_idx1 idx
343 ON seq.n = idx.n
344 WHERE seq.dist IS DISTINCT FROM idx.dist;
345  n | dist | p | n | dist | p 
346 ---+------+---+---+------+---
347 (0 rows)
349 EXPLAIN (COSTS OFF)
350 SELECT row_number() OVER (ORDER BY p <-> '0,0') n, p <-> '0,0' dist, p
351 FROM quad_point_tbl WHERE p <@ box '(200,200,1000,1000)';
352                         QUERY PLAN                         
353 -----------------------------------------------------------
354  WindowAgg
355    ->  Index Only Scan using sp_quad_ind on quad_point_tbl
356          Index Cond: (p <@ '(1000,1000),(200,200)'::box)
357          Order By: (p <-> '(0,0)'::point)
358 (4 rows)
360 CREATE TEMP TABLE quad_point_tbl_ord_idx2 AS
361 SELECT row_number() OVER (ORDER BY p <-> '0,0') n, p <-> '0,0' dist, p
362 FROM quad_point_tbl WHERE p <@ box '(200,200,1000,1000)';
363 SELECT * FROM quad_point_tbl_ord_seq2 seq FULL JOIN quad_point_tbl_ord_idx2 idx
364 ON seq.n = idx.n
365 WHERE seq.dist IS DISTINCT FROM idx.dist;
366  n | dist | p | n | dist | p 
367 ---+------+---+---+------+---
368 (0 rows)
370 EXPLAIN (COSTS OFF)
371 SELECT row_number() OVER (ORDER BY p <-> '333,400') n, p <-> '333,400' dist, p
372 FROM quad_point_tbl WHERE p IS NOT NULL;
373                         QUERY PLAN                         
374 -----------------------------------------------------------
375  WindowAgg
376    ->  Index Only Scan using sp_quad_ind on quad_point_tbl
377          Index Cond: (p IS NOT NULL)
378          Order By: (p <-> '(333,400)'::point)
379 (4 rows)
381 CREATE TEMP TABLE quad_point_tbl_ord_idx3 AS
382 SELECT row_number() OVER (ORDER BY p <-> '333,400') n, p <-> '333,400' dist, p
383 FROM quad_point_tbl WHERE p IS NOT NULL;
384 SELECT * FROM quad_point_tbl_ord_seq3 seq FULL JOIN quad_point_tbl_ord_idx3 idx
385 ON seq.n = idx.n
386 WHERE seq.dist IS DISTINCT FROM idx.dist;
387  n | dist | p | n | dist | p 
388 ---+------+---+---+------+---
389 (0 rows)
391 EXPLAIN (COSTS OFF)
392 SELECT count(*) FROM kd_point_tbl WHERE p <@ box '(200,200,1000,1000)';
393                        QUERY PLAN                        
394 ---------------------------------------------------------
395  Aggregate
396    ->  Index Only Scan using sp_kd_ind on kd_point_tbl
397          Index Cond: (p <@ '(1000,1000),(200,200)'::box)
398 (3 rows)
400 SELECT count(*) FROM kd_point_tbl WHERE p <@ box '(200,200,1000,1000)';
401  count 
402 -------
403   1057
404 (1 row)
406 EXPLAIN (COSTS OFF)
407 SELECT count(*) FROM kd_point_tbl WHERE box '(200,200,1000,1000)' @> p;
408                        QUERY PLAN                        
409 ---------------------------------------------------------
410  Aggregate
411    ->  Index Only Scan using sp_kd_ind on kd_point_tbl
412          Index Cond: (p <@ '(1000,1000),(200,200)'::box)
413 (3 rows)
415 SELECT count(*) FROM kd_point_tbl WHERE box '(200,200,1000,1000)' @> p;
416  count 
417 -------
418   1057
419 (1 row)
421 EXPLAIN (COSTS OFF)
422 SELECT count(*) FROM kd_point_tbl WHERE p << '(5000, 4000)';
423                       QUERY PLAN                       
424 -------------------------------------------------------
425  Aggregate
426    ->  Index Only Scan using sp_kd_ind on kd_point_tbl
427          Index Cond: (p << '(5000,4000)'::point)
428 (3 rows)
430 SELECT count(*) FROM kd_point_tbl WHERE p << '(5000, 4000)';
431  count 
432 -------
433   6000
434 (1 row)
436 EXPLAIN (COSTS OFF)
437 SELECT count(*) FROM kd_point_tbl WHERE p >> '(5000, 4000)';
438                       QUERY PLAN                       
439 -------------------------------------------------------
440  Aggregate
441    ->  Index Only Scan using sp_kd_ind on kd_point_tbl
442          Index Cond: (p >> '(5000,4000)'::point)
443 (3 rows)
445 SELECT count(*) FROM kd_point_tbl WHERE p >> '(5000, 4000)';
446  count 
447 -------
448   4999
449 (1 row)
451 EXPLAIN (COSTS OFF)
452 SELECT count(*) FROM kd_point_tbl WHERE p <<| '(5000, 4000)';
453                       QUERY PLAN                       
454 -------------------------------------------------------
455  Aggregate
456    ->  Index Only Scan using sp_kd_ind on kd_point_tbl
457          Index Cond: (p <<| '(5000,4000)'::point)
458 (3 rows)
460 SELECT count(*) FROM kd_point_tbl WHERE p <<| '(5000, 4000)';
461  count 
462 -------
463   5000
464 (1 row)
466 EXPLAIN (COSTS OFF)
467 SELECT count(*) FROM kd_point_tbl WHERE p |>> '(5000, 4000)';
468                       QUERY PLAN                       
469 -------------------------------------------------------
470  Aggregate
471    ->  Index Only Scan using sp_kd_ind on kd_point_tbl
472          Index Cond: (p |>> '(5000,4000)'::point)
473 (3 rows)
475 SELECT count(*) FROM kd_point_tbl WHERE p |>> '(5000, 4000)';
476  count 
477 -------
478   5999
479 (1 row)
481 EXPLAIN (COSTS OFF)
482 SELECT count(*) FROM kd_point_tbl WHERE p ~= '(4585, 365)';
483                       QUERY PLAN                       
484 -------------------------------------------------------
485  Aggregate
486    ->  Index Only Scan using sp_kd_ind on kd_point_tbl
487          Index Cond: (p ~= '(4585,365)'::point)
488 (3 rows)
490 SELECT count(*) FROM kd_point_tbl WHERE p ~= '(4585, 365)';
491  count 
492 -------
493      1
494 (1 row)
496 EXPLAIN (COSTS OFF)
497 SELECT row_number() OVER (ORDER BY p <-> '0,0') n, p <-> '0,0' dist, p
498 FROM kd_point_tbl;
499                       QUERY PLAN                       
500 -------------------------------------------------------
501  WindowAgg
502    ->  Index Only Scan using sp_kd_ind on kd_point_tbl
503          Order By: (p <-> '(0,0)'::point)
504 (3 rows)
506 CREATE TEMP TABLE kd_point_tbl_ord_idx1 AS
507 SELECT row_number() OVER (ORDER BY p <-> '0,0') n, p <-> '0,0' dist, p
508 FROM kd_point_tbl;
509 SELECT * FROM quad_point_tbl_ord_seq1 seq FULL JOIN kd_point_tbl_ord_idx1 idx
510 ON seq.n = idx.n
511 WHERE seq.dist IS DISTINCT FROM idx.dist;
512  n | dist | p | n | dist | p 
513 ---+------+---+---+------+---
514 (0 rows)
516 EXPLAIN (COSTS OFF)
517 SELECT row_number() OVER (ORDER BY p <-> '0,0') n, p <-> '0,0' dist, p
518 FROM kd_point_tbl WHERE p <@ box '(200,200,1000,1000)';
519                        QUERY PLAN                        
520 ---------------------------------------------------------
521  WindowAgg
522    ->  Index Only Scan using sp_kd_ind on kd_point_tbl
523          Index Cond: (p <@ '(1000,1000),(200,200)'::box)
524          Order By: (p <-> '(0,0)'::point)
525 (4 rows)
527 CREATE TEMP TABLE kd_point_tbl_ord_idx2 AS
528 SELECT row_number() OVER (ORDER BY p <-> '0,0') n, p <-> '0,0' dist, p
529 FROM kd_point_tbl WHERE p <@ box '(200,200,1000,1000)';
530 SELECT * FROM quad_point_tbl_ord_seq2 seq FULL JOIN kd_point_tbl_ord_idx2 idx
531 ON seq.n = idx.n
532 WHERE seq.dist IS DISTINCT FROM idx.dist;
533  n | dist | p | n | dist | p 
534 ---+------+---+---+------+---
535 (0 rows)
537 EXPLAIN (COSTS OFF)
538 SELECT row_number() OVER (ORDER BY p <-> '333,400') n, p <-> '333,400' dist, p
539 FROM kd_point_tbl WHERE p IS NOT NULL;
540                       QUERY PLAN                       
541 -------------------------------------------------------
542  WindowAgg
543    ->  Index Only Scan using sp_kd_ind on kd_point_tbl
544          Index Cond: (p IS NOT NULL)
545          Order By: (p <-> '(333,400)'::point)
546 (4 rows)
548 CREATE TEMP TABLE kd_point_tbl_ord_idx3 AS
549 SELECT row_number() OVER (ORDER BY p <-> '333,400') n, p <-> '333,400' dist, p
550 FROM kd_point_tbl WHERE p IS NOT NULL;
551 SELECT * FROM quad_point_tbl_ord_seq3 seq FULL JOIN kd_point_tbl_ord_idx3 idx
552 ON seq.n = idx.n
553 WHERE seq.dist IS DISTINCT FROM idx.dist;
554  n | dist | p | n | dist | p 
555 ---+------+---+---+------+---
556 (0 rows)
558 -- test KNN scan with included columns
559 -- the distance numbers are not exactly the same across platforms
560 SET extra_float_digits = 0;
561 CREATE INDEX ON quad_point_tbl_ord_seq1 USING spgist(p) INCLUDE(dist);
562 EXPLAIN (COSTS OFF)
563 SELECT p, dist FROM quad_point_tbl_ord_seq1 ORDER BY p <-> '0,0' LIMIT 10;
564                                         QUERY PLAN                                         
565 -------------------------------------------------------------------------------------------
566  Limit
567    ->  Index Only Scan using quad_point_tbl_ord_seq1_p_dist_idx on quad_point_tbl_ord_seq1
568          Order By: (p <-> '(0,0)'::point)
569 (3 rows)
571 SELECT p, dist FROM quad_point_tbl_ord_seq1 ORDER BY p <-> '0,0' LIMIT 10;
572      p     |       dist       
573 -----------+------------------
574  (59,21)   | 62.6258732474047
575  (88,104)  | 136.235090927411
576  (39,143)  | 148.222805262888
577  (139,160) | 211.945747775227
578  (209,38)  |  212.42645786248
579  (157,156) | 221.325552072055
580  (175,150) | 230.488611432322
581  (236,34)  | 238.436574375661
582  (263,28)  | 264.486294540946
583  (322,53)  |  326.33265236565
584 (10 rows)
586 RESET extra_float_digits;
587 -- check ORDER BY distance to NULL
588 SELECT (SELECT p FROM kd_point_tbl ORDER BY p <-> pt, p <-> '0,0' LIMIT 1)
589 FROM (VALUES (point '1,2'), (NULL), ('1234,5678')) pts(pt);
590       p      
591 -------------
592  (59,21)
593  (59,21)
594  (1239,5647)
595 (3 rows)
597 EXPLAIN (COSTS OFF)
598 SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdef';
599                          QUERY PLAN                         
600 ------------------------------------------------------------
601  Aggregate
602    ->  Index Only Scan using sp_radix_ind on radix_text_tbl
603          Index Cond: (t = 'P0123456789abcdef'::text)
604 (3 rows)
606 SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdef';
607  count 
608 -------
609   1000
610 (1 row)
612 EXPLAIN (COSTS OFF)
613 SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcde';
614                          QUERY PLAN                         
615 ------------------------------------------------------------
616  Aggregate
617    ->  Index Only Scan using sp_radix_ind on radix_text_tbl
618          Index Cond: (t = 'P0123456789abcde'::text)
619 (3 rows)
621 SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcde';
622  count 
623 -------
624      1
625 (1 row)
627 EXPLAIN (COSTS OFF)
628 SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdefF';
629                          QUERY PLAN                         
630 ------------------------------------------------------------
631  Aggregate
632    ->  Index Only Scan using sp_radix_ind on radix_text_tbl
633          Index Cond: (t = 'P0123456789abcdefF'::text)
634 (3 rows)
636 SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdefF';
637  count 
638 -------
639      1
640 (1 row)
642 EXPLAIN (COSTS OFF)
643 SELECT count(*) FROM radix_text_tbl WHERE t <    'Aztec                         Ct  ';
644                               QUERY PLAN                              
645 ----------------------------------------------------------------------
646  Aggregate
647    ->  Index Only Scan using sp_radix_ind on radix_text_tbl
648          Index Cond: (t < 'Aztec                         Ct  '::text)
649 (3 rows)
651 SELECT count(*) FROM radix_text_tbl WHERE t <    'Aztec                         Ct  ';
652  count 
653 -------
654    272
655 (1 row)
657 EXPLAIN (COSTS OFF)
658 SELECT count(*) FROM radix_text_tbl WHERE t ~<~  'Aztec                         Ct  ';
659                                QUERY PLAN                               
660 ------------------------------------------------------------------------
661  Aggregate
662    ->  Index Only Scan using sp_radix_ind on radix_text_tbl
663          Index Cond: (t ~<~ 'Aztec                         Ct  '::text)
664 (3 rows)
666 SELECT count(*) FROM radix_text_tbl WHERE t ~<~  'Aztec                         Ct  ';
667  count 
668 -------
669    272
670 (1 row)
672 EXPLAIN (COSTS OFF)
673 SELECT count(*) FROM radix_text_tbl WHERE t <=   'Aztec                         Ct  ';
674                               QUERY PLAN                               
675 -----------------------------------------------------------------------
676  Aggregate
677    ->  Index Only Scan using sp_radix_ind on radix_text_tbl
678          Index Cond: (t <= 'Aztec                         Ct  '::text)
679 (3 rows)
681 SELECT count(*) FROM radix_text_tbl WHERE t <=   'Aztec                         Ct  ';
682  count 
683 -------
684    273
685 (1 row)
687 EXPLAIN (COSTS OFF)
688 SELECT count(*) FROM radix_text_tbl WHERE t ~<=~ 'Aztec                         Ct  ';
689                                QUERY PLAN                                
690 -------------------------------------------------------------------------
691  Aggregate
692    ->  Index Only Scan using sp_radix_ind on radix_text_tbl
693          Index Cond: (t ~<=~ 'Aztec                         Ct  '::text)
694 (3 rows)
696 SELECT count(*) FROM radix_text_tbl WHERE t ~<=~ 'Aztec                         Ct  ';
697  count 
698 -------
699    273
700 (1 row)
702 EXPLAIN (COSTS OFF)
703 SELECT count(*) FROM radix_text_tbl WHERE t =    'Aztec                         Ct  ';
704                               QUERY PLAN                              
705 ----------------------------------------------------------------------
706  Aggregate
707    ->  Index Only Scan using sp_radix_ind on radix_text_tbl
708          Index Cond: (t = 'Aztec                         Ct  '::text)
709 (3 rows)
711 SELECT count(*) FROM radix_text_tbl WHERE t =    'Aztec                         Ct  ';
712  count 
713 -------
714      1
715 (1 row)
717 EXPLAIN (COSTS OFF)
718 SELECT count(*) FROM radix_text_tbl WHERE t =    'Worth                         St  ';
719                               QUERY PLAN                              
720 ----------------------------------------------------------------------
721  Aggregate
722    ->  Index Only Scan using sp_radix_ind on radix_text_tbl
723          Index Cond: (t = 'Worth                         St  '::text)
724 (3 rows)
726 SELECT count(*) FROM radix_text_tbl WHERE t =    'Worth                         St  ';
727  count 
728 -------
729      2
730 (1 row)
732 EXPLAIN (COSTS OFF)
733 SELECT count(*) FROM radix_text_tbl WHERE t >=   'Worth                         St  ';
734                               QUERY PLAN                               
735 -----------------------------------------------------------------------
736  Aggregate
737    ->  Index Only Scan using sp_radix_ind on radix_text_tbl
738          Index Cond: (t >= 'Worth                         St  '::text)
739 (3 rows)
741 SELECT count(*) FROM radix_text_tbl WHERE t >=   'Worth                         St  ';
742  count 
743 -------
744     50
745 (1 row)
747 EXPLAIN (COSTS OFF)
748 SELECT count(*) FROM radix_text_tbl WHERE t ~>=~ 'Worth                         St  ';
749                                QUERY PLAN                                
750 -------------------------------------------------------------------------
751  Aggregate
752    ->  Index Only Scan using sp_radix_ind on radix_text_tbl
753          Index Cond: (t ~>=~ 'Worth                         St  '::text)
754 (3 rows)
756 SELECT count(*) FROM radix_text_tbl WHERE t ~>=~ 'Worth                         St  ';
757  count 
758 -------
759     50
760 (1 row)
762 EXPLAIN (COSTS OFF)
763 SELECT count(*) FROM radix_text_tbl WHERE t >    'Worth                         St  ';
764                               QUERY PLAN                              
765 ----------------------------------------------------------------------
766  Aggregate
767    ->  Index Only Scan using sp_radix_ind on radix_text_tbl
768          Index Cond: (t > 'Worth                         St  '::text)
769 (3 rows)
771 SELECT count(*) FROM radix_text_tbl WHERE t >    'Worth                         St  ';
772  count 
773 -------
774     48
775 (1 row)
777 EXPLAIN (COSTS OFF)
778 SELECT count(*) FROM radix_text_tbl WHERE t ~>~  'Worth                         St  ';
779                                QUERY PLAN                               
780 ------------------------------------------------------------------------
781  Aggregate
782    ->  Index Only Scan using sp_radix_ind on radix_text_tbl
783          Index Cond: (t ~>~ 'Worth                         St  '::text)
784 (3 rows)
786 SELECT count(*) FROM radix_text_tbl WHERE t ~>~  'Worth                         St  ';
787  count 
788 -------
789     48
790 (1 row)
792 EXPLAIN (COSTS OFF)
793 SELECT count(*) FROM radix_text_tbl WHERE t ^@   'Worth';
794                          QUERY PLAN                         
795 ------------------------------------------------------------
796  Aggregate
797    ->  Index Only Scan using sp_radix_ind on radix_text_tbl
798          Index Cond: (t ^@ 'Worth'::text)
799 (3 rows)
801 SELECT count(*) FROM radix_text_tbl WHERE t ^@   'Worth';
802  count 
803 -------
804      2
805 (1 row)
807 EXPLAIN (COSTS OFF)
808 SELECT count(*) FROM radix_text_tbl WHERE starts_with(t, 'Worth');
809                          QUERY PLAN                         
810 ------------------------------------------------------------
811  Aggregate
812    ->  Index Only Scan using sp_radix_ind on radix_text_tbl
813          Index Cond: (t ^@ 'Worth'::text)
814          Filter: starts_with(t, 'Worth'::text)
815 (4 rows)
817 SELECT count(*) FROM radix_text_tbl WHERE starts_with(t, 'Worth');
818  count 
819 -------
820      2
821 (1 row)
823 -- Now check the results from bitmap indexscan
824 SET enable_seqscan = OFF;
825 SET enable_indexscan = OFF;
826 SET enable_bitmapscan = ON;
827 EXPLAIN (COSTS OFF)
828 SELECT count(*) FROM quad_point_tbl WHERE p IS NULL;
829                   QUERY PLAN                  
830 ----------------------------------------------
831  Aggregate
832    ->  Bitmap Heap Scan on quad_point_tbl
833          Recheck Cond: (p IS NULL)
834          ->  Bitmap Index Scan on sp_quad_ind
835                Index Cond: (p IS NULL)
836 (5 rows)
838 SELECT count(*) FROM quad_point_tbl WHERE p IS NULL;
839  count 
840 -------
841      3
842 (1 row)
844 EXPLAIN (COSTS OFF)
845 SELECT count(*) FROM quad_point_tbl WHERE p IS NOT NULL;
846                   QUERY PLAN                  
847 ----------------------------------------------
848  Aggregate
849    ->  Bitmap Heap Scan on quad_point_tbl
850          Recheck Cond: (p IS NOT NULL)
851          ->  Bitmap Index Scan on sp_quad_ind
852                Index Cond: (p IS NOT NULL)
853 (5 rows)
855 SELECT count(*) FROM quad_point_tbl WHERE p IS NOT NULL;
856  count 
857 -------
858  11000
859 (1 row)
861 EXPLAIN (COSTS OFF)
862 SELECT count(*) FROM quad_point_tbl;
863                   QUERY PLAN                  
864 ----------------------------------------------
865  Aggregate
866    ->  Bitmap Heap Scan on quad_point_tbl
867          ->  Bitmap Index Scan on sp_quad_ind
868 (3 rows)
870 SELECT count(*) FROM quad_point_tbl;
871  count 
872 -------
873  11003
874 (1 row)
876 EXPLAIN (COSTS OFF)
877 SELECT count(*) FROM quad_point_tbl WHERE p <@ box '(200,200,1000,1000)';
878                           QUERY PLAN                           
879 ---------------------------------------------------------------
880  Aggregate
881    ->  Bitmap Heap Scan on quad_point_tbl
882          Recheck Cond: (p <@ '(1000,1000),(200,200)'::box)
883          ->  Bitmap Index Scan on sp_quad_ind
884                Index Cond: (p <@ '(1000,1000),(200,200)'::box)
885 (5 rows)
887 SELECT count(*) FROM quad_point_tbl WHERE p <@ box '(200,200,1000,1000)';
888  count 
889 -------
890   1057
891 (1 row)
893 EXPLAIN (COSTS OFF)
894 SELECT count(*) FROM quad_point_tbl WHERE box '(200,200,1000,1000)' @> p;
895                           QUERY PLAN                           
896 ---------------------------------------------------------------
897  Aggregate
898    ->  Bitmap Heap Scan on quad_point_tbl
899          Recheck Cond: ('(1000,1000),(200,200)'::box @> p)
900          ->  Bitmap Index Scan on sp_quad_ind
901                Index Cond: (p <@ '(1000,1000),(200,200)'::box)
902 (5 rows)
904 SELECT count(*) FROM quad_point_tbl WHERE box '(200,200,1000,1000)' @> p;
905  count 
906 -------
907   1057
908 (1 row)
910 EXPLAIN (COSTS OFF)
911 SELECT count(*) FROM quad_point_tbl WHERE p << '(5000, 4000)';
912                       QUERY PLAN                       
913 -------------------------------------------------------
914  Aggregate
915    ->  Bitmap Heap Scan on quad_point_tbl
916          Recheck Cond: (p << '(5000,4000)'::point)
917          ->  Bitmap Index Scan on sp_quad_ind
918                Index Cond: (p << '(5000,4000)'::point)
919 (5 rows)
921 SELECT count(*) FROM quad_point_tbl WHERE p << '(5000, 4000)';
922  count 
923 -------
924   6000
925 (1 row)
927 EXPLAIN (COSTS OFF)
928 SELECT count(*) FROM quad_point_tbl WHERE p >> '(5000, 4000)';
929                       QUERY PLAN                       
930 -------------------------------------------------------
931  Aggregate
932    ->  Bitmap Heap Scan on quad_point_tbl
933          Recheck Cond: (p >> '(5000,4000)'::point)
934          ->  Bitmap Index Scan on sp_quad_ind
935                Index Cond: (p >> '(5000,4000)'::point)
936 (5 rows)
938 SELECT count(*) FROM quad_point_tbl WHERE p >> '(5000, 4000)';
939  count 
940 -------
941   4999
942 (1 row)
944 EXPLAIN (COSTS OFF)
945 SELECT count(*) FROM quad_point_tbl WHERE p <<| '(5000, 4000)';
946                        QUERY PLAN                       
947 --------------------------------------------------------
948  Aggregate
949    ->  Bitmap Heap Scan on quad_point_tbl
950          Recheck Cond: (p <<| '(5000,4000)'::point)
951          ->  Bitmap Index Scan on sp_quad_ind
952                Index Cond: (p <<| '(5000,4000)'::point)
953 (5 rows)
955 SELECT count(*) FROM quad_point_tbl WHERE p <<| '(5000, 4000)';
956  count 
957 -------
958   5000
959 (1 row)
961 EXPLAIN (COSTS OFF)
962 SELECT count(*) FROM quad_point_tbl WHERE p |>> '(5000, 4000)';
963                        QUERY PLAN                       
964 --------------------------------------------------------
965  Aggregate
966    ->  Bitmap Heap Scan on quad_point_tbl
967          Recheck Cond: (p |>> '(5000,4000)'::point)
968          ->  Bitmap Index Scan on sp_quad_ind
969                Index Cond: (p |>> '(5000,4000)'::point)
970 (5 rows)
972 SELECT count(*) FROM quad_point_tbl WHERE p |>> '(5000, 4000)';
973  count 
974 -------
975   5999
976 (1 row)
978 EXPLAIN (COSTS OFF)
979 SELECT count(*) FROM quad_point_tbl WHERE p ~= '(4585, 365)';
980                       QUERY PLAN                      
981 ------------------------------------------------------
982  Aggregate
983    ->  Bitmap Heap Scan on quad_point_tbl
984          Recheck Cond: (p ~= '(4585,365)'::point)
985          ->  Bitmap Index Scan on sp_quad_ind
986                Index Cond: (p ~= '(4585,365)'::point)
987 (5 rows)
989 SELECT count(*) FROM quad_point_tbl WHERE p ~= '(4585, 365)';
990  count 
991 -------
992      1
993 (1 row)
995 EXPLAIN (COSTS OFF)
996 SELECT count(*) FROM kd_point_tbl WHERE p <@ box '(200,200,1000,1000)';
997                           QUERY PLAN                           
998 ---------------------------------------------------------------
999  Aggregate
1000    ->  Bitmap Heap Scan on kd_point_tbl
1001          Recheck Cond: (p <@ '(1000,1000),(200,200)'::box)
1002          ->  Bitmap Index Scan on sp_kd_ind
1003                Index Cond: (p <@ '(1000,1000),(200,200)'::box)
1004 (5 rows)
1006 SELECT count(*) FROM kd_point_tbl WHERE p <@ box '(200,200,1000,1000)';
1007  count 
1008 -------
1009   1057
1010 (1 row)
1012 EXPLAIN (COSTS OFF)
1013 SELECT count(*) FROM kd_point_tbl WHERE box '(200,200,1000,1000)' @> p;
1014                           QUERY PLAN                           
1015 ---------------------------------------------------------------
1016  Aggregate
1017    ->  Bitmap Heap Scan on kd_point_tbl
1018          Recheck Cond: ('(1000,1000),(200,200)'::box @> p)
1019          ->  Bitmap Index Scan on sp_kd_ind
1020                Index Cond: (p <@ '(1000,1000),(200,200)'::box)
1021 (5 rows)
1023 SELECT count(*) FROM kd_point_tbl WHERE box '(200,200,1000,1000)' @> p;
1024  count 
1025 -------
1026   1057
1027 (1 row)
1029 EXPLAIN (COSTS OFF)
1030 SELECT count(*) FROM kd_point_tbl WHERE p << '(5000, 4000)';
1031                       QUERY PLAN                       
1032 -------------------------------------------------------
1033  Aggregate
1034    ->  Bitmap Heap Scan on kd_point_tbl
1035          Recheck Cond: (p << '(5000,4000)'::point)
1036          ->  Bitmap Index Scan on sp_kd_ind
1037                Index Cond: (p << '(5000,4000)'::point)
1038 (5 rows)
1040 SELECT count(*) FROM kd_point_tbl WHERE p << '(5000, 4000)';
1041  count 
1042 -------
1043   6000
1044 (1 row)
1046 EXPLAIN (COSTS OFF)
1047 SELECT count(*) FROM kd_point_tbl WHERE p >> '(5000, 4000)';
1048                       QUERY PLAN                       
1049 -------------------------------------------------------
1050  Aggregate
1051    ->  Bitmap Heap Scan on kd_point_tbl
1052          Recheck Cond: (p >> '(5000,4000)'::point)
1053          ->  Bitmap Index Scan on sp_kd_ind
1054                Index Cond: (p >> '(5000,4000)'::point)
1055 (5 rows)
1057 SELECT count(*) FROM kd_point_tbl WHERE p >> '(5000, 4000)';
1058  count 
1059 -------
1060   4999
1061 (1 row)
1063 EXPLAIN (COSTS OFF)
1064 SELECT count(*) FROM kd_point_tbl WHERE p <<| '(5000, 4000)';
1065                        QUERY PLAN                       
1066 --------------------------------------------------------
1067  Aggregate
1068    ->  Bitmap Heap Scan on kd_point_tbl
1069          Recheck Cond: (p <<| '(5000,4000)'::point)
1070          ->  Bitmap Index Scan on sp_kd_ind
1071                Index Cond: (p <<| '(5000,4000)'::point)
1072 (5 rows)
1074 SELECT count(*) FROM kd_point_tbl WHERE p <<| '(5000, 4000)';
1075  count 
1076 -------
1077   5000
1078 (1 row)
1080 EXPLAIN (COSTS OFF)
1081 SELECT count(*) FROM kd_point_tbl WHERE p |>> '(5000, 4000)';
1082                        QUERY PLAN                       
1083 --------------------------------------------------------
1084  Aggregate
1085    ->  Bitmap Heap Scan on kd_point_tbl
1086          Recheck Cond: (p |>> '(5000,4000)'::point)
1087          ->  Bitmap Index Scan on sp_kd_ind
1088                Index Cond: (p |>> '(5000,4000)'::point)
1089 (5 rows)
1091 SELECT count(*) FROM kd_point_tbl WHERE p |>> '(5000, 4000)';
1092  count 
1093 -------
1094   5999
1095 (1 row)
1097 EXPLAIN (COSTS OFF)
1098 SELECT count(*) FROM kd_point_tbl WHERE p ~= '(4585, 365)';
1099                       QUERY PLAN                      
1100 ------------------------------------------------------
1101  Aggregate
1102    ->  Bitmap Heap Scan on kd_point_tbl
1103          Recheck Cond: (p ~= '(4585,365)'::point)
1104          ->  Bitmap Index Scan on sp_kd_ind
1105                Index Cond: (p ~= '(4585,365)'::point)
1106 (5 rows)
1108 SELECT count(*) FROM kd_point_tbl WHERE p ~= '(4585, 365)';
1109  count 
1110 -------
1111      1
1112 (1 row)
1114 EXPLAIN (COSTS OFF)
1115 SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdef';
1116                         QUERY PLAN                         
1117 -----------------------------------------------------------
1118  Aggregate
1119    ->  Bitmap Heap Scan on radix_text_tbl
1120          Recheck Cond: (t = 'P0123456789abcdef'::text)
1121          ->  Bitmap Index Scan on sp_radix_ind
1122                Index Cond: (t = 'P0123456789abcdef'::text)
1123 (5 rows)
1125 SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdef';
1126  count 
1127 -------
1128   1000
1129 (1 row)
1131 EXPLAIN (COSTS OFF)
1132 SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcde';
1133                         QUERY PLAN                        
1134 ----------------------------------------------------------
1135  Aggregate
1136    ->  Bitmap Heap Scan on radix_text_tbl
1137          Recheck Cond: (t = 'P0123456789abcde'::text)
1138          ->  Bitmap Index Scan on sp_radix_ind
1139                Index Cond: (t = 'P0123456789abcde'::text)
1140 (5 rows)
1142 SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcde';
1143  count 
1144 -------
1145      1
1146 (1 row)
1148 EXPLAIN (COSTS OFF)
1149 SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdefF';
1150                          QUERY PLAN                         
1151 ------------------------------------------------------------
1152  Aggregate
1153    ->  Bitmap Heap Scan on radix_text_tbl
1154          Recheck Cond: (t = 'P0123456789abcdefF'::text)
1155          ->  Bitmap Index Scan on sp_radix_ind
1156                Index Cond: (t = 'P0123456789abcdefF'::text)
1157 (5 rows)
1159 SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdefF';
1160  count 
1161 -------
1162      1
1163 (1 row)
1165 EXPLAIN (COSTS OFF)
1166 SELECT count(*) FROM radix_text_tbl WHERE t <    'Aztec                         Ct  ';
1167                                  QUERY PLAN                                 
1168 ----------------------------------------------------------------------------
1169  Aggregate
1170    ->  Bitmap Heap Scan on radix_text_tbl
1171          Recheck Cond: (t < 'Aztec                         Ct  '::text)
1172          ->  Bitmap Index Scan on sp_radix_ind
1173                Index Cond: (t < 'Aztec                         Ct  '::text)
1174 (5 rows)
1176 SELECT count(*) FROM radix_text_tbl WHERE t <    'Aztec                         Ct  ';
1177  count 
1178 -------
1179    272
1180 (1 row)
1182 EXPLAIN (COSTS OFF)
1183 SELECT count(*) FROM radix_text_tbl WHERE t ~<~  'Aztec                         Ct  ';
1184                                   QUERY PLAN                                  
1185 ------------------------------------------------------------------------------
1186  Aggregate
1187    ->  Bitmap Heap Scan on radix_text_tbl
1188          Recheck Cond: (t ~<~ 'Aztec                         Ct  '::text)
1189          ->  Bitmap Index Scan on sp_radix_ind
1190                Index Cond: (t ~<~ 'Aztec                         Ct  '::text)
1191 (5 rows)
1193 SELECT count(*) FROM radix_text_tbl WHERE t ~<~  'Aztec                         Ct  ';
1194  count 
1195 -------
1196    272
1197 (1 row)
1199 EXPLAIN (COSTS OFF)
1200 SELECT count(*) FROM radix_text_tbl WHERE t <=   'Aztec                         Ct  ';
1201                                  QUERY PLAN                                  
1202 -----------------------------------------------------------------------------
1203  Aggregate
1204    ->  Bitmap Heap Scan on radix_text_tbl
1205          Recheck Cond: (t <= 'Aztec                         Ct  '::text)
1206          ->  Bitmap Index Scan on sp_radix_ind
1207                Index Cond: (t <= 'Aztec                         Ct  '::text)
1208 (5 rows)
1210 SELECT count(*) FROM radix_text_tbl WHERE t <=   'Aztec                         Ct  ';
1211  count 
1212 -------
1213    273
1214 (1 row)
1216 EXPLAIN (COSTS OFF)
1217 SELECT count(*) FROM radix_text_tbl WHERE t ~<=~ 'Aztec                         Ct  ';
1218                                   QUERY PLAN                                   
1219 -------------------------------------------------------------------------------
1220  Aggregate
1221    ->  Bitmap Heap Scan on radix_text_tbl
1222          Recheck Cond: (t ~<=~ 'Aztec                         Ct  '::text)
1223          ->  Bitmap Index Scan on sp_radix_ind
1224                Index Cond: (t ~<=~ 'Aztec                         Ct  '::text)
1225 (5 rows)
1227 SELECT count(*) FROM radix_text_tbl WHERE t ~<=~ 'Aztec                         Ct  ';
1228  count 
1229 -------
1230    273
1231 (1 row)
1233 EXPLAIN (COSTS OFF)
1234 SELECT count(*) FROM radix_text_tbl WHERE t =    'Aztec                         Ct  ';
1235                                  QUERY PLAN                                 
1236 ----------------------------------------------------------------------------
1237  Aggregate
1238    ->  Bitmap Heap Scan on radix_text_tbl
1239          Recheck Cond: (t = 'Aztec                         Ct  '::text)
1240          ->  Bitmap Index Scan on sp_radix_ind
1241                Index Cond: (t = 'Aztec                         Ct  '::text)
1242 (5 rows)
1244 SELECT count(*) FROM radix_text_tbl WHERE t =    'Aztec                         Ct  ';
1245  count 
1246 -------
1247      1
1248 (1 row)
1250 EXPLAIN (COSTS OFF)
1251 SELECT count(*) FROM radix_text_tbl WHERE t =    'Worth                         St  ';
1252                                  QUERY PLAN                                 
1253 ----------------------------------------------------------------------------
1254  Aggregate
1255    ->  Bitmap Heap Scan on radix_text_tbl
1256          Recheck Cond: (t = 'Worth                         St  '::text)
1257          ->  Bitmap Index Scan on sp_radix_ind
1258                Index Cond: (t = 'Worth                         St  '::text)
1259 (5 rows)
1261 SELECT count(*) FROM radix_text_tbl WHERE t =    'Worth                         St  ';
1262  count 
1263 -------
1264      2
1265 (1 row)
1267 EXPLAIN (COSTS OFF)
1268 SELECT count(*) FROM radix_text_tbl WHERE t >=   'Worth                         St  ';
1269                                  QUERY PLAN                                  
1270 -----------------------------------------------------------------------------
1271  Aggregate
1272    ->  Bitmap Heap Scan on radix_text_tbl
1273          Recheck Cond: (t >= 'Worth                         St  '::text)
1274          ->  Bitmap Index Scan on sp_radix_ind
1275                Index Cond: (t >= 'Worth                         St  '::text)
1276 (5 rows)
1278 SELECT count(*) FROM radix_text_tbl WHERE t >=   'Worth                         St  ';
1279  count 
1280 -------
1281     50
1282 (1 row)
1284 EXPLAIN (COSTS OFF)
1285 SELECT count(*) FROM radix_text_tbl WHERE t ~>=~ 'Worth                         St  ';
1286                                   QUERY PLAN                                   
1287 -------------------------------------------------------------------------------
1288  Aggregate
1289    ->  Bitmap Heap Scan on radix_text_tbl
1290          Recheck Cond: (t ~>=~ 'Worth                         St  '::text)
1291          ->  Bitmap Index Scan on sp_radix_ind
1292                Index Cond: (t ~>=~ 'Worth                         St  '::text)
1293 (5 rows)
1295 SELECT count(*) FROM radix_text_tbl WHERE t ~>=~ 'Worth                         St  ';
1296  count 
1297 -------
1298     50
1299 (1 row)
1301 EXPLAIN (COSTS OFF)
1302 SELECT count(*) FROM radix_text_tbl WHERE t >    'Worth                         St  ';
1303                                  QUERY PLAN                                 
1304 ----------------------------------------------------------------------------
1305  Aggregate
1306    ->  Bitmap Heap Scan on radix_text_tbl
1307          Recheck Cond: (t > 'Worth                         St  '::text)
1308          ->  Bitmap Index Scan on sp_radix_ind
1309                Index Cond: (t > 'Worth                         St  '::text)
1310 (5 rows)
1312 SELECT count(*) FROM radix_text_tbl WHERE t >    'Worth                         St  ';
1313  count 
1314 -------
1315     48
1316 (1 row)
1318 EXPLAIN (COSTS OFF)
1319 SELECT count(*) FROM radix_text_tbl WHERE t ~>~  'Worth                         St  ';
1320                                   QUERY PLAN                                  
1321 ------------------------------------------------------------------------------
1322  Aggregate
1323    ->  Bitmap Heap Scan on radix_text_tbl
1324          Recheck Cond: (t ~>~ 'Worth                         St  '::text)
1325          ->  Bitmap Index Scan on sp_radix_ind
1326                Index Cond: (t ~>~ 'Worth                         St  '::text)
1327 (5 rows)
1329 SELECT count(*) FROM radix_text_tbl WHERE t ~>~  'Worth                         St  ';
1330  count 
1331 -------
1332     48
1333 (1 row)
1335 EXPLAIN (COSTS OFF)
1336 SELECT count(*) FROM radix_text_tbl WHERE t ^@   'Worth';
1337                    QUERY PLAN                   
1338 ------------------------------------------------
1339  Aggregate
1340    ->  Bitmap Heap Scan on radix_text_tbl
1341          Recheck Cond: (t ^@ 'Worth'::text)
1342          ->  Bitmap Index Scan on sp_radix_ind
1343                Index Cond: (t ^@ 'Worth'::text)
1344 (5 rows)
1346 SELECT count(*) FROM radix_text_tbl WHERE t ^@   'Worth';
1347  count 
1348 -------
1349      2
1350 (1 row)
1352 EXPLAIN (COSTS OFF)
1353 SELECT count(*) FROM radix_text_tbl WHERE starts_with(t, 'Worth');
1354                    QUERY PLAN                   
1355 ------------------------------------------------
1356  Aggregate
1357    ->  Bitmap Heap Scan on radix_text_tbl
1358          Filter: starts_with(t, 'Worth'::text)
1359          ->  Bitmap Index Scan on sp_radix_ind
1360                Index Cond: (t ^@ 'Worth'::text)
1361 (5 rows)
1363 SELECT count(*) FROM radix_text_tbl WHERE starts_with(t, 'Worth');
1364  count 
1365 -------
1366      2
1367 (1 row)
1369 RESET enable_seqscan;
1370 RESET enable_indexscan;
1371 RESET enable_bitmapscan;