mirror of
https://github.com/postgres/postgres.git
synced 2025-07-27 12:41:57 +03:00
Add support of bool, bpchar, name and uuid to btree_gin
Mostly for completeness, but I believe there are cases to use that in multicolumn GIN indexes. Bump btree_gin module version Author: Matheus Oliveira Reviewed by: Tomas Vondra Discussion: https://www.postgresql.org/message-id/flat/CAJghg4LMJf6Z13fnZD-MBNiGxzd0cA2=F3TDjNkX3eQH58hktQ@mail.gmail.com
This commit is contained in:
27
contrib/btree_gin/sql/bool.sql
Normal file
27
contrib/btree_gin/sql/bool.sql
Normal file
@ -0,0 +1,27 @@
|
||||
set enable_seqscan=off;
|
||||
|
||||
CREATE TABLE test_bool (
|
||||
i boolean
|
||||
);
|
||||
|
||||
INSERT INTO test_bool VALUES (false),(true),(null);
|
||||
|
||||
CREATE INDEX idx_bool ON test_bool USING gin (i);
|
||||
|
||||
SELECT * FROM test_bool WHERE i<true ORDER BY i;
|
||||
SELECT * FROM test_bool WHERE i<=true ORDER BY i;
|
||||
SELECT * FROM test_bool WHERE i=true ORDER BY i;
|
||||
SELECT * FROM test_bool WHERE i>=true ORDER BY i;
|
||||
SELECT * FROM test_bool WHERE i>true ORDER BY i;
|
||||
|
||||
SELECT * FROM test_bool WHERE i<false ORDER BY i;
|
||||
SELECT * FROM test_bool WHERE i<=false ORDER BY i;
|
||||
SELECT * FROM test_bool WHERE i=false ORDER BY i;
|
||||
SELECT * FROM test_bool WHERE i>=false ORDER BY i;
|
||||
SELECT * FROM test_bool WHERE i>false ORDER BY i;
|
||||
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_bool WHERE i<true ORDER BY i;
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_bool WHERE i<=true ORDER BY i;
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_bool WHERE i=true ORDER BY i;
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_bool WHERE i>=true ORDER BY i;
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_bool WHERE i>true ORDER BY i;
|
22
contrib/btree_gin/sql/bpchar.sql
Normal file
22
contrib/btree_gin/sql/bpchar.sql
Normal file
@ -0,0 +1,22 @@
|
||||
set enable_seqscan=off;
|
||||
|
||||
CREATE TABLE test_bpchar (
|
||||
i char(10)
|
||||
);
|
||||
|
||||
INSERT INTO test_bpchar VALUES ('a'),('ab'),('abc'),('abc '),('abb'),('axy'),('xyz'),('xyz ');
|
||||
|
||||
CREATE INDEX idx_bpchar ON test_bpchar USING gin (i);
|
||||
|
||||
SELECT * FROM test_bpchar WHERE i<'abc' ORDER BY i;
|
||||
SELECT * FROM test_bpchar WHERE i<='abc' ORDER BY i;
|
||||
SELECT * FROM test_bpchar WHERE i='abc' ORDER BY i;
|
||||
SELECT * FROM test_bpchar WHERE i='abc ' ORDER BY i;
|
||||
SELECT * FROM test_bpchar WHERE i>='abc' ORDER BY i;
|
||||
SELECT * FROM test_bpchar WHERE i>'abc' ORDER BY i;
|
||||
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_bpchar WHERE i<'abc' ORDER BY i;
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_bpchar WHERE i<='abc' ORDER BY i;
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_bpchar WHERE i='abc' ORDER BY i;
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_bpchar WHERE i>='abc' ORDER BY i;
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_bpchar WHERE i>'abc' ORDER BY i;
|
21
contrib/btree_gin/sql/name.sql
Normal file
21
contrib/btree_gin/sql/name.sql
Normal file
@ -0,0 +1,21 @@
|
||||
set enable_seqscan=off;
|
||||
|
||||
CREATE TABLE test_name (
|
||||
i name
|
||||
);
|
||||
|
||||
INSERT INTO test_name VALUES ('a'),('ab'),('abc'),('abb'),('axy'),('xyz');
|
||||
|
||||
CREATE INDEX idx_name ON test_name USING gin (i);
|
||||
|
||||
SELECT * FROM test_name WHERE i<'abc' ORDER BY i;
|
||||
SELECT * FROM test_name WHERE i<='abc' ORDER BY i;
|
||||
SELECT * FROM test_name WHERE i='abc' ORDER BY i;
|
||||
SELECT * FROM test_name WHERE i>='abc' ORDER BY i;
|
||||
SELECT * FROM test_name WHERE i>'abc' ORDER BY i;
|
||||
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_name WHERE i<'abc' ORDER BY i;
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_name WHERE i<='abc' ORDER BY i;
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_name WHERE i='abc' ORDER BY i;
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_name WHERE i>='abc' ORDER BY i;
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_name WHERE i>'abc' ORDER BY i;
|
28
contrib/btree_gin/sql/uuid.sql
Normal file
28
contrib/btree_gin/sql/uuid.sql
Normal file
@ -0,0 +1,28 @@
|
||||
set enable_seqscan=off;
|
||||
|
||||
CREATE TABLE test_uuid (
|
||||
i uuid
|
||||
);
|
||||
|
||||
INSERT INTO test_uuid VALUES
|
||||
( '00000000-0000-0000-0000-000000000000' ),
|
||||
( '299bc99f-2f79-4e3e-bfea-2cbfd62a7c27' ),
|
||||
( '6264af33-0d43-4337-bf4e-43509b8a4be8' ),
|
||||
( 'ce41c936-6acb-4feb-8c91-852a673e5a5c' ),
|
||||
( 'd2ce731f-f2a8-4a2b-be37-8f0ba637427f' ),
|
||||
( 'ffffffff-ffff-ffff-ffff-ffffffffffff' )
|
||||
;
|
||||
|
||||
CREATE INDEX idx_uuid ON test_uuid USING gin (i);
|
||||
|
||||
SELECT * FROM test_uuid WHERE i<'ce41c936-6acb-4feb-8c91-852a673e5a5c'::uuid ORDER BY i;
|
||||
SELECT * FROM test_uuid WHERE i<='ce41c936-6acb-4feb-8c91-852a673e5a5c'::uuid ORDER BY i;
|
||||
SELECT * FROM test_uuid WHERE i='ce41c936-6acb-4feb-8c91-852a673e5a5c'::uuid ORDER BY i;
|
||||
SELECT * FROM test_uuid WHERE i>='ce41c936-6acb-4feb-8c91-852a673e5a5c'::uuid ORDER BY i;
|
||||
SELECT * FROM test_uuid WHERE i>'ce41c936-6acb-4feb-8c91-852a673e5a5c'::uuid ORDER BY i;
|
||||
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_uuid WHERE i<'ce41c936-6acb-4feb-8c91-852a673e5a5c'::uuid ORDER BY i;
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_uuid WHERE i<='ce41c936-6acb-4feb-8c91-852a673e5a5c'::uuid ORDER BY i;
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_uuid WHERE i='ce41c936-6acb-4feb-8c91-852a673e5a5c'::uuid ORDER BY i;
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_uuid WHERE i>='ce41c936-6acb-4feb-8c91-852a673e5a5c'::uuid ORDER BY i;
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_uuid WHERE i>'ce41c936-6acb-4feb-8c91-852a673e5a5c'::uuid ORDER BY i;
|
Reference in New Issue
Block a user