1
0
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:
Teodor Sigaev
2018-04-05 18:19:10 +03:00
parent 0a64b45152
commit f4cd7102b5
13 changed files with 690 additions and 5 deletions

View 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;

View 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;

View 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;

View 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;