Commit 9151e1bb authored by Tom Lane's avatar Tom Lane

Add btree_gin contrib module.

Teodor Sigaev and Oleg Bartunov
parent 87b8db37
# $PostgreSQL: pgsql/contrib/Makefile,v 1.86 2009/01/04 22:19:59 tgl Exp $
# $PostgreSQL: pgsql/contrib/Makefile,v 1.87 2009/03/25 23:20:01 tgl Exp $
subdir = contrib
top_builddir = ..
......@@ -7,6 +7,7 @@ include $(top_builddir)/src/Makefile.global
WANTED_DIRS = \
adminpack \
auto_explain \
btree_gin \
btree_gist \
chkpass \
citext \
......
......@@ -32,6 +32,10 @@ auto_explain -
Log EXPLAIN output for long-running queries
by Takahiro Itagaki <itagaki.takahiro@oss.ntt.co.jp>
btree_gin -
Support for emulating BTREE indexing in GIN
by Oleg Bartunov <oleg@sai.msu.su> and Teodor Sigaev <teodor@sigaev.ru>
btree_gist -
Support for emulating BTREE indexing in GiST
by Oleg Bartunov <oleg@sai.msu.su> and Teodor Sigaev <teodor@sigaev.ru>
......
# $PostgreSQL: pgsql/contrib/btree_gin/Makefile,v 1.1 2009/03/25 23:20:01 tgl Exp $
MODULE_big = btree_gin
OBJS = btree_gin.o
DATA_built = btree_gin.sql
DATA = uninstall_btree_gin.sql
REGRESS = install_btree_gin int2 int4 int8 float4 float8 money oid \
timestamp timestamptz time timetz date interval \
macaddr inet cidr text varchar char bytea bit varbit \
numeric
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)
else
subdir = contrib/btree_gin
top_builddir = ../..
include $(top_builddir)/src/Makefile.global
include $(top_srcdir)/contrib/contrib-global.mk
endif
This diff is collapsed.
This diff is collapsed.
set enable_seqscan=off;
CREATE TABLE test_bit (
i bit(3)
);
INSERT INTO test_bit VALUES ('001'),('010'),('011'),('100'),('101'),('110');
CREATE INDEX idx_bit ON test_bit USING gin (i);
SELECT * FROM test_bit WHERE i<'100'::bit(3) ORDER BY i;
i
-----
001
010
011
(3 rows)
SELECT * FROM test_bit WHERE i<='100'::bit(3) ORDER BY i;
i
-----
001
010
011
100
(4 rows)
SELECT * FROM test_bit WHERE i='100'::bit(3) ORDER BY i;
i
-----
100
(1 row)
SELECT * FROM test_bit WHERE i>='100'::bit(3) ORDER BY i;
i
-----
100
101
110
(3 rows)
SELECT * FROM test_bit WHERE i>'100'::bit(3) ORDER BY i;
i
-----
101
110
(2 rows)
set enable_seqscan=off;
CREATE TABLE test_bytea (
i bytea
);
INSERT INTO test_bytea VALUES ('aaa'),('a'),('abc'),('abb'),('axy'),('xyz');
CREATE INDEX idx_bytea ON test_bytea USING gin (i);
SELECT * FROM test_bytea WHERE i<'abc'::bytea ORDER BY i;
i
-----
a
aaa
abb
(3 rows)
SELECT * FROM test_bytea WHERE i<='abc'::bytea ORDER BY i;
i
-----
a
aaa
abb
abc
(4 rows)
SELECT * FROM test_bytea WHERE i='abc'::bytea ORDER BY i;
i
-----
abc
(1 row)
SELECT * FROM test_bytea WHERE i>='abc'::bytea ORDER BY i;
i
-----
abc
axy
xyz
(3 rows)
SELECT * FROM test_bytea WHERE i>'abc'::bytea ORDER BY i;
i
-----
axy
xyz
(2 rows)
set enable_seqscan=off;
CREATE TABLE test_char (
i "char"
);
INSERT INTO test_char VALUES ('a'),('b'),('c'),('d'),('e'),('f');
CREATE INDEX idx_char ON test_char USING gin (i);
SELECT * FROM test_char WHERE i<'d'::"char" ORDER BY i;
i
---
(0 rows)
SELECT * FROM test_char WHERE i<='d'::"char" ORDER BY i;
i
---
(0 rows)
SELECT * FROM test_char WHERE i='d'::"char" ORDER BY i;
i
---
d
(1 row)
SELECT * FROM test_char WHERE i>='d'::"char" ORDER BY i;
i
---
d
e
f
(3 rows)
SELECT * FROM test_char WHERE i>'d'::"char" ORDER BY i;
i
---
e
f
(2 rows)
set enable_seqscan=off;
CREATE TABLE test_cidr (
i cidr
);
INSERT INTO test_cidr VALUES
( '1.2.3.4' ),
( '1.2.4.4' ),
( '1.2.5.4' ),
( '1.2.6.4' ),
( '1.2.7.4' ),
( '1.2.8.4' )
;
CREATE INDEX idx_cidr ON test_cidr USING gin (i);
SELECT * FROM test_cidr WHERE i<'1.2.6.4'::cidr ORDER BY i;
i
------------
1.2.3.4/32
1.2.4.4/32
1.2.5.4/32
(3 rows)
SELECT * FROM test_cidr WHERE i<='1.2.6.4'::cidr ORDER BY i;
i
------------
1.2.3.4/32
1.2.4.4/32
1.2.5.4/32
1.2.6.4/32
(4 rows)
SELECT * FROM test_cidr WHERE i='1.2.6.4'::cidr ORDER BY i;
i
------------
1.2.6.4/32
(1 row)
SELECT * FROM test_cidr WHERE i>='1.2.6.4'::cidr ORDER BY i;
i
------------
1.2.6.4/32
1.2.7.4/32
1.2.8.4/32
(3 rows)
SELECT * FROM test_cidr WHERE i>'1.2.6.4'::cidr ORDER BY i;
i
------------
1.2.7.4/32
1.2.8.4/32
(2 rows)
set enable_seqscan=off;
CREATE TABLE test_date (
i date
);
INSERT INTO test_date VALUES
( '2004-10-23' ),
( '2004-10-24' ),
( '2004-10-25' ),
( '2004-10-26' ),
( '2004-10-27' ),
( '2004-10-28' )
;
CREATE INDEX idx_date ON test_date USING gin (i);
SELECT * FROM test_date WHERE i<'2004-10-26'::date ORDER BY i;
i
------------
10-23-2004
10-24-2004
10-25-2004
(3 rows)
SELECT * FROM test_date WHERE i<='2004-10-26'::date ORDER BY i;
i
------------
10-23-2004
10-24-2004
10-25-2004
10-26-2004
(4 rows)
SELECT * FROM test_date WHERE i='2004-10-26'::date ORDER BY i;
i
------------
10-26-2004
(1 row)
SELECT * FROM test_date WHERE i>='2004-10-26'::date ORDER BY i;
i
------------
10-26-2004
10-27-2004
10-28-2004
(3 rows)
SELECT * FROM test_date WHERE i>'2004-10-26'::date ORDER BY i;
i
------------
10-27-2004
10-28-2004
(2 rows)
set enable_seqscan=off;
CREATE TABLE test_float4 (
i float4
);
INSERT INTO test_float4 VALUES (-2),(-1),(0),(1),(2),(3);
CREATE INDEX idx_float4 ON test_float4 USING gin (i);
SELECT * FROM test_float4 WHERE i<1::float4 ORDER BY i;
i
----
-2
-1
0
(3 rows)
SELECT * FROM test_float4 WHERE i<=1::float4 ORDER BY i;
i
----
-2
-1
0
1
(4 rows)
SELECT * FROM test_float4 WHERE i=1::float4 ORDER BY i;
i
---
1
(1 row)
SELECT * FROM test_float4 WHERE i>=1::float4 ORDER BY i;
i
---
1
2
3
(3 rows)
SELECT * FROM test_float4 WHERE i>1::float4 ORDER BY i;
i
---
2
3
(2 rows)
set enable_seqscan=off;
CREATE TABLE test_float8 (
i float8
);
INSERT INTO test_float8 VALUES (-2),(-1),(0),(1),(2),(3);
CREATE INDEX idx_float8 ON test_float8 USING gin (i);
SELECT * FROM test_float8 WHERE i<1::float8 ORDER BY i;
i
----
-2
-1
0
(3 rows)
SELECT * FROM test_float8 WHERE i<=1::float8 ORDER BY i;
i
----
-2
-1
0
1
(4 rows)
SELECT * FROM test_float8 WHERE i=1::float8 ORDER BY i;
i
---
1
(1 row)
SELECT * FROM test_float8 WHERE i>=1::float8 ORDER BY i;
i
---
1
2
3
(3 rows)
SELECT * FROM test_float8 WHERE i>1::float8 ORDER BY i;
i
---
2
3
(2 rows)
set enable_seqscan=off;
CREATE TABLE test_inet (
i inet
);
INSERT INTO test_inet VALUES
( '1.2.3.4/16' ),
( '1.2.4.4/16' ),
( '1.2.5.4/16' ),
( '1.2.6.4/16' ),
( '1.2.7.4/16' ),
( '1.2.8.4/16' )
;
CREATE INDEX idx_inet ON test_inet USING gin (i);
SELECT * FROM test_inet WHERE i<'1.2.6.4/16'::inet ORDER BY i;
i
------------
1.2.3.4/16
1.2.4.4/16
1.2.5.4/16
(3 rows)
SELECT * FROM test_inet WHERE i<='1.2.6.4/16'::inet ORDER BY i;
i
------------
1.2.3.4/16
1.2.4.4/16
1.2.5.4/16
1.2.6.4/16
(4 rows)
SELECT * FROM test_inet WHERE i='1.2.6.4/16'::inet ORDER BY i;
i
------------
1.2.6.4/16
(1 row)
SELECT * FROM test_inet WHERE i>='1.2.6.4/16'::inet ORDER BY i;
i
------------
1.2.6.4/16
1.2.7.4/16
1.2.8.4/16
(3 rows)
SELECT * FROM test_inet WHERE i>'1.2.6.4/16'::inet ORDER BY i;
i
------------
1.2.7.4/16
1.2.8.4/16
(2 rows)
SET client_min_messages = warning;
\set ECHO none
RESET client_min_messages;
set enable_seqscan=off;
CREATE TABLE test_int2 (
i int2
);
INSERT INTO test_int2 VALUES (-2),(-1),(0),(1),(2),(3);
CREATE INDEX idx_int2 ON test_int2 USING gin (i);
SELECT * FROM test_int2 WHERE i<1::int2 ORDER BY i;
i
----
-2
-1
0
(3 rows)
SELECT * FROM test_int2 WHERE i<=1::int2 ORDER BY i;
i
----
-2
-1
0
1
(4 rows)
SELECT * FROM test_int2 WHERE i=1::int2 ORDER BY i;
i
---
1
(1 row)
SELECT * FROM test_int2 WHERE i>=1::int2 ORDER BY i;
i
---
1
2
3
(3 rows)
SELECT * FROM test_int2 WHERE i>1::int2 ORDER BY i;
i
---
2
3
(2 rows)
set enable_seqscan=off;
CREATE TABLE test_int4 (
i int4
);
INSERT INTO test_int4 VALUES (-2),(-1),(0),(1),(2),(3);
CREATE INDEX idx_int4 ON test_int4 USING gin (i);
SELECT * FROM test_int4 WHERE i<1::int4 ORDER BY i;
i
----
-2
-1
0
(3 rows)
SELECT * FROM test_int4 WHERE i<=1::int4 ORDER BY i;
i
----
-2
-1
0
1
(4 rows)
SELECT * FROM test_int4 WHERE i=1::int4 ORDER BY i;
i
---
1
(1 row)
SELECT * FROM test_int4 WHERE i>=1::int4 ORDER BY i;
i
---
1
2
3
(3 rows)
SELECT * FROM test_int4 WHERE i>1::int4 ORDER BY i;
i
---
2
3
(2 rows)
set enable_seqscan=off;
CREATE TABLE test_int8 (
i int8
);
INSERT INTO test_int8 VALUES (-2),(-1),(0),(1),(2),(3);
CREATE INDEX idx_int8 ON test_int8 USING gin (i);
SELECT * FROM test_int8 WHERE i<1::int8 ORDER BY i;
i
----
-2
-1
0
(3 rows)
SELECT * FROM test_int8 WHERE i<=1::int8 ORDER BY i;
i
----
-2
-1
0
1
(4 rows)
SELECT * FROM test_int8 WHERE i=1::int8 ORDER BY i;
i
---
1
(1 row)
SELECT * FROM test_int8 WHERE i>=1::int8 ORDER BY i;
i
---
1
2
3
(3 rows)
SELECT * FROM test_int8 WHERE i>1::int8 ORDER BY i;
i
---
2
3
(2 rows)
set enable_seqscan=off;
CREATE TABLE test_interval (
i interval
);
INSERT INTO test_interval VALUES
( '03:55:08' ),
( '04:55:08' ),
( '05:55:08' ),
( '08:55:08' ),
( '09:55:08' ),
( '10:55:08' )
;
CREATE INDEX idx_interval ON test_interval USING gin (i);
SELECT * FROM test_interval WHERE i<'08:55:08'::interval ORDER BY i;
i
--------------------------
@ 3 hours 55 mins 8 secs
@ 4 hours 55 mins 8 secs
@ 5 hours 55 mins 8 secs
(3 rows)
SELECT * FROM test_interval WHERE i<='08:55:08'::interval ORDER BY i;
i
--------------------------
@ 3 hours 55 mins 8 secs
@ 4 hours 55 mins 8 secs
@ 5 hours 55 mins 8 secs
@ 8 hours 55 mins 8 secs
(4 rows)
SELECT * FROM test_interval WHERE i='08:55:08'::interval ORDER BY i;
i
--------------------------
@ 8 hours 55 mins 8 secs
(1 row)
SELECT * FROM test_interval WHERE i>='08:55:08'::interval ORDER BY i;
i
---------------------------
@ 8 hours 55 mins 8 secs
@ 9 hours 55 mins 8 secs
@ 10 hours 55 mins 8 secs
(3 rows)
SELECT * FROM test_interval WHERE i>'08:55:08'::interval ORDER BY i;
i
---------------------------
@ 9 hours 55 mins 8 secs
@ 10 hours 55 mins 8 secs
(2 rows)
set enable_seqscan=off;
CREATE TABLE test_macaddr (
i macaddr
);
INSERT INTO test_macaddr VALUES
( '22:00:5c:03:55:08' ),
( '22:00:5c:04:55:08' ),
( '22:00:5c:05:55:08' ),
( '22:00:5c:08:55:08' ),
( '22:00:5c:09:55:08' ),
( '22:00:5c:10:55:08' )
;
CREATE INDEX idx_macaddr ON test_macaddr USING gin (i);
SELECT * FROM test_macaddr WHERE i<'22:00:5c:08:55:08'::macaddr ORDER BY i;
i
-------------------
22:00:5c:03:55:08
22:00:5c:04:55:08
22:00:5c:05:55:08
(3 rows)
SELECT * FROM test_macaddr WHERE i<='22:00:5c:08:55:08'::macaddr ORDER BY i;
i
-------------------
22:00:5c:03:55:08
22:00:5c:04:55:08
22:00:5c:05:55:08
22:00:5c:08:55:08
(4 rows)
SELECT * FROM test_macaddr WHERE i='22:00:5c:08:55:08'::macaddr ORDER BY i;
i
-------------------
22:00:5c:08:55:08
(1 row)
SELECT * FROM test_macaddr WHERE i>='22:00:5c:08:55:08'::macaddr ORDER BY i;
i
-------------------
22:00:5c:08:55:08
22:00:5c:09:55:08
22:00:5c:10:55:08
(3 rows)
SELECT * FROM test_macaddr WHERE i>'22:00:5c:08:55:08'::macaddr ORDER BY i;
i
-------------------
22:00:5c:09:55:08
22:00:5c:10:55:08
(2 rows)
set enable_seqscan=off;
CREATE TABLE test_money (
i money
);
INSERT INTO test_money VALUES ('-2'),('-1'),('0'),('1'),('2'),('3');
CREATE INDEX idx_money ON test_money USING gin (i);
SELECT * FROM test_money WHERE i<'1'::money ORDER BY i;
i
--------
-$2.00
-$1.00
$0.00
(3 rows)
SELECT * FROM test_money WHERE i<='1'::money ORDER BY i;
i
--------
-$2.00
-$1.00
$0.00
$1.00
(4 rows)
SELECT * FROM test_money WHERE i='1'::money ORDER BY i;
i
-------
$1.00
(1 row)
SELECT * FROM test_money WHERE i>='1'::money ORDER BY i;
i
-------
$1.00
$2.00
$3.00
(3 rows)
SELECT * FROM test_money WHERE i>'1'::money ORDER BY i;
i
-------
$2.00
$3.00
(2 rows)
set enable_seqscan=off;
CREATE TABLE test_numeric (
i numeric
);
INSERT INTO test_numeric VALUES (-2),(-1),(0),(1),(2),(3);
CREATE INDEX idx_numeric ON test_numeric USING gin (i);
SELECT * FROM test_numeric WHERE i<'1'::numeric ORDER BY i;
i
----
-2
-1
0
(3 rows)
SELECT * FROM test_numeric WHERE i<='1'::numeric ORDER BY i;
i
----
-2
-1
0
1
(4 rows)
SELECT * FROM test_numeric WHERE i='1'::numeric ORDER BY i;
i
---
1
(1 row)
SELECT * FROM test_numeric WHERE i>='1'::numeric ORDER BY i;
i
---
1
2
3
(3 rows)
SELECT * FROM test_numeric WHERE i>'1'::numeric ORDER BY i;
i
---
2
3
(2 rows)
set enable_seqscan=off;
CREATE TABLE test_oid (
i oid
);
INSERT INTO test_oid VALUES (0),(1),(2),(3),(4),(5);
CREATE INDEX idx_oid ON test_oid USING gin (i);
SELECT * FROM test_oid WHERE i<3::oid ORDER BY i;
i
---
0
1
2
(3 rows)
SELECT * FROM test_oid WHERE i<=3::oid ORDER BY i;
i
---
0
1
2
3
(4 rows)
SELECT * FROM test_oid WHERE i=3::oid ORDER BY i;
i
---
3
(1 row)
SELECT * FROM test_oid WHERE i>=3::oid ORDER BY i;
i
---
3
4
5
(3 rows)
SELECT * FROM test_oid WHERE i>3::oid ORDER BY i;
i
---
4
5
(2 rows)
set enable_seqscan=off;
CREATE TABLE test_text (
i text
);
INSERT INTO test_text VALUES ('aaa'),('a'),('abc'),('abb'),('axy'),('xyz');
CREATE INDEX idx_text ON test_text USING gin (i);
SELECT * FROM test_text WHERE i<'abc' ORDER BY i;
i
-----
a
aaa
abb
(3 rows)
SELECT * FROM test_text WHERE i<='abc' ORDER BY i;
i
-----
a
aaa
abb
abc
(4 rows)
SELECT * FROM test_text WHERE i='abc' ORDER BY i;
i
-----
abc
(1 row)
SELECT * FROM test_text WHERE i>='abc' ORDER BY i;
i
-----
abc
axy
xyz
(3 rows)
SELECT * FROM test_text WHERE i>'abc' ORDER BY i;
i
-----
axy
xyz
(2 rows)
set enable_seqscan=off;
CREATE TABLE test_time (
i time
);
INSERT INTO test_time VALUES
( '03:55:08' ),
( '04:55:08' ),
( '05:55:08' ),
( '08:55:08' ),
( '09:55:08' ),
( '10:55:08' )
;
CREATE INDEX idx_time ON test_time USING gin (i);
SELECT * FROM test_time WHERE i<'08:55:08'::time ORDER BY i;
i
----------
03:55:08
04:55:08
05:55:08
(3 rows)
SELECT * FROM test_time WHERE i<='08:55:08'::time ORDER BY i;
i
----------
03:55:08
04:55:08
05:55:08
08:55:08
(4 rows)
SELECT * FROM test_time WHERE i='08:55:08'::time ORDER BY i;
i
----------
08:55:08
(1 row)
SELECT * FROM test_time WHERE i>='08:55:08'::time ORDER BY i;
i
----------
08:55:08
09:55:08
10:55:08
(3 rows)
SELECT * FROM test_time WHERE i>'08:55:08'::time ORDER BY i;
i
----------
09:55:08
10:55:08
(2 rows)
set enable_seqscan=off;
CREATE TABLE test_timestamp (
i timestamp
);
INSERT INTO test_timestamp VALUES
( '2004-10-26 03:55:08' ),
( '2004-10-26 04:55:08' ),
( '2004-10-26 05:55:08' ),
( '2004-10-26 08:55:08' ),
( '2004-10-26 09:55:08' ),
( '2004-10-26 10:55:08' )
;
CREATE INDEX idx_timestamp ON test_timestamp USING gin (i);
SELECT * FROM test_timestamp WHERE i<'2004-10-26 08:55:08'::timestamp ORDER BY i;
i
--------------------------
Tue Oct 26 03:55:08 2004
Tue Oct 26 04:55:08 2004
Tue Oct 26 05:55:08 2004
(3 rows)
SELECT * FROM test_timestamp WHERE i<='2004-10-26 08:55:08'::timestamp ORDER BY i;
i
--------------------------
Tue Oct 26 03:55:08 2004
Tue Oct 26 04:55:08 2004
Tue Oct 26 05:55:08 2004
Tue Oct 26 08:55:08 2004
(4 rows)
SELECT * FROM test_timestamp WHERE i='2004-10-26 08:55:08'::timestamp ORDER BY i;
i
--------------------------
Tue Oct 26 08:55:08 2004
(1 row)
SELECT * FROM test_timestamp WHERE i>='2004-10-26 08:55:08'::timestamp ORDER BY i;
i
--------------------------
Tue Oct 26 08:55:08 2004
Tue Oct 26 09:55:08 2004
Tue Oct 26 10:55:08 2004
(3 rows)
SELECT * FROM test_timestamp WHERE i>'2004-10-26 08:55:08'::timestamp ORDER BY i;
i
--------------------------
Tue Oct 26 09:55:08 2004
Tue Oct 26 10:55:08 2004
(2 rows)
set enable_seqscan=off;
CREATE TABLE test_timestamptz (
i timestamptz
);
INSERT INTO test_timestamptz VALUES
( '2004-10-26 03:55:08' ),
( '2004-10-26 04:55:08' ),
( '2004-10-26 05:55:08' ),
( '2004-10-26 08:55:08' ),
( '2004-10-26 09:55:08' ),
( '2004-10-26 10:55:08' )
;
CREATE INDEX idx_timestamptz ON test_timestamptz USING gin (i);
SELECT * FROM test_timestamptz WHERE i<'2004-10-26 08:55:08'::timestamptz ORDER BY i;
i
------------------------------
Tue Oct 26 03:55:08 2004 PDT
Tue Oct 26 04:55:08 2004 PDT
Tue Oct 26 05:55:08 2004 PDT
(3 rows)
SELECT * FROM test_timestamptz WHERE i<='2004-10-26 08:55:08'::timestamptz ORDER BY i;
i
------------------------------
Tue Oct 26 03:55:08 2004 PDT
Tue Oct 26 04:55:08 2004 PDT
Tue Oct 26 05:55:08 2004 PDT
Tue Oct 26 08:55:08 2004 PDT
(4 rows)
SELECT * FROM test_timestamptz WHERE i='2004-10-26 08:55:08'::timestamptz ORDER BY i;
i
------------------------------
Tue Oct 26 08:55:08 2004 PDT
(1 row)
SELECT * FROM test_timestamptz WHERE i>='2004-10-26 08:55:08'::timestamptz ORDER BY i;
i
------------------------------
Tue Oct 26 08:55:08 2004 PDT
Tue Oct 26 09:55:08 2004 PDT
Tue Oct 26 10:55:08 2004 PDT
(3 rows)
SELECT * FROM test_timestamptz WHERE i>'2004-10-26 08:55:08'::timestamptz ORDER BY i;
i
------------------------------
Tue Oct 26 09:55:08 2004 PDT
Tue Oct 26 10:55:08 2004 PDT
(2 rows)
set enable_seqscan=off;
CREATE TABLE test_timetz (
i timetz
);
INSERT INTO test_timetz VALUES
( '03:55:08 GMT+2' ),
( '04:55:08 GMT+2' ),
( '05:55:08 GMT+2' ),
( '08:55:08 GMT+2' ),
( '09:55:08 GMT+2' ),
( '10:55:08 GMT+2' )
;
CREATE INDEX idx_timetz ON test_timetz USING gin (i);
SELECT * FROM test_timetz WHERE i<'08:55:08 GMT+2'::timetz ORDER BY i;
i
-------------
03:55:08-02
04:55:08-02
05:55:08-02
(3 rows)
SELECT * FROM test_timetz WHERE i<='08:55:08 GMT+2'::timetz ORDER BY i;
i
-------------
03:55:08-02
04:55:08-02
05:55:08-02
08:55:08-02
(4 rows)
SELECT * FROM test_timetz WHERE i='08:55:08 GMT+2'::timetz ORDER BY i;
i
-------------
08:55:08-02
(1 row)
SELECT * FROM test_timetz WHERE i>='08:55:08 GMT+2'::timetz ORDER BY i;
i
-------------
08:55:08-02
09:55:08-02
10:55:08-02
(3 rows)
SELECT * FROM test_timetz WHERE i>'08:55:08 GMT+2'::timetz ORDER BY i;
i
-------------
09:55:08-02
10:55:08-02
(2 rows)
set enable_seqscan=off;
CREATE TABLE test_varbit (
i varbit
);
INSERT INTO test_varbit VALUES ('001'),('010'),('011'),('100'),('101'),('110');
CREATE INDEX idx_varbit ON test_varbit USING gin (i);
SELECT * FROM test_varbit WHERE i<'100'::varbit ORDER BY i;
i
-----
001
010
011
(3 rows)
SELECT * FROM test_varbit WHERE i<='100'::varbit ORDER BY i;
i
-----
001
010
011
100
(4 rows)
SELECT * FROM test_varbit WHERE i='100'::varbit ORDER BY i;
i
-----
100
(1 row)
SELECT * FROM test_varbit WHERE i>='100'::varbit ORDER BY i;
i
-----
100
101
110
(3 rows)
SELECT * FROM test_varbit WHERE i>'100'::varbit ORDER BY i;
i
-----
101
110
(2 rows)
set enable_seqscan=off;
CREATE TABLE test_varchar (
i varchar
);
INSERT INTO test_varchar VALUES ('aaa'),('a'),('abc'),('abb'),('axy'),('xyz');
CREATE INDEX idx_varchar ON test_varchar USING gin (i);
SELECT * FROM test_varchar WHERE i<'abc'::varchar ORDER BY i;
i
-----
a
aaa
abb
(3 rows)
SELECT * FROM test_varchar WHERE i<='abc'::varchar ORDER BY i;
i
-----
a
aaa
abb
abc
(4 rows)
SELECT * FROM test_varchar WHERE i='abc'::varchar ORDER BY i;
i
-----
abc
(1 row)
SELECT * FROM test_varchar WHERE i>='abc'::varchar ORDER BY i;
i
-----
abc
axy
xyz
(3 rows)
SELECT * FROM test_varchar WHERE i>'abc'::varchar ORDER BY i;
i
-----
axy
xyz
(2 rows)
set enable_seqscan=off;
CREATE TABLE test_bit (
i bit(3)
);
INSERT INTO test_bit VALUES ('001'),('010'),('011'),('100'),('101'),('110');
CREATE INDEX idx_bit ON test_bit USING gin (i);
SELECT * FROM test_bit WHERE i<'100'::bit(3) ORDER BY i;
SELECT * FROM test_bit WHERE i<='100'::bit(3) ORDER BY i;
SELECT * FROM test_bit WHERE i='100'::bit(3) ORDER BY i;
SELECT * FROM test_bit WHERE i>='100'::bit(3) ORDER BY i;
SELECT * FROM test_bit WHERE i>'100'::bit(3) ORDER BY i;
set enable_seqscan=off;
CREATE TABLE test_bytea (
i bytea
);
INSERT INTO test_bytea VALUES ('aaa'),('a'),('abc'),('abb'),('axy'),('xyz');
CREATE INDEX idx_bytea ON test_bytea USING gin (i);
SELECT * FROM test_bytea WHERE i<'abc'::bytea ORDER BY i;
SELECT * FROM test_bytea WHERE i<='abc'::bytea ORDER BY i;
SELECT * FROM test_bytea WHERE i='abc'::bytea ORDER BY i;
SELECT * FROM test_bytea WHERE i>='abc'::bytea ORDER BY i;
SELECT * FROM test_bytea WHERE i>'abc'::bytea ORDER BY i;
set enable_seqscan=off;
CREATE TABLE test_char (
i "char"
);
INSERT INTO test_char VALUES ('a'),('b'),('c'),('d'),('e'),('f');
CREATE INDEX idx_char ON test_char USING gin (i);
SELECT * FROM test_char WHERE i<'d'::"char" ORDER BY i;
SELECT * FROM test_char WHERE i<='d'::"char" ORDER BY i;
SELECT * FROM test_char WHERE i='d'::"char" ORDER BY i;
SELECT * FROM test_char WHERE i>='d'::"char" ORDER BY i;
SELECT * FROM test_char WHERE i>'d'::"char" ORDER BY i;
set enable_seqscan=off;
CREATE TABLE test_cidr (
i cidr
);
INSERT INTO test_cidr VALUES
( '1.2.3.4' ),
( '1.2.4.4' ),
( '1.2.5.4' ),
( '1.2.6.4' ),
( '1.2.7.4' ),
( '1.2.8.4' )
;
CREATE INDEX idx_cidr ON test_cidr USING gin (i);
SELECT * FROM test_cidr WHERE i<'1.2.6.4'::cidr ORDER BY i;
SELECT * FROM test_cidr WHERE i<='1.2.6.4'::cidr ORDER BY i;
SELECT * FROM test_cidr WHERE i='1.2.6.4'::cidr ORDER BY i;
SELECT * FROM test_cidr WHERE i>='1.2.6.4'::cidr ORDER BY i;
SELECT * FROM test_cidr WHERE i>'1.2.6.4'::cidr ORDER BY i;
set enable_seqscan=off;
CREATE TABLE test_date (
i date
);
INSERT INTO test_date VALUES
( '2004-10-23' ),
( '2004-10-24' ),
( '2004-10-25' ),
( '2004-10-26' ),
( '2004-10-27' ),
( '2004-10-28' )
;
CREATE INDEX idx_date ON test_date USING gin (i);
SELECT * FROM test_date WHERE i<'2004-10-26'::date ORDER BY i;
SELECT * FROM test_date WHERE i<='2004-10-26'::date ORDER BY i;
SELECT * FROM test_date WHERE i='2004-10-26'::date ORDER BY i;
SELECT * FROM test_date WHERE i>='2004-10-26'::date ORDER BY i;
SELECT * FROM test_date WHERE i>'2004-10-26'::date ORDER BY i;
set enable_seqscan=off;
CREATE TABLE test_float4 (
i float4
);
INSERT INTO test_float4 VALUES (-2),(-1),(0),(1),(2),(3);
CREATE INDEX idx_float4 ON test_float4 USING gin (i);
SELECT * FROM test_float4 WHERE i<1::float4 ORDER BY i;
SELECT * FROM test_float4 WHERE i<=1::float4 ORDER BY i;
SELECT * FROM test_float4 WHERE i=1::float4 ORDER BY i;
SELECT * FROM test_float4 WHERE i>=1::float4 ORDER BY i;
SELECT * FROM test_float4 WHERE i>1::float4 ORDER BY i;
set enable_seqscan=off;
CREATE TABLE test_float8 (
i float8
);
INSERT INTO test_float8 VALUES (-2),(-1),(0),(1),(2),(3);
CREATE INDEX idx_float8 ON test_float8 USING gin (i);
SELECT * FROM test_float8 WHERE i<1::float8 ORDER BY i;
SELECT * FROM test_float8 WHERE i<=1::float8 ORDER BY i;
SELECT * FROM test_float8 WHERE i=1::float8 ORDER BY i;
SELECT * FROM test_float8 WHERE i>=1::float8 ORDER BY i;
SELECT * FROM test_float8 WHERE i>1::float8 ORDER BY i;
set enable_seqscan=off;
CREATE TABLE test_inet (
i inet
);
INSERT INTO test_inet VALUES
( '1.2.3.4/16' ),
( '1.2.4.4/16' ),
( '1.2.5.4/16' ),
( '1.2.6.4/16' ),
( '1.2.7.4/16' ),
( '1.2.8.4/16' )
;
CREATE INDEX idx_inet ON test_inet USING gin (i);
SELECT * FROM test_inet WHERE i<'1.2.6.4/16'::inet ORDER BY i;
SELECT * FROM test_inet WHERE i<='1.2.6.4/16'::inet ORDER BY i;
SELECT * FROM test_inet WHERE i='1.2.6.4/16'::inet ORDER BY i;
SELECT * FROM test_inet WHERE i>='1.2.6.4/16'::inet ORDER BY i;
SELECT * FROM test_inet WHERE i>'1.2.6.4/16'::inet ORDER BY i;
SET client_min_messages = warning;
\set ECHO none
\i btree_gin.sql
\set ECHO all
RESET client_min_messages;
set enable_seqscan=off;
CREATE TABLE test_int2 (
i int2
);
INSERT INTO test_int2 VALUES (-2),(-1),(0),(1),(2),(3);
CREATE INDEX idx_int2 ON test_int2 USING gin (i);
SELECT * FROM test_int2 WHERE i<1::int2 ORDER BY i;
SELECT * FROM test_int2 WHERE i<=1::int2 ORDER BY i;
SELECT * FROM test_int2 WHERE i=1::int2 ORDER BY i;
SELECT * FROM test_int2 WHERE i>=1::int2 ORDER BY i;
SELECT * FROM test_int2 WHERE i>1::int2 ORDER BY i;
set enable_seqscan=off;
CREATE TABLE test_int4 (
i int4
);
INSERT INTO test_int4 VALUES (-2),(-1),(0),(1),(2),(3);
CREATE INDEX idx_int4 ON test_int4 USING gin (i);
SELECT * FROM test_int4 WHERE i<1::int4 ORDER BY i;
SELECT * FROM test_int4 WHERE i<=1::int4 ORDER BY i;
SELECT * FROM test_int4 WHERE i=1::int4 ORDER BY i;
SELECT * FROM test_int4 WHERE i>=1::int4 ORDER BY i;
SELECT * FROM test_int4 WHERE i>1::int4 ORDER BY i;
set enable_seqscan=off;
CREATE TABLE test_int8 (
i int8
);
INSERT INTO test_int8 VALUES (-2),(-1),(0),(1),(2),(3);
CREATE INDEX idx_int8 ON test_int8 USING gin (i);
SELECT * FROM test_int8 WHERE i<1::int8 ORDER BY i;
SELECT * FROM test_int8 WHERE i<=1::int8 ORDER BY i;
SELECT * FROM test_int8 WHERE i=1::int8 ORDER BY i;
SELECT * FROM test_int8 WHERE i>=1::int8 ORDER BY i;
SELECT * FROM test_int8 WHERE i>1::int8 ORDER BY i;
set enable_seqscan=off;
CREATE TABLE test_interval (
i interval
);
INSERT INTO test_interval VALUES
( '03:55:08' ),
( '04:55:08' ),
( '05:55:08' ),
( '08:55:08' ),
( '09:55:08' ),
( '10:55:08' )
;
CREATE INDEX idx_interval ON test_interval USING gin (i);
SELECT * FROM test_interval WHERE i<'08:55:08'::interval ORDER BY i;
SELECT * FROM test_interval WHERE i<='08:55:08'::interval ORDER BY i;
SELECT * FROM test_interval WHERE i='08:55:08'::interval ORDER BY i;
SELECT * FROM test_interval WHERE i>='08:55:08'::interval ORDER BY i;
SELECT * FROM test_interval WHERE i>'08:55:08'::interval ORDER BY i;
set enable_seqscan=off;
CREATE TABLE test_macaddr (
i macaddr
);
INSERT INTO test_macaddr VALUES
( '22:00:5c:03:55:08' ),
( '22:00:5c:04:55:08' ),
( '22:00:5c:05:55:08' ),
( '22:00:5c:08:55:08' ),
( '22:00:5c:09:55:08' ),
( '22:00:5c:10:55:08' )
;
CREATE INDEX idx_macaddr ON test_macaddr USING gin (i);
SELECT * FROM test_macaddr WHERE i<'22:00:5c:08:55:08'::macaddr ORDER BY i;
SELECT * FROM test_macaddr WHERE i<='22:00:5c:08:55:08'::macaddr ORDER BY i;
SELECT * FROM test_macaddr WHERE i='22:00:5c:08:55:08'::macaddr ORDER BY i;
SELECT * FROM test_macaddr WHERE i>='22:00:5c:08:55:08'::macaddr ORDER BY i;
SELECT * FROM test_macaddr WHERE i>'22:00:5c:08:55:08'::macaddr ORDER BY i;
set enable_seqscan=off;
CREATE TABLE test_money (
i money
);
INSERT INTO test_money VALUES ('-2'),('-1'),('0'),('1'),('2'),('3');
CREATE INDEX idx_money ON test_money USING gin (i);
SELECT * FROM test_money WHERE i<'1'::money ORDER BY i;
SELECT * FROM test_money WHERE i<='1'::money ORDER BY i;
SELECT * FROM test_money WHERE i='1'::money ORDER BY i;
SELECT * FROM test_money WHERE i>='1'::money ORDER BY i;
SELECT * FROM test_money WHERE i>'1'::money ORDER BY i;
set enable_seqscan=off;
CREATE TABLE test_numeric (
i numeric
);
INSERT INTO test_numeric VALUES (-2),(-1),(0),(1),(2),(3);
CREATE INDEX idx_numeric ON test_numeric USING gin (i);
SELECT * FROM test_numeric WHERE i<'1'::numeric ORDER BY i;
SELECT * FROM test_numeric WHERE i<='1'::numeric ORDER BY i;
SELECT * FROM test_numeric WHERE i='1'::numeric ORDER BY i;
SELECT * FROM test_numeric WHERE i>='1'::numeric ORDER BY i;
SELECT * FROM test_numeric WHERE i>'1'::numeric ORDER BY i;
set enable_seqscan=off;
CREATE TABLE test_oid (
i oid
);
INSERT INTO test_oid VALUES (0),(1),(2),(3),(4),(5);
CREATE INDEX idx_oid ON test_oid USING gin (i);
SELECT * FROM test_oid WHERE i<3::oid ORDER BY i;
SELECT * FROM test_oid WHERE i<=3::oid ORDER BY i;
SELECT * FROM test_oid WHERE i=3::oid ORDER BY i;
SELECT * FROM test_oid WHERE i>=3::oid ORDER BY i;
SELECT * FROM test_oid WHERE i>3::oid ORDER BY i;
set enable_seqscan=off;
CREATE TABLE test_text (
i text
);
INSERT INTO test_text VALUES ('aaa'),('a'),('abc'),('abb'),('axy'),('xyz');
CREATE INDEX idx_text ON test_text USING gin (i);
SELECT * FROM test_text WHERE i<'abc' ORDER BY i;
SELECT * FROM test_text WHERE i<='abc' ORDER BY i;
SELECT * FROM test_text WHERE i='abc' ORDER BY i;
SELECT * FROM test_text WHERE i>='abc' ORDER BY i;
SELECT * FROM test_text WHERE i>'abc' ORDER BY i;
set enable_seqscan=off;
CREATE TABLE test_time (
i time
);
INSERT INTO test_time VALUES
( '03:55:08' ),
( '04:55:08' ),
( '05:55:08' ),
( '08:55:08' ),
( '09:55:08' ),
( '10:55:08' )
;
CREATE INDEX idx_time ON test_time USING gin (i);
SELECT * FROM test_time WHERE i<'08:55:08'::time ORDER BY i;
SELECT * FROM test_time WHERE i<='08:55:08'::time ORDER BY i;
SELECT * FROM test_time WHERE i='08:55:08'::time ORDER BY i;
SELECT * FROM test_time WHERE i>='08:55:08'::time ORDER BY i;
SELECT * FROM test_time WHERE i>'08:55:08'::time ORDER BY i;
set enable_seqscan=off;
CREATE TABLE test_timestamp (
i timestamp
);
INSERT INTO test_timestamp VALUES
( '2004-10-26 03:55:08' ),
( '2004-10-26 04:55:08' ),
( '2004-10-26 05:55:08' ),
( '2004-10-26 08:55:08' ),
( '2004-10-26 09:55:08' ),
( '2004-10-26 10:55:08' )
;
CREATE INDEX idx_timestamp ON test_timestamp USING gin (i);
SELECT * FROM test_timestamp WHERE i<'2004-10-26 08:55:08'::timestamp ORDER BY i;
SELECT * FROM test_timestamp WHERE i<='2004-10-26 08:55:08'::timestamp ORDER BY i;
SELECT * FROM test_timestamp WHERE i='2004-10-26 08:55:08'::timestamp ORDER BY i;
SELECT * FROM test_timestamp WHERE i>='2004-10-26 08:55:08'::timestamp ORDER BY i;
SELECT * FROM test_timestamp WHERE i>'2004-10-26 08:55:08'::timestamp ORDER BY i;
set enable_seqscan=off;
CREATE TABLE test_timestamptz (
i timestamptz
);
INSERT INTO test_timestamptz VALUES
( '2004-10-26 03:55:08' ),
( '2004-10-26 04:55:08' ),
( '2004-10-26 05:55:08' ),
( '2004-10-26 08:55:08' ),
( '2004-10-26 09:55:08' ),
( '2004-10-26 10:55:08' )
;
CREATE INDEX idx_timestamptz ON test_timestamptz USING gin (i);
SELECT * FROM test_timestamptz WHERE i<'2004-10-26 08:55:08'::timestamptz ORDER BY i;
SELECT * FROM test_timestamptz WHERE i<='2004-10-26 08:55:08'::timestamptz ORDER BY i;
SELECT * FROM test_timestamptz WHERE i='2004-10-26 08:55:08'::timestamptz ORDER BY i;
SELECT * FROM test_timestamptz WHERE i>='2004-10-26 08:55:08'::timestamptz ORDER BY i;
SELECT * FROM test_timestamptz WHERE i>'2004-10-26 08:55:08'::timestamptz ORDER BY i;
set enable_seqscan=off;
CREATE TABLE test_timetz (
i timetz
);
INSERT INTO test_timetz VALUES
( '03:55:08 GMT+2' ),
( '04:55:08 GMT+2' ),
( '05:55:08 GMT+2' ),
( '08:55:08 GMT+2' ),
( '09:55:08 GMT+2' ),
( '10:55:08 GMT+2' )
;
CREATE INDEX idx_timetz ON test_timetz USING gin (i);
SELECT * FROM test_timetz WHERE i<'08:55:08 GMT+2'::timetz ORDER BY i;
SELECT * FROM test_timetz WHERE i<='08:55:08 GMT+2'::timetz ORDER BY i;
SELECT * FROM test_timetz WHERE i='08:55:08 GMT+2'::timetz ORDER BY i;
SELECT * FROM test_timetz WHERE i>='08:55:08 GMT+2'::timetz ORDER BY i;
SELECT * FROM test_timetz WHERE i>'08:55:08 GMT+2'::timetz ORDER BY i;
set enable_seqscan=off;
CREATE TABLE test_varbit (
i varbit
);
INSERT INTO test_varbit VALUES ('001'),('010'),('011'),('100'),('101'),('110');
CREATE INDEX idx_varbit ON test_varbit USING gin (i);
SELECT * FROM test_varbit WHERE i<'100'::varbit ORDER BY i;
SELECT * FROM test_varbit WHERE i<='100'::varbit ORDER BY i;
SELECT * FROM test_varbit WHERE i='100'::varbit ORDER BY i;
SELECT * FROM test_varbit WHERE i>='100'::varbit ORDER BY i;
SELECT * FROM test_varbit WHERE i>'100'::varbit ORDER BY i;
set enable_seqscan=off;
CREATE TABLE test_varchar (
i varchar
);
INSERT INTO test_varchar VALUES ('aaa'),('a'),('abc'),('abb'),('axy'),('xyz');
CREATE INDEX idx_varchar ON test_varchar USING gin (i);
SELECT * FROM test_varchar WHERE i<'abc'::varchar ORDER BY i;
SELECT * FROM test_varchar WHERE i<='abc'::varchar ORDER BY i;
SELECT * FROM test_varchar WHERE i='abc'::varchar ORDER BY i;
SELECT * FROM test_varchar WHERE i>='abc'::varchar ORDER BY i;
SELECT * FROM test_varchar WHERE i>'abc'::varchar ORDER BY i;
/* $PostgreSQL: pgsql/contrib/btree_gin/uninstall_btree_gin.sql,v 1.1 2009/03/25 23:20:01 tgl Exp $ */
-- Adjust this setting to control where the objects get dropped.
SET search_path = public;
DROP OPERATOR FAMILY int2_ops USING gin CASCADE;
DROP OPERATOR FAMILY int4_ops USING gin CASCADE;
DROP OPERATOR FAMILY int8_ops USING gin CASCADE;
DROP OPERATOR FAMILY float4_ops USING gin CASCADE;
DROP OPERATOR FAMILY float8_ops USING gin CASCADE;
DROP OPERATOR FAMILY money_ops USING gin CASCADE;
DROP OPERATOR FAMILY oid_ops USING gin CASCADE;
DROP OPERATOR FAMILY timestamp_ops USING gin CASCADE;
DROP OPERATOR FAMILY timestamptz_ops USING gin CASCADE;
DROP OPERATOR FAMILY time_ops USING gin CASCADE;
DROP OPERATOR FAMILY timetz_ops USING gin CASCADE;
DROP OPERATOR FAMILY date_ops USING gin CASCADE;
DROP OPERATOR FAMILY interval_ops USING gin CASCADE;
DROP OPERATOR FAMILY macaddr_ops USING gin CASCADE;
DROP OPERATOR FAMILY inet_ops USING gin CASCADE;
DROP OPERATOR FAMILY cidr_ops USING gin CASCADE;
DROP OPERATOR FAMILY text_ops USING gin CASCADE;
DROP OPERATOR FAMILY varchar_ops USING gin CASCADE;
DROP OPERATOR FAMILY char_ops USING gin CASCADE;
DROP OPERATOR FAMILY bytea_ops USING gin CASCADE;
DROP OPERATOR FAMILY bit_ops USING gin CASCADE;
DROP OPERATOR FAMILY varbit_ops USING gin CASCADE;
DROP OPERATOR FAMILY numeric_ops USING gin CASCADE;
DROP FUNCTION gin_btree_consistent(internal, int2, anyelement, int4, internal, internal);
DROP FUNCTION gin_extract_value_int2(int2, internal);
DROP FUNCTION gin_compare_prefix_int2(int2, int2, int2, internal);
DROP FUNCTION gin_extract_query_int2(int2, internal, int2, internal, internal);
DROP FUNCTION gin_extract_value_int4(int4, internal);
DROP FUNCTION gin_compare_prefix_int4(int4, int4, int2, internal);
DROP FUNCTION gin_extract_query_int4(int4, internal, int2, internal, internal);
DROP FUNCTION gin_extract_value_int8(int8, internal);
DROP FUNCTION gin_compare_prefix_int8(int8, int8, int2, internal);
DROP FUNCTION gin_extract_query_int8(int8, internal, int2, internal, internal);
DROP FUNCTION gin_extract_value_float4(float4, internal);
DROP FUNCTION gin_compare_prefix_float4(float4, float4, int2, internal);
DROP FUNCTION gin_extract_query_float4(float4, internal, int2, internal, internal);
DROP FUNCTION gin_extract_value_float8(float8, internal);
DROP FUNCTION gin_compare_prefix_float8(float8, float8, int2, internal);
DROP FUNCTION gin_extract_query_float8(float8, internal, int2, internal, internal);
DROP FUNCTION gin_extract_value_money(money, internal);
DROP FUNCTION gin_compare_prefix_money(money, money, int2, internal);
DROP FUNCTION gin_extract_query_money(money, internal, int2, internal, internal);
DROP FUNCTION gin_extract_value_oid(oid, internal);
DROP FUNCTION gin_compare_prefix_oid(oid, oid, int2, internal);
DROP FUNCTION gin_extract_query_oid(oid, internal, int2, internal, internal);
DROP FUNCTION gin_extract_value_timestamp(timestamp, internal);
DROP FUNCTION gin_compare_prefix_timestamp(timestamp, timestamp, int2, internal);
DROP FUNCTION gin_extract_query_timestamp(timestamp, internal, int2, internal, internal);
DROP FUNCTION gin_extract_value_timestamptz(timestamptz, internal);
DROP FUNCTION gin_compare_prefix_timestamptz(timestamptz, timestamptz, int2, internal);
DROP FUNCTION gin_extract_query_timestamptz(timestamptz, internal, int2, internal, internal);
DROP FUNCTION gin_extract_value_time(time, internal);
DROP FUNCTION gin_compare_prefix_time(time, time, int2, internal);
DROP FUNCTION gin_extract_query_time(time, internal, int2, internal, internal);
DROP FUNCTION gin_extract_value_timetz(timetz, internal);
DROP FUNCTION gin_compare_prefix_timetz(timetz, timetz, int2, internal);
DROP FUNCTION gin_extract_query_timetz(timetz, internal, int2, internal, internal);
DROP FUNCTION gin_extract_value_date(date, internal);
DROP FUNCTION gin_compare_prefix_date(date, date, int2, internal);
DROP FUNCTION gin_extract_query_date(date, internal, int2, internal, internal);
DROP FUNCTION gin_extract_value_interval(interval, internal);
DROP FUNCTION gin_compare_prefix_interval(interval, interval, int2, internal);
DROP FUNCTION gin_extract_query_interval(interval, internal, int2, internal, internal);
DROP FUNCTION gin_extract_value_macaddr(macaddr, internal);
DROP FUNCTION gin_compare_prefix_macaddr(macaddr, macaddr, int2, internal);
DROP FUNCTION gin_extract_query_macaddr(macaddr, internal, int2, internal, internal);
DROP FUNCTION gin_extract_value_inet(inet, internal);
DROP FUNCTION gin_compare_prefix_inet(inet, inet, int2, internal);
DROP FUNCTION gin_extract_query_inet(inet, internal, int2, internal, internal);
DROP FUNCTION gin_extract_value_cidr(cidr, internal);
DROP FUNCTION gin_compare_prefix_cidr(cidr, cidr, int2, internal);
DROP FUNCTION gin_extract_query_cidr(cidr, internal, int2, internal, internal);
DROP FUNCTION gin_extract_value_text(text, internal);
DROP FUNCTION gin_compare_prefix_text(text, text, int2, internal);
DROP FUNCTION gin_extract_query_text(text, internal, int2, internal, internal);
DROP FUNCTION gin_extract_value_char("char", internal);
DROP FUNCTION gin_compare_prefix_char("char", "char", int2, internal);
DROP FUNCTION gin_extract_query_char("char", internal, int2, internal, internal);
DROP FUNCTION gin_extract_value_bytea(bytea, internal);
DROP FUNCTION gin_compare_prefix_bytea(bytea, bytea, int2, internal);
DROP FUNCTION gin_extract_query_bytea(bytea, internal, int2, internal, internal);
DROP FUNCTION gin_extract_value_bit(bit, internal);
DROP FUNCTION gin_compare_prefix_bit(bit, bit, int2, internal);
DROP FUNCTION gin_extract_query_bit(bit, internal, int2, internal, internal);
DROP FUNCTION gin_extract_value_varbit(varbit, internal);
DROP FUNCTION gin_compare_prefix_varbit(varbit, varbit, int2, internal);
DROP FUNCTION gin_extract_query_varbit(varbit, internal, int2, internal, internal);
DROP FUNCTION gin_extract_value_numeric(numeric, internal);
DROP FUNCTION gin_compare_prefix_numeric(numeric, numeric, int2, internal);
DROP FUNCTION gin_extract_query_numeric(numeric, internal, int2, internal, internal);
DROP FUNCTION gin_numeric_cmp(numeric, numeric);
<!-- $PostgreSQL: pgsql/doc/src/sgml/btree-gin.sgml,v 1.1 2009/03/25 23:20:01 tgl Exp $ -->
<sect1 id="btree-gin">
<title>btree_gin</title>
<indexterm zone="btree-gin">
<primary>btree_gin</primary>
</indexterm>
<para>
<filename>btree_gin</> provides sample GIN operator classes that
implement B-Tree equivalent behavior for the data types
<type>int2</>, <type>int4</>, <type>int8</>, <type>float4</>,
<type>float8</>, <type>timestamp with time zone</>,
<type>timestamp without time zone</>, <type>time with time zone</>,
<type>time without time zone</>, <type>date</>, <type>interval</>,
<type>oid</>, <type>money</>, <type>"char"</>,
<type>varchar</>, <type>text</>, <type>bytea</>, <type>bit</>,
<type>varbit</>, <type>macaddr</>, <type>inet</>, and <type>cidr</>.
</para>
<para>
In general, these operator classes will not outperform the equivalent
standard btree index methods, and they lack one major feature of the
standard btree code: the ability to enforce uniqueness. However,
they are useful for GIN testing and as a base for developing other
GIN operator classes. Also, for queries that test both a GIN-indexable
column and a btree-indexable column, it might be more efficient to create
a multi-column GIN index that uses one of these opclasses than to create
two separate indexes that would have to be combined via bitmap ANDing.
</para>
<sect2>
<title>Example usage</title>
<programlisting>
CREATE TABLE test (a int4);
-- create index
CREATE INDEX testidx ON test USING gin (a);
-- query
SELECT * FROM test WHERE a &lt; 10;
</programlisting>
</sect2>
<sect2>
<title>Authors</title>
<para>
Teodor Sigaev (<email>teodor@stack.net</email>) and
Oleg Bartunov (<email>oleg@sai.msu.su</email>). See
<ulink url="http://www.sai.msu.su/~megera/oddmuse/index.cgi/Gin"></ulink>
for additional information.
</para>
</sect2>
</sect1>
<!-- $PostgreSQL: pgsql/doc/src/sgml/contrib.sgml,v 1.11 2009/01/04 22:19:59 tgl Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/contrib.sgml,v 1.12 2009/03/25 23:20:01 tgl Exp $ -->
<appendix id="contrib">
<title>Additional Supplied Modules</title>
......@@ -80,6 +80,7 @@ psql -d dbname -f <replaceable>SHAREDIR</>/contrib/<replaceable>module</>.sql
&adminpack;
&auto-explain;
&btree-gin;
&btree-gist;
&chkpass;
&citext;
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/filelist.sgml,v 1.59 2009/01/04 22:19:59 tgl Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/filelist.sgml,v 1.60 2009/03/25 23:20:01 tgl Exp $ -->
<!entity history SYSTEM "history.sgml">
<!entity info SYSTEM "info.sgml">
......@@ -93,6 +93,7 @@
<!entity contrib SYSTEM "contrib.sgml">
<!entity adminpack SYSTEM "adminpack.sgml">
<!entity auto-explain SYSTEM "auto-explain.sgml">
<!entity btree-gin SYSTEM "btree-gin.sgml">
<!entity btree-gist SYSTEM "btree-gist.sgml">
<!entity chkpass SYSTEM "chkpass.sgml">
<!entity citext SYSTEM "citext.sgml">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment