mirror of https://github.com/postgres/postgres
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.compull/27/merge
parent
0a64b45152
commit
f4cd7102b5
@ -0,0 +1,128 @@ |
||||
/* contrib/btree_gin/btree_gin--1.2--1.3.sql */ |
||||
|
||||
-- complain if script is sourced in psql, rather than via CREATE EXTENSION |
||||
\echo Use "ALTER EXTENSION btree_gin UPDATE TO '1.3'" to load this file. \quit |
||||
|
||||
-- uuid datatype support new in 1.3. |
||||
CREATE FUNCTION gin_extract_value_uuid(uuid, internal) |
||||
RETURNS internal |
||||
AS 'MODULE_PATHNAME' |
||||
LANGUAGE C STRICT IMMUTABLE; |
||||
|
||||
CREATE FUNCTION gin_compare_prefix_uuid(uuid, uuid, int2, internal) |
||||
RETURNS int4 |
||||
AS 'MODULE_PATHNAME' |
||||
LANGUAGE C STRICT IMMUTABLE; |
||||
|
||||
CREATE FUNCTION gin_extract_query_uuid(uuid, internal, int2, internal, internal) |
||||
RETURNS internal |
||||
AS 'MODULE_PATHNAME' |
||||
LANGUAGE C STRICT IMMUTABLE; |
||||
|
||||
CREATE OPERATOR CLASS uuid_ops |
||||
DEFAULT FOR TYPE uuid USING gin |
||||
AS |
||||
OPERATOR 1 <, |
||||
OPERATOR 2 <=, |
||||
OPERATOR 3 =, |
||||
OPERATOR 4 >=, |
||||
OPERATOR 5 >, |
||||
FUNCTION 1 uuid_cmp(uuid,uuid), |
||||
FUNCTION 2 gin_extract_value_uuid(uuid, internal), |
||||
FUNCTION 3 gin_extract_query_uuid(uuid, internal, int2, internal, internal), |
||||
FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal), |
||||
FUNCTION 5 gin_compare_prefix_uuid(uuid,uuid,int2, internal), |
||||
STORAGE uuid; |
||||
|
||||
-- name datatype support new in 1.3. |
||||
CREATE FUNCTION gin_extract_value_name(name, internal) |
||||
RETURNS internal |
||||
AS 'MODULE_PATHNAME' |
||||
LANGUAGE C STRICT IMMUTABLE; |
||||
|
||||
CREATE FUNCTION gin_compare_prefix_name(name, name, int2, internal) |
||||
RETURNS int4 |
||||
AS 'MODULE_PATHNAME' |
||||
LANGUAGE C STRICT IMMUTABLE; |
||||
|
||||
CREATE FUNCTION gin_extract_query_name(name, internal, int2, internal, internal) |
||||
RETURNS internal |
||||
AS 'MODULE_PATHNAME' |
||||
LANGUAGE C STRICT IMMUTABLE; |
||||
|
||||
CREATE OPERATOR CLASS name_ops |
||||
DEFAULT FOR TYPE name USING gin |
||||
AS |
||||
OPERATOR 1 <, |
||||
OPERATOR 2 <=, |
||||
OPERATOR 3 =, |
||||
OPERATOR 4 >=, |
||||
OPERATOR 5 >, |
||||
FUNCTION 1 btnamecmp(name,name), |
||||
FUNCTION 2 gin_extract_value_name(name, internal), |
||||
FUNCTION 3 gin_extract_query_name(name, internal, int2, internal, internal), |
||||
FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal), |
||||
FUNCTION 5 gin_compare_prefix_name(name,name,int2, internal), |
||||
STORAGE name; |
||||
|
||||
-- bool datatype support new in 1.3. |
||||
CREATE FUNCTION gin_extract_value_bool(bool, internal) |
||||
RETURNS internal |
||||
AS 'MODULE_PATHNAME' |
||||
LANGUAGE C STRICT IMMUTABLE; |
||||
|
||||
CREATE FUNCTION gin_compare_prefix_bool(bool, bool, int2, internal) |
||||
RETURNS int4 |
||||
AS 'MODULE_PATHNAME' |
||||
LANGUAGE C STRICT IMMUTABLE; |
||||
|
||||
CREATE FUNCTION gin_extract_query_bool(bool, internal, int2, internal, internal) |
||||
RETURNS internal |
||||
AS 'MODULE_PATHNAME' |
||||
LANGUAGE C STRICT IMMUTABLE; |
||||
|
||||
CREATE OPERATOR CLASS bool_ops |
||||
DEFAULT FOR TYPE bool USING gin |
||||
AS |
||||
OPERATOR 1 <, |
||||
OPERATOR 2 <=, |
||||
OPERATOR 3 =, |
||||
OPERATOR 4 >=, |
||||
OPERATOR 5 >, |
||||
FUNCTION 1 btboolcmp(bool,bool), |
||||
FUNCTION 2 gin_extract_value_bool(bool, internal), |
||||
FUNCTION 3 gin_extract_query_bool(bool, internal, int2, internal, internal), |
||||
FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal), |
||||
FUNCTION 5 gin_compare_prefix_bool(bool,bool,int2, internal), |
||||
STORAGE bool; |
||||
|
||||
-- bpchar datatype support new in 1.3. |
||||
CREATE FUNCTION gin_extract_value_bpchar(bpchar, internal) |
||||
RETURNS internal |
||||
AS 'MODULE_PATHNAME' |
||||
LANGUAGE C STRICT IMMUTABLE; |
||||
|
||||
CREATE FUNCTION gin_compare_prefix_bpchar(bpchar, bpchar, int2, internal) |
||||
RETURNS int4 |
||||
AS 'MODULE_PATHNAME' |
||||
LANGUAGE C STRICT IMMUTABLE; |
||||
|
||||
CREATE FUNCTION gin_extract_query_bpchar(bpchar, internal, int2, internal, internal) |
||||
RETURNS internal |
||||
AS 'MODULE_PATHNAME' |
||||
LANGUAGE C STRICT IMMUTABLE; |
||||
|
||||
CREATE OPERATOR CLASS bpchar_ops |
||||
DEFAULT FOR TYPE bpchar USING gin |
||||
AS |
||||
OPERATOR 1 <, |
||||
OPERATOR 2 <=, |
||||
OPERATOR 3 =, |
||||
OPERATOR 4 >=, |
||||
OPERATOR 5 >, |
||||
FUNCTION 1 bpcharcmp(bpchar, bpchar), |
||||
FUNCTION 2 gin_extract_value_bpchar(bpchar, internal), |
||||
FUNCTION 3 gin_extract_query_bpchar(bpchar, internal, int2, internal, internal), |
||||
FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal), |
||||
FUNCTION 5 gin_compare_prefix_bpchar(bpchar,bpchar,int2, internal), |
||||
STORAGE bpchar; |
@ -1,5 +1,5 @@ |
||||
# btree_gin extension |
||||
comment = 'support for indexing common datatypes in GIN' |
||||
default_version = '1.2' |
||||
default_version = '1.3' |
||||
module_pathname = '$libdir/btree_gin' |
||||
relocatable = true |
||||
|
@ -0,0 +1,119 @@ |
||||
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; |
||||
i |
||||
--- |
||||
f |
||||
(1 row) |
||||
|
||||
SELECT * FROM test_bool WHERE i<=true ORDER BY i; |
||||
i |
||||
--- |
||||
f |
||||
t |
||||
(2 rows) |
||||
|
||||
SELECT * FROM test_bool WHERE i=true ORDER BY i; |
||||
i |
||||
--- |
||||
t |
||||
(1 row) |
||||
|
||||
SELECT * FROM test_bool WHERE i>=true ORDER BY i; |
||||
i |
||||
--- |
||||
t |
||||
(1 row) |
||||
|
||||
SELECT * FROM test_bool WHERE i>true ORDER BY i; |
||||
i |
||||
--- |
||||
(0 rows) |
||||
|
||||
SELECT * FROM test_bool WHERE i<false ORDER BY i; |
||||
i |
||||
--- |
||||
(0 rows) |
||||
|
||||
SELECT * FROM test_bool WHERE i<=false ORDER BY i; |
||||
i |
||||
--- |
||||
f |
||||
(1 row) |
||||
|
||||
SELECT * FROM test_bool WHERE i=false ORDER BY i; |
||||
i |
||||
--- |
||||
f |
||||
(1 row) |
||||
|
||||
SELECT * FROM test_bool WHERE i>=false ORDER BY i; |
||||
i |
||||
--- |
||||
f |
||||
t |
||||
(2 rows) |
||||
|
||||
SELECT * FROM test_bool WHERE i>false ORDER BY i; |
||||
i |
||||
--- |
||||
t |
||||
(1 row) |
||||
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_bool WHERE i<true ORDER BY i; |
||||
QUERY PLAN |
||||
------------------------------------------- |
||||
Sort |
||||
Sort Key: i |
||||
-> Bitmap Heap Scan on test_bool |
||||
Recheck Cond: (i < true) |
||||
-> Bitmap Index Scan on idx_bool |
||||
Index Cond: (i < true) |
||||
(6 rows) |
||||
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_bool WHERE i<=true ORDER BY i; |
||||
QUERY PLAN |
||||
------------------------------------------- |
||||
Sort |
||||
Sort Key: i |
||||
-> Bitmap Heap Scan on test_bool |
||||
Recheck Cond: (i <= true) |
||||
-> Bitmap Index Scan on idx_bool |
||||
Index Cond: (i <= true) |
||||
(6 rows) |
||||
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_bool WHERE i=true ORDER BY i; |
||||
QUERY PLAN |
||||
----------------------------- |
||||
Sort |
||||
Sort Key: i |
||||
-> Seq Scan on test_bool |
||||
Filter: i |
||||
(4 rows) |
||||
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_bool WHERE i>=true ORDER BY i; |
||||
QUERY PLAN |
||||
------------------------------------------- |
||||
Sort |
||||
Sort Key: i |
||||
-> Bitmap Heap Scan on test_bool |
||||
Recheck Cond: (i >= true) |
||||
-> Bitmap Index Scan on idx_bool |
||||
Index Cond: (i >= true) |
||||
(6 rows) |
||||
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_bool WHERE i>true ORDER BY i; |
||||
QUERY PLAN |
||||
------------------------------------------- |
||||
Sort |
||||
Sort Key: i |
||||
-> Bitmap Heap Scan on test_bool |
||||
Recheck Cond: (i > true) |
||||
-> Bitmap Index Scan on idx_bool |
||||
Index Cond: (i > true) |
||||
(6 rows) |
||||
|
@ -0,0 +1,109 @@ |
||||
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; |
||||
i |
||||
------------ |
||||
a |
||||
ab |
||||
abb |
||||
(3 rows) |
||||
|
||||
SELECT * FROM test_bpchar WHERE i<='abc' ORDER BY i; |
||||
i |
||||
------------ |
||||
a |
||||
ab |
||||
abb |
||||
abc |
||||
abc |
||||
(5 rows) |
||||
|
||||
SELECT * FROM test_bpchar WHERE i='abc' ORDER BY i; |
||||
i |
||||
------------ |
||||
abc |
||||
abc |
||||
(2 rows) |
||||
|
||||
SELECT * FROM test_bpchar WHERE i='abc ' ORDER BY i; |
||||
i |
||||
------------ |
||||
abc |
||||
abc |
||||
(2 rows) |
||||
|
||||
SELECT * FROM test_bpchar WHERE i>='abc' ORDER BY i; |
||||
i |
||||
------------ |
||||
abc |
||||
abc |
||||
axy |
||||
xyz |
||||
xyz |
||||
(5 rows) |
||||
|
||||
SELECT * FROM test_bpchar WHERE i>'abc' ORDER BY i; |
||||
i |
||||
------------ |
||||
axy |
||||
xyz |
||||
xyz |
||||
(3 rows) |
||||
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_bpchar WHERE i<'abc' ORDER BY i; |
||||
QUERY PLAN |
||||
----------------------------------------------- |
||||
Sort |
||||
Sort Key: i |
||||
-> Bitmap Heap Scan on test_bpchar |
||||
Recheck Cond: (i < 'abc'::bpchar) |
||||
-> Bitmap Index Scan on idx_bpchar |
||||
Index Cond: (i < 'abc'::bpchar) |
||||
(6 rows) |
||||
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_bpchar WHERE i<='abc' ORDER BY i; |
||||
QUERY PLAN |
||||
------------------------------------------------ |
||||
Sort |
||||
Sort Key: i |
||||
-> Bitmap Heap Scan on test_bpchar |
||||
Recheck Cond: (i <= 'abc'::bpchar) |
||||
-> Bitmap Index Scan on idx_bpchar |
||||
Index Cond: (i <= 'abc'::bpchar) |
||||
(6 rows) |
||||
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_bpchar WHERE i='abc' ORDER BY i; |
||||
QUERY PLAN |
||||
----------------------------------------- |
||||
Bitmap Heap Scan on test_bpchar |
||||
Recheck Cond: (i = 'abc'::bpchar) |
||||
-> Bitmap Index Scan on idx_bpchar |
||||
Index Cond: (i = 'abc'::bpchar) |
||||
(4 rows) |
||||
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_bpchar WHERE i>='abc' ORDER BY i; |
||||
QUERY PLAN |
||||
------------------------------------------------ |
||||
Sort |
||||
Sort Key: i |
||||
-> Bitmap Heap Scan on test_bpchar |
||||
Recheck Cond: (i >= 'abc'::bpchar) |
||||
-> Bitmap Index Scan on idx_bpchar |
||||
Index Cond: (i >= 'abc'::bpchar) |
||||
(6 rows) |
||||
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_bpchar WHERE i>'abc' ORDER BY i; |
||||
QUERY PLAN |
||||
----------------------------------------------- |
||||
Sort |
||||
Sort Key: i |
||||
-> Bitmap Heap Scan on test_bpchar |
||||
Recheck Cond: (i > 'abc'::bpchar) |
||||
-> Bitmap Index Scan on idx_bpchar |
||||
Index Cond: (i > 'abc'::bpchar) |
||||
(6 rows) |
||||
|
@ -0,0 +1,97 @@ |
||||
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; |
||||
i |
||||
----- |
||||
a |
||||
ab |
||||
abb |
||||
(3 rows) |
||||
|
||||
SELECT * FROM test_name WHERE i<='abc' ORDER BY i; |
||||
i |
||||
----- |
||||
a |
||||
ab |
||||
abb |
||||
abc |
||||
(4 rows) |
||||
|
||||
SELECT * FROM test_name WHERE i='abc' ORDER BY i; |
||||
i |
||||
----- |
||||
abc |
||||
(1 row) |
||||
|
||||
SELECT * FROM test_name WHERE i>='abc' ORDER BY i; |
||||
i |
||||
----- |
||||
abc |
||||
axy |
||||
xyz |
||||
(3 rows) |
||||
|
||||
SELECT * FROM test_name WHERE i>'abc' ORDER BY i; |
||||
i |
||||
----- |
||||
axy |
||||
xyz |
||||
(2 rows) |
||||
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_name WHERE i<'abc' ORDER BY i; |
||||
QUERY PLAN |
||||
--------------------------------------------- |
||||
Sort |
||||
Sort Key: i |
||||
-> Bitmap Heap Scan on test_name |
||||
Recheck Cond: (i < 'abc'::name) |
||||
-> Bitmap Index Scan on idx_name |
||||
Index Cond: (i < 'abc'::name) |
||||
(6 rows) |
||||
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_name WHERE i<='abc' ORDER BY i; |
||||
QUERY PLAN |
||||
---------------------------------------------- |
||||
Sort |
||||
Sort Key: i |
||||
-> Bitmap Heap Scan on test_name |
||||
Recheck Cond: (i <= 'abc'::name) |
||||
-> Bitmap Index Scan on idx_name |
||||
Index Cond: (i <= 'abc'::name) |
||||
(6 rows) |
||||
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_name WHERE i='abc' ORDER BY i; |
||||
QUERY PLAN |
||||
--------------------------------------- |
||||
Bitmap Heap Scan on test_name |
||||
Recheck Cond: (i = 'abc'::name) |
||||
-> Bitmap Index Scan on idx_name |
||||
Index Cond: (i = 'abc'::name) |
||||
(4 rows) |
||||
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_name WHERE i>='abc' ORDER BY i; |
||||
QUERY PLAN |
||||
---------------------------------------------- |
||||
Sort |
||||
Sort Key: i |
||||
-> Bitmap Heap Scan on test_name |
||||
Recheck Cond: (i >= 'abc'::name) |
||||
-> Bitmap Index Scan on idx_name |
||||
Index Cond: (i >= 'abc'::name) |
||||
(6 rows) |
||||
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_name WHERE i>'abc' ORDER BY i; |
||||
QUERY PLAN |
||||
--------------------------------------------- |
||||
Sort |
||||
Sort Key: i |
||||
-> Bitmap Heap Scan on test_name |
||||
Recheck Cond: (i > 'abc'::name) |
||||
-> Bitmap Index Scan on idx_name |
||||
Index Cond: (i > 'abc'::name) |
||||
(6 rows) |
||||
|
@ -0,0 +1,104 @@ |
||||
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; |
||||
i |
||||
-------------------------------------- |
||||
00000000-0000-0000-0000-000000000000 |
||||
299bc99f-2f79-4e3e-bfea-2cbfd62a7c27 |
||||
6264af33-0d43-4337-bf4e-43509b8a4be8 |
||||
(3 rows) |
||||
|
||||
SELECT * FROM test_uuid WHERE i<='ce41c936-6acb-4feb-8c91-852a673e5a5c'::uuid ORDER BY i; |
||||
i |
||||
-------------------------------------- |
||||
00000000-0000-0000-0000-000000000000 |
||||
299bc99f-2f79-4e3e-bfea-2cbfd62a7c27 |
||||
6264af33-0d43-4337-bf4e-43509b8a4be8 |
||||
ce41c936-6acb-4feb-8c91-852a673e5a5c |
||||
(4 rows) |
||||
|
||||
SELECT * FROM test_uuid WHERE i='ce41c936-6acb-4feb-8c91-852a673e5a5c'::uuid ORDER BY i; |
||||
i |
||||
-------------------------------------- |
||||
ce41c936-6acb-4feb-8c91-852a673e5a5c |
||||
(1 row) |
||||
|
||||
SELECT * FROM test_uuid WHERE i>='ce41c936-6acb-4feb-8c91-852a673e5a5c'::uuid ORDER BY i; |
||||
i |
||||
-------------------------------------- |
||||
ce41c936-6acb-4feb-8c91-852a673e5a5c |
||||
d2ce731f-f2a8-4a2b-be37-8f0ba637427f |
||||
ffffffff-ffff-ffff-ffff-ffffffffffff |
||||
(3 rows) |
||||
|
||||
SELECT * FROM test_uuid WHERE i>'ce41c936-6acb-4feb-8c91-852a673e5a5c'::uuid ORDER BY i; |
||||
i |
||||
-------------------------------------- |
||||
d2ce731f-f2a8-4a2b-be37-8f0ba637427f |
||||
ffffffff-ffff-ffff-ffff-ffffffffffff |
||||
(2 rows) |
||||
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_uuid WHERE i<'ce41c936-6acb-4feb-8c91-852a673e5a5c'::uuid ORDER BY i; |
||||
QUERY PLAN |
||||
------------------------------------------------------------------------------ |
||||
Sort |
||||
Sort Key: i |
||||
-> Bitmap Heap Scan on test_uuid |
||||
Recheck Cond: (i < 'ce41c936-6acb-4feb-8c91-852a673e5a5c'::uuid) |
||||
-> Bitmap Index Scan on idx_uuid |
||||
Index Cond: (i < 'ce41c936-6acb-4feb-8c91-852a673e5a5c'::uuid) |
||||
(6 rows) |
||||
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_uuid WHERE i<='ce41c936-6acb-4feb-8c91-852a673e5a5c'::uuid ORDER BY i; |
||||
QUERY PLAN |
||||
------------------------------------------------------------------------------- |
||||
Sort |
||||
Sort Key: i |
||||
-> Bitmap Heap Scan on test_uuid |
||||
Recheck Cond: (i <= 'ce41c936-6acb-4feb-8c91-852a673e5a5c'::uuid) |
||||
-> Bitmap Index Scan on idx_uuid |
||||
Index Cond: (i <= 'ce41c936-6acb-4feb-8c91-852a673e5a5c'::uuid) |
||||
(6 rows) |
||||
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_uuid WHERE i='ce41c936-6acb-4feb-8c91-852a673e5a5c'::uuid ORDER BY i; |
||||
QUERY PLAN |
||||
------------------------------------------------------------------------ |
||||
Bitmap Heap Scan on test_uuid |
||||
Recheck Cond: (i = 'ce41c936-6acb-4feb-8c91-852a673e5a5c'::uuid) |
||||
-> Bitmap Index Scan on idx_uuid |
||||
Index Cond: (i = 'ce41c936-6acb-4feb-8c91-852a673e5a5c'::uuid) |
||||
(4 rows) |
||||
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_uuid WHERE i>='ce41c936-6acb-4feb-8c91-852a673e5a5c'::uuid ORDER BY i; |
||||
QUERY PLAN |
||||
------------------------------------------------------------------------------- |
||||
Sort |
||||
Sort Key: i |
||||
-> Bitmap Heap Scan on test_uuid |
||||
Recheck Cond: (i >= 'ce41c936-6acb-4feb-8c91-852a673e5a5c'::uuid) |
||||
-> Bitmap Index Scan on idx_uuid |
||||
Index Cond: (i >= 'ce41c936-6acb-4feb-8c91-852a673e5a5c'::uuid) |
||||
(6 rows) |
||||
|
||||
EXPLAIN (COSTS OFF) SELECT * FROM test_uuid WHERE i>'ce41c936-6acb-4feb-8c91-852a673e5a5c'::uuid ORDER BY i; |
||||
QUERY PLAN |
||||
------------------------------------------------------------------------------ |
||||
Sort |
||||
Sort Key: i |
||||
-> Bitmap Heap Scan on test_uuid |
||||
Recheck Cond: (i > 'ce41c936-6acb-4feb-8c91-852a673e5a5c'::uuid) |
||||
-> Bitmap Index Scan on idx_uuid |
||||
Index Cond: (i > 'ce41c936-6acb-4feb-8c91-852a673e5a5c'::uuid) |
||||
(6 rows) |
||||
|
@ -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; |
@ -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; |
@ -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; |
@ -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; |
Loading…
Reference in new issue