mirror of
https://github.com/postgres/postgres.git
synced 2025-07-27 12:41:57 +03:00
Add prefix operator for TEXT type.
The prefix operator along with SP-GiST indexes can be used as an alternative for LIKE 'word%' commands and it doesn't have a limitation of string/prefix length as B-Tree has. Bump catalog version Author: Ildus Kurbangaliev with some editorization by me Review by: Arthur Zakirov, Alexander Korotkov, and me Discussion: https://www.postgresql.org/message-id/flat/20180202180327.222b04b3@wp.localdomain
This commit is contained in:
@ -372,6 +372,12 @@ SELECT count(*) FROM radix_text_tbl WHERE t ~>~ 'Worth
|
||||
48
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM radix_text_tbl WHERE t ^@ 'Worth';
|
||||
count
|
||||
-------
|
||||
2
|
||||
(1 row)
|
||||
|
||||
SELECT * FROM gpolygon_tbl ORDER BY f1 <-> '(0,0)'::point LIMIT 10;
|
||||
f1
|
||||
-------------------------------------------------
|
||||
@ -1182,6 +1188,21 @@ SELECT count(*) FROM radix_text_tbl WHERE t ~>~ 'Worth
|
||||
48
|
||||
(1 row)
|
||||
|
||||
EXPLAIN (COSTS OFF)
|
||||
SELECT count(*) FROM radix_text_tbl WHERE t ^@ 'Worth';
|
||||
QUERY PLAN
|
||||
------------------------------------------------------------
|
||||
Aggregate
|
||||
-> Index Only Scan using sp_radix_ind on radix_text_tbl
|
||||
Index Cond: (t ^@ 'Worth'::text)
|
||||
(3 rows)
|
||||
|
||||
SELECT count(*) FROM radix_text_tbl WHERE t ^@ 'Worth';
|
||||
count
|
||||
-------
|
||||
2
|
||||
(1 row)
|
||||
|
||||
EXPLAIN (COSTS OFF)
|
||||
SELECT * FROM gpolygon_tbl ORDER BY f1 <-> '(0,0)'::point LIMIT 10;
|
||||
QUERY PLAN
|
||||
@ -1763,6 +1784,23 @@ SELECT count(*) FROM radix_text_tbl WHERE t ~>~ 'Worth
|
||||
48
|
||||
(1 row)
|
||||
|
||||
EXPLAIN (COSTS OFF)
|
||||
SELECT count(*) FROM radix_text_tbl WHERE t ^@ 'Worth';
|
||||
QUERY PLAN
|
||||
------------------------------------------------
|
||||
Aggregate
|
||||
-> Bitmap Heap Scan on radix_text_tbl
|
||||
Recheck Cond: (t ^@ 'Worth'::text)
|
||||
-> Bitmap Index Scan on sp_radix_ind
|
||||
Index Cond: (t ^@ 'Worth'::text)
|
||||
(5 rows)
|
||||
|
||||
SELECT count(*) FROM radix_text_tbl WHERE t ^@ 'Worth';
|
||||
count
|
||||
-------
|
||||
2
|
||||
(1 row)
|
||||
|
||||
RESET enable_seqscan;
|
||||
RESET enable_indexscan;
|
||||
RESET enable_bitmapscan;
|
||||
|
@ -718,6 +718,7 @@ sha224(bytea)
|
||||
sha256(bytea)
|
||||
sha384(bytea)
|
||||
sha512(bytea)
|
||||
starts_with(text,text)
|
||||
macaddr8_eq(macaddr8,macaddr8)
|
||||
macaddr8_lt(macaddr8,macaddr8)
|
||||
macaddr8_le(macaddr8,macaddr8)
|
||||
@ -1887,7 +1888,8 @@ ORDER BY 1, 2, 3;
|
||||
4000 | 25 | <<=
|
||||
4000 | 26 | >>
|
||||
4000 | 27 | >>=
|
||||
(121 rows)
|
||||
4000 | 28 | ^@
|
||||
(122 rows)
|
||||
|
||||
-- Check that all opclass search operators have selectivity estimators.
|
||||
-- This is not absolutely required, but it seems a reasonable thing
|
||||
|
@ -224,6 +224,8 @@ SELECT count(*) FROM radix_text_tbl WHERE t > 'Worth
|
||||
|
||||
SELECT count(*) FROM radix_text_tbl WHERE t ~>~ 'Worth St ';
|
||||
|
||||
SELECT count(*) FROM radix_text_tbl WHERE t ^@ 'Worth';
|
||||
|
||||
SELECT * FROM gpolygon_tbl ORDER BY f1 <-> '(0,0)'::point LIMIT 10;
|
||||
|
||||
SELECT circle_center(f1), round(radius(f1)) as radius FROM gcircle_tbl ORDER BY f1 <-> '(200,300)'::point LIMIT 10;
|
||||
@ -441,6 +443,10 @@ EXPLAIN (COSTS OFF)
|
||||
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 radix_text_tbl WHERE t ^@ 'Worth';
|
||||
SELECT count(*) FROM radix_text_tbl WHERE t ^@ 'Worth';
|
||||
|
||||
EXPLAIN (COSTS OFF)
|
||||
SELECT * FROM gpolygon_tbl ORDER BY f1 <-> '(0,0)'::point LIMIT 10;
|
||||
SELECT * FROM gpolygon_tbl ORDER BY f1 <-> '(0,0)'::point LIMIT 10;
|
||||
@ -578,6 +584,10 @@ EXPLAIN (COSTS OFF)
|
||||
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 radix_text_tbl WHERE t ^@ 'Worth';
|
||||
SELECT count(*) FROM radix_text_tbl WHERE t ^@ 'Worth';
|
||||
|
||||
RESET enable_seqscan;
|
||||
RESET enable_indexscan;
|
||||
RESET enable_bitmapscan;
|
||||
|
Reference in New Issue
Block a user