diff --git a/doc/src/sgml/indices.sgml b/doc/src/sgml/indices.sgml index e6a14de504..b1c8f22718 100644 --- a/doc/src/sgml/indices.sgml +++ b/doc/src/sgml/indices.sgml @@ -267,7 +267,7 @@ SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; SP-GiST indexes, like GiST indexes, offer an infrastructure that supports various kinds of searches. SP-GiST permits implementation of a wide range of different non-balanced disk-based data structures, such as quadtrees, - k-d trees, and suffix trees (tries). As an example, the standard distribution of + k-d trees, and radix trees (tries). As an example, the standard distribution of PostgreSQL includes SP-GiST operator classes for two-dimensional points, which support indexed queries using these operators: diff --git a/doc/src/sgml/spgist.sgml b/doc/src/sgml/spgist.sgml index cec40b8172..a043ffb06c 100644 --- a/doc/src/sgml/spgist.sgml +++ b/doc/src/sgml/spgist.sgml @@ -15,7 +15,7 @@ SP-GiST is an abbreviation for space-partitioned GiST. SP-GiST supports partitioned search trees, which facilitate development of a wide range of different - non-balanced data structures, such as quad-trees, k-d trees, and suffix + non-balanced data structures, such as quad-trees, k-d trees, and radix trees (tries). The common feature of these structures is that they repeatedly divide the search space into partitions that need not be of equal size. Searches that are well matched to the partitioning rule @@ -81,9 +81,9 @@ A node contains a downlink that leads to either another, lower-level inner tuple, or a short list of leaf tuples that all lie on the same index page. Each node has a label that describes it; for example, - in a suffix tree the node label could be the next character of the string + in a radix tree the node label could be the next character of the string value. Optionally, an inner tuple can have a prefix value - that describes all its members. In a suffix tree this could be the common + that describes all its members. In a radix tree this could be the common prefix of the represented strings. The prefix value is not necessarily really a prefix, but can be any data needed by the operator class; for example, in a quad-tree it can store the central point that the four @@ -636,7 +636,7 @@ typedef struct spgLeafConsistentOut Individual leaf tuples and inner tuples must fit on a single index page (8KB by default). Therefore, when indexing values of variable-length - data types, long values can only be supported by methods such as suffix + data types, long values can only be supported by methods such as radix trees, in which each level of the tree includes a prefix that is short enough to fit on a page, and the final leaf level includes a suffix also short enough to fit on a page. The operator class should set @@ -740,7 +740,7 @@ typedef struct spgLeafConsistentOut The PostgreSQL source distribution includes several examples of index operator classes for - SP-GiST. The core system currently provides suffix + SP-GiST. The core system currently provides radix trees over text columns and two types of trees over points: quad-tree and k-d tree. Look into src/backend/access/spgist/ to see the code. diff --git a/src/backend/access/spgist/README b/src/backend/access/spgist/README index 1b86e27591..c231a9ca80 100644 --- a/src/backend/access/spgist/README +++ b/src/backend/access/spgist/README @@ -2,7 +2,7 @@ src/backend/access/spgist/README SP-GiST is an abbreviation of space-partitioned GiST. It provides a generalized infrastructure for implementing space-partitioned data -structures, such as quadtrees, k-d trees, and suffix trees (tries). When +structures, such as quadtrees, k-d trees, and radix trees (tries). When implemented in main memory, these structures are usually designed as a set of dynamically-allocated nodes linked by pointers. This is not suitable for direct storing on disk, since the chains of pointers can be rather long and @@ -56,18 +56,18 @@ Inner tuple consists of: optional prefix value - all successors must be consistent with it. Example: - suffix tree - prefix value is a common prefix string + radix tree - prefix value is a common prefix string quad tree - centroid k-d tree - one coordinate list of nodes, where node is a (label, pointer) pair. - Example of a label: a single character for suffix tree + Example of a label: a single character for radix tree Leaf tuple consists of: a leaf value Example: - suffix tree - the rest of string (postfix) + radix tree - the rest of string (postfix) quad and k-d tree - the point itself ItemPointer to the heap @@ -122,7 +122,7 @@ space is as good as we can easily make it. (2) Current implementation allows to do picksplit and insert a new leaf tuple in one operation, if the new list of leaf tuples fits on one page. It's always possible for trees with small nodes like quad tree or k-d tree, but -suffix trees may require another picksplit. +radix trees may require another picksplit. (3) Addition of node must keep size of inner tuple small enough to fit on a page. After addition, inner tuple could become too large to be stored on @@ -132,14 +132,14 @@ another page, we can't change the numbers of other tuples on the page, else we'd make downlink pointers to them invalid. To prevent that, SP-GiST leaves a "placeholder" tuple, which can be reused later whenever another tuple is added to the page. See also Concurrency and Vacuum sections below. Right now -only suffix trees could add a node to the tuple; quad trees and k-d trees +only radix trees could add a node to the tuple; quad trees and k-d trees make all possible nodes at once in PickSplitFn() call. (4) Prefix value could only partially match a new value, so the SplitTuple action allows breaking the current tree branch into upper and lower sections. Another way to say it is that we can split the current inner tuple into "prefix" and "postfix" parts, where the prefix part is able to match the -incoming new value. Consider example of insertion into a suffix tree. We use +incoming new value. Consider example of insertion into a radix tree. We use the following notation, where tuple's id is just for discussion (no such id is actually stored): diff --git a/src/backend/access/spgist/spgtextproc.c b/src/backend/access/spgist/spgtextproc.c index 9ffc870564..8d50dcc618 100644 --- a/src/backend/access/spgist/spgtextproc.c +++ b/src/backend/access/spgist/spgtextproc.c @@ -1,7 +1,7 @@ /*------------------------------------------------------------------------- * * spgtextproc.c - * implementation of compressed-suffix tree over text + * implementation of radix tree (compressed trie) over text * * * Portions Copyright (c) 1996-2013, PostgreSQL Global Development Group @@ -23,7 +23,7 @@ /* - * In the worst case, a inner tuple in a text suffix tree could have as many + * In the worst case, a inner tuple in a text radix tree could have as many * as 256 nodes (one for each possible byte value). Each node can take 16 * bytes on MAXALIGN=8 machines. The inner tuple must fit on an index page * of size BLCKSZ. Rather than assuming we know the exact amount of overhead diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h index 685b9c76cf..feecbf9695 100644 --- a/src/include/catalog/pg_proc.h +++ b/src/include/catalog/pg_proc.h @@ -4700,15 +4700,15 @@ DATA(insert OID = 4026 ( spg_kd_inner_consistent PGNSP PGUID 12 1 0 0 0 f f f f DESCR("SP-GiST support for k-d tree over point"); DATA(insert OID = 4027 ( spg_text_config PGNSP PGUID 12 1 0 0 0 f f f f t f i 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ spg_text_config _null_ _null_ _null_ )); -DESCR("SP-GiST support for suffix tree over text"); +DESCR("SP-GiST support for radix tree over text"); DATA(insert OID = 4028 ( spg_text_choose PGNSP PGUID 12 1 0 0 0 f f f f t f i 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ spg_text_choose _null_ _null_ _null_ )); -DESCR("SP-GiST support for suffix tree over text"); +DESCR("SP-GiST support for radix tree over text"); DATA(insert OID = 4029 ( spg_text_picksplit PGNSP PGUID 12 1 0 0 0 f f f f t f i 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ spg_text_picksplit _null_ _null_ _null_ )); -DESCR("SP-GiST support for suffix tree over text"); +DESCR("SP-GiST support for radix tree over text"); DATA(insert OID = 4030 ( spg_text_inner_consistent PGNSP PGUID 12 1 0 0 0 f f f f t f i 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ spg_text_inner_consistent _null_ _null_ _null_ )); -DESCR("SP-GiST support for suffix tree over text"); +DESCR("SP-GiST support for radix tree over text"); DATA(insert OID = 4031 ( spg_text_leaf_consistent PGNSP PGUID 12 1 0 0 0 f f f f t f i 2 0 16 "2281 2281" _null_ _null_ _null_ _null_ spg_text_leaf_consistent _null_ _null_ _null_ )); -DESCR("SP-GiST support for suffix tree over text"); +DESCR("SP-GiST support for radix tree over text"); DATA(insert OID = 3469 ( spg_range_quad_config PGNSP PGUID 12 1 0 0 0 f f f f t f i 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ spg_range_quad_config _null_ _null_ _null_ )); DESCR("SP-GiST support for quad tree over range"); diff --git a/src/test/regress/expected/create_index.out b/src/test/regress/expected/create_index.out index 2ae991eebe..ad3a678cb2 100644 --- a/src/test/regress/expected/create_index.out +++ b/src/test/regress/expected/create_index.out @@ -72,13 +72,13 @@ INSERT INTO quad_point_tbl VALUES (NULL), (NULL), (NULL); CREATE INDEX sp_quad_ind ON quad_point_tbl USING spgist (p); CREATE TABLE kd_point_tbl AS SELECT * FROM quad_point_tbl; CREATE INDEX sp_kd_ind ON kd_point_tbl USING spgist (p kd_point_ops); -CREATE TABLE suffix_text_tbl AS +CREATE TABLE radix_text_tbl AS SELECT name AS t FROM road WHERE name !~ '^[0-9]'; -INSERT INTO suffix_text_tbl +INSERT INTO radix_text_tbl SELECT 'P0123456789abcdef' FROM generate_series(1,1000); -INSERT INTO suffix_text_tbl VALUES ('P0123456789abcde'); -INSERT INTO suffix_text_tbl VALUES ('P0123456789abcdefF'); -CREATE INDEX sp_suff_ind ON suffix_text_tbl USING spgist (t); +INSERT INTO radix_text_tbl VALUES ('P0123456789abcde'); +INSERT INTO radix_text_tbl VALUES ('P0123456789abcdefF'); +CREATE INDEX sp_radix_ind ON radix_text_tbl USING spgist (t); -- -- Test GiST and SP-GiST indexes -- @@ -288,79 +288,79 @@ SELECT count(*) FROM quad_point_tbl WHERE p ~= '(4585, 365)'; 1 (1 row) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdef'; +SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdef'; count ------- 1000 (1 row) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcde'; +SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcde'; count ------- 1 (1 row) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdefF'; +SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdefF'; count ------- 1 (1 row) -SELECT count(*) FROM suffix_text_tbl WHERE t < 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t < 'Aztec Ct '; count ------- 272 (1 row) -SELECT count(*) FROM suffix_text_tbl WHERE t ~<~ 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t ~<~ 'Aztec Ct '; count ------- 272 (1 row) -SELECT count(*) FROM suffix_text_tbl WHERE t <= 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t <= 'Aztec Ct '; count ------- 273 (1 row) -SELECT count(*) FROM suffix_text_tbl WHERE t ~<=~ 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t ~<=~ 'Aztec Ct '; count ------- 273 (1 row) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t = 'Aztec Ct '; count ------- 1 (1 row) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t = 'Worth St '; count ------- 2 (1 row) -SELECT count(*) FROM suffix_text_tbl WHERE t >= 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t >= 'Worth St '; count ------- 50 (1 row) -SELECT count(*) FROM suffix_text_tbl WHERE t ~>=~ 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t ~>=~ 'Worth St '; count ------- 50 (1 row) -SELECT count(*) FROM suffix_text_tbl WHERE t > 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t > 'Worth St '; count ------- 48 (1 row) -SELECT count(*) FROM suffix_text_tbl WHERE t ~>~ 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t ~>~ 'Worth St '; count ------- 48 @@ -952,195 +952,195 @@ SELECT count(*) FROM kd_point_tbl WHERE p ~= '(4585, 365)'; (1 row) EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdef'; +SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdef'; QUERY PLAN ------------------------------------------------------------ Aggregate - -> Index Only Scan using sp_suff_ind on suffix_text_tbl + -> Index Only Scan using sp_radix_ind on radix_text_tbl Index Cond: (t = 'P0123456789abcdef'::text) (3 rows) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdef'; +SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdef'; count ------- 1000 (1 row) EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcde'; +SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcde'; QUERY PLAN ------------------------------------------------------------ Aggregate - -> Index Only Scan using sp_suff_ind on suffix_text_tbl + -> Index Only Scan using sp_radix_ind on radix_text_tbl Index Cond: (t = 'P0123456789abcde'::text) (3 rows) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcde'; +SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcde'; count ------- 1 (1 row) EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdefF'; +SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdefF'; QUERY PLAN ------------------------------------------------------------ Aggregate - -> Index Only Scan using sp_suff_ind on suffix_text_tbl + -> Index Only Scan using sp_radix_ind on radix_text_tbl Index Cond: (t = 'P0123456789abcdefF'::text) (3 rows) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdefF'; +SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdefF'; count ------- 1 (1 row) EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t < 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t < 'Aztec Ct '; QUERY PLAN ---------------------------------------------------------------------- Aggregate - -> Index Only Scan using sp_suff_ind on suffix_text_tbl + -> Index Only Scan using sp_radix_ind on radix_text_tbl Index Cond: (t < 'Aztec Ct '::text) (3 rows) -SELECT count(*) FROM suffix_text_tbl WHERE t < 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t < 'Aztec Ct '; count ------- 272 (1 row) EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t ~<~ 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t ~<~ 'Aztec Ct '; QUERY PLAN ------------------------------------------------------------------------ Aggregate - -> Index Only Scan using sp_suff_ind on suffix_text_tbl + -> Index Only Scan using sp_radix_ind on radix_text_tbl Index Cond: (t ~<~ 'Aztec Ct '::text) (3 rows) -SELECT count(*) FROM suffix_text_tbl WHERE t ~<~ 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t ~<~ 'Aztec Ct '; count ------- 272 (1 row) EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t <= 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t <= 'Aztec Ct '; QUERY PLAN ----------------------------------------------------------------------- Aggregate - -> Index Only Scan using sp_suff_ind on suffix_text_tbl + -> Index Only Scan using sp_radix_ind on radix_text_tbl Index Cond: (t <= 'Aztec Ct '::text) (3 rows) -SELECT count(*) FROM suffix_text_tbl WHERE t <= 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t <= 'Aztec Ct '; count ------- 273 (1 row) EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t ~<=~ 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t ~<=~ 'Aztec Ct '; QUERY PLAN ------------------------------------------------------------------------- Aggregate - -> Index Only Scan using sp_suff_ind on suffix_text_tbl + -> Index Only Scan using sp_radix_ind on radix_text_tbl Index Cond: (t ~<=~ 'Aztec Ct '::text) (3 rows) -SELECT count(*) FROM suffix_text_tbl WHERE t ~<=~ 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t ~<=~ 'Aztec Ct '; count ------- 273 (1 row) EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t = 'Aztec Ct '; QUERY PLAN ---------------------------------------------------------------------- Aggregate - -> Index Only Scan using sp_suff_ind on suffix_text_tbl + -> Index Only Scan using sp_radix_ind on radix_text_tbl Index Cond: (t = 'Aztec Ct '::text) (3 rows) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t = 'Aztec Ct '; count ------- 1 (1 row) EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t = 'Worth St '; QUERY PLAN ---------------------------------------------------------------------- Aggregate - -> Index Only Scan using sp_suff_ind on suffix_text_tbl + -> Index Only Scan using sp_radix_ind on radix_text_tbl Index Cond: (t = 'Worth St '::text) (3 rows) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t = 'Worth St '; count ------- 2 (1 row) EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t >= 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t >= 'Worth St '; QUERY PLAN ----------------------------------------------------------------------- Aggregate - -> Index Only Scan using sp_suff_ind on suffix_text_tbl + -> Index Only Scan using sp_radix_ind on radix_text_tbl Index Cond: (t >= 'Worth St '::text) (3 rows) -SELECT count(*) FROM suffix_text_tbl WHERE t >= 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t >= 'Worth St '; count ------- 50 (1 row) EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t ~>=~ 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t ~>=~ 'Worth St '; QUERY PLAN ------------------------------------------------------------------------- Aggregate - -> Index Only Scan using sp_suff_ind on suffix_text_tbl + -> Index Only Scan using sp_radix_ind on radix_text_tbl Index Cond: (t ~>=~ 'Worth St '::text) (3 rows) -SELECT count(*) FROM suffix_text_tbl WHERE t ~>=~ 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t ~>=~ 'Worth St '; count ------- 50 (1 row) EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t > 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t > 'Worth St '; QUERY PLAN ---------------------------------------------------------------------- Aggregate - -> Index Only Scan using sp_suff_ind on suffix_text_tbl + -> Index Only Scan using sp_radix_ind on radix_text_tbl Index Cond: (t > 'Worth St '::text) (3 rows) -SELECT count(*) FROM suffix_text_tbl WHERE t > 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t > 'Worth St '; count ------- 48 (1 row) EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t ~>~ 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t ~>~ 'Worth St '; QUERY PLAN ------------------------------------------------------------------------ Aggregate - -> Index Only Scan using sp_suff_ind on suffix_text_tbl + -> Index Only Scan using sp_radix_ind on radix_text_tbl Index Cond: (t ~>~ 'Worth St '::text) (3 rows) -SELECT count(*) FROM suffix_text_tbl WHERE t ~>~ 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t ~>~ 'Worth St '; count ------- 48 @@ -1459,221 +1459,221 @@ SELECT count(*) FROM kd_point_tbl WHERE p ~= '(4585, 365)'; (1 row) EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdef'; +SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdef'; QUERY PLAN ----------------------------------------------------------- Aggregate - -> Bitmap Heap Scan on suffix_text_tbl + -> Bitmap Heap Scan on radix_text_tbl Recheck Cond: (t = 'P0123456789abcdef'::text) - -> Bitmap Index Scan on sp_suff_ind + -> Bitmap Index Scan on sp_radix_ind Index Cond: (t = 'P0123456789abcdef'::text) (5 rows) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdef'; +SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdef'; count ------- 1000 (1 row) EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcde'; +SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcde'; QUERY PLAN ---------------------------------------------------------- Aggregate - -> Bitmap Heap Scan on suffix_text_tbl + -> Bitmap Heap Scan on radix_text_tbl Recheck Cond: (t = 'P0123456789abcde'::text) - -> Bitmap Index Scan on sp_suff_ind + -> Bitmap Index Scan on sp_radix_ind Index Cond: (t = 'P0123456789abcde'::text) (5 rows) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcde'; +SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcde'; count ------- 1 (1 row) EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdefF'; +SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdefF'; QUERY PLAN ------------------------------------------------------------ Aggregate - -> Bitmap Heap Scan on suffix_text_tbl + -> Bitmap Heap Scan on radix_text_tbl Recheck Cond: (t = 'P0123456789abcdefF'::text) - -> Bitmap Index Scan on sp_suff_ind + -> Bitmap Index Scan on sp_radix_ind Index Cond: (t = 'P0123456789abcdefF'::text) (5 rows) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdefF'; +SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdefF'; count ------- 1 (1 row) EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t < 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t < 'Aztec Ct '; QUERY PLAN ---------------------------------------------------------------------------- Aggregate - -> Bitmap Heap Scan on suffix_text_tbl + -> Bitmap Heap Scan on radix_text_tbl Recheck Cond: (t < 'Aztec Ct '::text) - -> Bitmap Index Scan on sp_suff_ind + -> Bitmap Index Scan on sp_radix_ind Index Cond: (t < 'Aztec Ct '::text) (5 rows) -SELECT count(*) FROM suffix_text_tbl WHERE t < 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t < 'Aztec Ct '; count ------- 272 (1 row) EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t ~<~ 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t ~<~ 'Aztec Ct '; QUERY PLAN ------------------------------------------------------------------------------ Aggregate - -> Bitmap Heap Scan on suffix_text_tbl + -> Bitmap Heap Scan on radix_text_tbl Recheck Cond: (t ~<~ 'Aztec Ct '::text) - -> Bitmap Index Scan on sp_suff_ind + -> Bitmap Index Scan on sp_radix_ind Index Cond: (t ~<~ 'Aztec Ct '::text) (5 rows) -SELECT count(*) FROM suffix_text_tbl WHERE t ~<~ 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t ~<~ 'Aztec Ct '; count ------- 272 (1 row) EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t <= 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t <= 'Aztec Ct '; QUERY PLAN ----------------------------------------------------------------------------- Aggregate - -> Bitmap Heap Scan on suffix_text_tbl + -> Bitmap Heap Scan on radix_text_tbl Recheck Cond: (t <= 'Aztec Ct '::text) - -> Bitmap Index Scan on sp_suff_ind + -> Bitmap Index Scan on sp_radix_ind Index Cond: (t <= 'Aztec Ct '::text) (5 rows) -SELECT count(*) FROM suffix_text_tbl WHERE t <= 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t <= 'Aztec Ct '; count ------- 273 (1 row) EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t ~<=~ 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t ~<=~ 'Aztec Ct '; QUERY PLAN ------------------------------------------------------------------------------- Aggregate - -> Bitmap Heap Scan on suffix_text_tbl + -> Bitmap Heap Scan on radix_text_tbl Recheck Cond: (t ~<=~ 'Aztec Ct '::text) - -> Bitmap Index Scan on sp_suff_ind + -> Bitmap Index Scan on sp_radix_ind Index Cond: (t ~<=~ 'Aztec Ct '::text) (5 rows) -SELECT count(*) FROM suffix_text_tbl WHERE t ~<=~ 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t ~<=~ 'Aztec Ct '; count ------- 273 (1 row) EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t = 'Aztec Ct '; QUERY PLAN ---------------------------------------------------------------------------- Aggregate - -> Bitmap Heap Scan on suffix_text_tbl + -> Bitmap Heap Scan on radix_text_tbl Recheck Cond: (t = 'Aztec Ct '::text) - -> Bitmap Index Scan on sp_suff_ind + -> Bitmap Index Scan on sp_radix_ind Index Cond: (t = 'Aztec Ct '::text) (5 rows) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t = 'Aztec Ct '; count ------- 1 (1 row) EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t = 'Worth St '; QUERY PLAN ---------------------------------------------------------------------------- Aggregate - -> Bitmap Heap Scan on suffix_text_tbl + -> Bitmap Heap Scan on radix_text_tbl Recheck Cond: (t = 'Worth St '::text) - -> Bitmap Index Scan on sp_suff_ind + -> Bitmap Index Scan on sp_radix_ind Index Cond: (t = 'Worth St '::text) (5 rows) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t = 'Worth St '; count ------- 2 (1 row) EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t >= 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t >= 'Worth St '; QUERY PLAN ----------------------------------------------------------------------------- Aggregate - -> Bitmap Heap Scan on suffix_text_tbl + -> Bitmap Heap Scan on radix_text_tbl Recheck Cond: (t >= 'Worth St '::text) - -> Bitmap Index Scan on sp_suff_ind + -> Bitmap Index Scan on sp_radix_ind Index Cond: (t >= 'Worth St '::text) (5 rows) -SELECT count(*) FROM suffix_text_tbl WHERE t >= 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t >= 'Worth St '; count ------- 50 (1 row) EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t ~>=~ 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t ~>=~ 'Worth St '; QUERY PLAN ------------------------------------------------------------------------------- Aggregate - -> Bitmap Heap Scan on suffix_text_tbl + -> Bitmap Heap Scan on radix_text_tbl Recheck Cond: (t ~>=~ 'Worth St '::text) - -> Bitmap Index Scan on sp_suff_ind + -> Bitmap Index Scan on sp_radix_ind Index Cond: (t ~>=~ 'Worth St '::text) (5 rows) -SELECT count(*) FROM suffix_text_tbl WHERE t ~>=~ 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t ~>=~ 'Worth St '; count ------- 50 (1 row) EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t > 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t > 'Worth St '; QUERY PLAN ---------------------------------------------------------------------------- Aggregate - -> Bitmap Heap Scan on suffix_text_tbl + -> Bitmap Heap Scan on radix_text_tbl Recheck Cond: (t > 'Worth St '::text) - -> Bitmap Index Scan on sp_suff_ind + -> Bitmap Index Scan on sp_radix_ind Index Cond: (t > 'Worth St '::text) (5 rows) -SELECT count(*) FROM suffix_text_tbl WHERE t > 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t > 'Worth St '; count ------- 48 (1 row) EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t ~>~ 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t ~>~ 'Worth St '; QUERY PLAN ------------------------------------------------------------------------------ Aggregate - -> Bitmap Heap Scan on suffix_text_tbl + -> Bitmap Heap Scan on radix_text_tbl Recheck Cond: (t ~>~ 'Worth St '::text) - -> Bitmap Index Scan on sp_suff_ind + -> Bitmap Index Scan on sp_radix_ind Index Cond: (t ~>~ 'Worth St '::text) (5 rows) -SELECT count(*) FROM suffix_text_tbl WHERE t ~>~ 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t ~>~ 'Worth St '; count ------- 48 diff --git a/src/test/regress/expected/sanity_check.out b/src/test/regress/expected/sanity_check.out index 3f04442a00..432d39a491 100644 --- a/src/test/regress/expected/sanity_check.out +++ b/src/test/regress/expected/sanity_check.out @@ -137,6 +137,7 @@ SELECT relname, relhasindex point_tbl | t polygon_tbl | t quad_point_tbl | t + radix_text_tbl | t ramp | f real_city | f reltime_tbl | f @@ -152,7 +153,6 @@ SELECT relname, relhasindex sql_sizing_profiles | f stud_emp | f student | f - suffix_text_tbl | t tenk1 | t tenk2 | t test_range_excl | t diff --git a/src/test/regress/output/misc.source b/src/test/regress/output/misc.source index 2dd5b2389e..29cbb22fb8 100644 --- a/src/test/regress/output/misc.source +++ b/src/test/regress/output/misc.source @@ -660,6 +660,7 @@ SELECT user_relns() AS user_relns point_tbl polygon_tbl quad_point_tbl + radix_text_tbl ramp random_tbl real_city @@ -671,7 +672,6 @@ SELECT user_relns() AS user_relns stud_emp student subselect_tbl - suffix_text_tbl t tenk1 tenk2 diff --git a/src/test/regress/sql/create_index.sql b/src/test/regress/sql/create_index.sql index 914e7a57a4..04b69c67db 100644 --- a/src/test/regress/sql/create_index.sql +++ b/src/test/regress/sql/create_index.sql @@ -110,15 +110,15 @@ CREATE TABLE kd_point_tbl AS SELECT * FROM quad_point_tbl; CREATE INDEX sp_kd_ind ON kd_point_tbl USING spgist (p kd_point_ops); -CREATE TABLE suffix_text_tbl AS +CREATE TABLE radix_text_tbl AS SELECT name AS t FROM road WHERE name !~ '^[0-9]'; -INSERT INTO suffix_text_tbl +INSERT INTO radix_text_tbl SELECT 'P0123456789abcdef' FROM generate_series(1,1000); -INSERT INTO suffix_text_tbl VALUES ('P0123456789abcde'); -INSERT INTO suffix_text_tbl VALUES ('P0123456789abcdefF'); +INSERT INTO radix_text_tbl VALUES ('P0123456789abcde'); +INSERT INTO radix_text_tbl VALUES ('P0123456789abcdefF'); -CREATE INDEX sp_suff_ind ON suffix_text_tbl USING spgist (t); +CREATE INDEX sp_radix_ind ON radix_text_tbl USING spgist (t); -- -- Test GiST and SP-GiST indexes @@ -194,31 +194,31 @@ SELECT count(*) FROM quad_point_tbl WHERE p >^ '(5000, 4000)'; SELECT count(*) FROM quad_point_tbl WHERE p ~= '(4585, 365)'; -SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdef'; +SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdef'; -SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcde'; +SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcde'; -SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdefF'; +SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdefF'; -SELECT count(*) FROM suffix_text_tbl WHERE t < 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t < 'Aztec Ct '; -SELECT count(*) FROM suffix_text_tbl WHERE t ~<~ 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t ~<~ 'Aztec Ct '; -SELECT count(*) FROM suffix_text_tbl WHERE t <= 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t <= 'Aztec Ct '; -SELECT count(*) FROM suffix_text_tbl WHERE t ~<=~ 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t ~<=~ 'Aztec Ct '; -SELECT count(*) FROM suffix_text_tbl WHERE t = 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t = 'Aztec Ct '; -SELECT count(*) FROM suffix_text_tbl WHERE t = 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t = 'Worth St '; -SELECT count(*) FROM suffix_text_tbl WHERE t >= 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t >= 'Worth St '; -SELECT count(*) FROM suffix_text_tbl WHERE t ~>=~ 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t ~>=~ 'Worth St '; -SELECT count(*) FROM suffix_text_tbl WHERE t > 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t > 'Worth St '; -SELECT count(*) FROM suffix_text_tbl WHERE t ~>~ 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t ~>~ 'Worth St '; -- Now check the results from plain indexscan SET enable_seqscan = OFF; @@ -382,56 +382,56 @@ SELECT count(*) FROM kd_point_tbl WHERE p ~= '(4585, 365)'; SELECT count(*) FROM kd_point_tbl WHERE p ~= '(4585, 365)'; EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdef'; -SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdef'; +SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdef'; +SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdef'; EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcde'; -SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcde'; +SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcde'; +SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcde'; EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdefF'; -SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdefF'; +SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdefF'; +SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdefF'; EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t < 'Aztec Ct '; -SELECT count(*) FROM suffix_text_tbl WHERE t < 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t < 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t < 'Aztec Ct '; EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t ~<~ 'Aztec Ct '; -SELECT count(*) FROM suffix_text_tbl WHERE t ~<~ 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t ~<~ 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t ~<~ 'Aztec Ct '; EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t <= 'Aztec Ct '; -SELECT count(*) FROM suffix_text_tbl WHERE t <= 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t <= 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t <= 'Aztec Ct '; EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t ~<=~ 'Aztec Ct '; -SELECT count(*) FROM suffix_text_tbl WHERE t ~<=~ 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t ~<=~ 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t ~<=~ 'Aztec Ct '; EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'Aztec Ct '; -SELECT count(*) FROM suffix_text_tbl WHERE t = 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t = 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t = 'Aztec Ct '; EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'Worth St '; -SELECT count(*) FROM suffix_text_tbl WHERE t = 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t = 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t = 'Worth St '; EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t >= 'Worth St '; -SELECT count(*) FROM suffix_text_tbl WHERE t >= 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t >= 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t >= 'Worth St '; EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t ~>=~ 'Worth St '; -SELECT count(*) FROM suffix_text_tbl WHERE t ~>=~ 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t ~>=~ 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t ~>=~ 'Worth St '; EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t > 'Worth St '; -SELECT count(*) FROM suffix_text_tbl WHERE t > 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t > 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t > 'Worth St '; EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t ~>~ 'Worth St '; -SELECT count(*) FROM suffix_text_tbl WHERE t ~>~ 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t ~>~ 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t ~>~ 'Worth St '; -- Now check the results from bitmap indexscan SET enable_seqscan = OFF; @@ -511,56 +511,56 @@ SELECT count(*) FROM kd_point_tbl WHERE p ~= '(4585, 365)'; SELECT count(*) FROM kd_point_tbl WHERE p ~= '(4585, 365)'; EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdef'; -SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdef'; +SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdef'; +SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdef'; EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcde'; -SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcde'; +SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcde'; +SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcde'; EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdefF'; -SELECT count(*) FROM suffix_text_tbl WHERE t = 'P0123456789abcdefF'; +SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdefF'; +SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdefF'; EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t < 'Aztec Ct '; -SELECT count(*) FROM suffix_text_tbl WHERE t < 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t < 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t < 'Aztec Ct '; EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t ~<~ 'Aztec Ct '; -SELECT count(*) FROM suffix_text_tbl WHERE t ~<~ 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t ~<~ 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t ~<~ 'Aztec Ct '; EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t <= 'Aztec Ct '; -SELECT count(*) FROM suffix_text_tbl WHERE t <= 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t <= 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t <= 'Aztec Ct '; EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t ~<=~ 'Aztec Ct '; -SELECT count(*) FROM suffix_text_tbl WHERE t ~<=~ 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t ~<=~ 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t ~<=~ 'Aztec Ct '; EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'Aztec Ct '; -SELECT count(*) FROM suffix_text_tbl WHERE t = 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t = 'Aztec Ct '; +SELECT count(*) FROM radix_text_tbl WHERE t = 'Aztec Ct '; EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t = 'Worth St '; -SELECT count(*) FROM suffix_text_tbl WHERE t = 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t = 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t = 'Worth St '; EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t >= 'Worth St '; -SELECT count(*) FROM suffix_text_tbl WHERE t >= 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t >= 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t >= 'Worth St '; EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t ~>=~ 'Worth St '; -SELECT count(*) FROM suffix_text_tbl WHERE t ~>=~ 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t ~>=~ 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t ~>=~ 'Worth St '; EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t > 'Worth St '; -SELECT count(*) FROM suffix_text_tbl WHERE t > 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t > 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t > 'Worth St '; EXPLAIN (COSTS OFF) -SELECT count(*) FROM suffix_text_tbl WHERE t ~>~ 'Worth St '; -SELECT count(*) FROM suffix_text_tbl WHERE t ~>~ 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t ~>~ 'Worth St '; +SELECT count(*) FROM radix_text_tbl WHERE t ~>~ 'Worth St '; RESET enable_seqscan; RESET enable_indexscan;