diff options
author | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2021-04-07 13:22:05 +0300 |
---|---|---|
committer | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2021-04-07 13:22:05 +0300 |
commit | 9f984ba6d23dc6eecebf479ab1d3f2e550a4e9be (patch) | |
tree | 1ec0fd0b4721f3c89960a2a0699cc398e6a659b3 /contrib/btree_gist/sql | |
parent | dd13ad9d39a1ba41cf329b6fe408b49be57c7b88 (diff) | |
download | postgresql-9f984ba6d23dc6eecebf479ab1d3f2e550a4e9be.tar.gz postgresql-9f984ba6d23dc6eecebf479ab1d3f2e550a4e9be.zip |
Add sortsupport for gist_btree opclasses, for faster index builds.
Commit 16fa9b2b30 introduced a faster way to build GiST indexes, by
sorting all the data. This commit adds the sortsupport functions needed
to make use of that feature for btree_gist.
Author: Andrey Borodin
Discussion: https://www.postgresql.org/message-id/2F3F7265-0D22-44DB-AD71-8554C743D943@yandex-team.ru
Diffstat (limited to 'contrib/btree_gist/sql')
26 files changed, 104 insertions, 0 deletions
diff --git a/contrib/btree_gist/sql/bit.sql b/contrib/btree_gist/sql/bit.sql index a733042023f..53c67cf77ac 100644 --- a/contrib/btree_gist/sql/bit.sql +++ b/contrib/btree_gist/sql/bit.sql @@ -16,7 +16,11 @@ SELECT count(*) FROM bittmp WHERE a >= '011011000100010111011000110000100'; SELECT count(*) FROM bittmp WHERE a > '011011000100010111011000110000100'; +SET client_min_messages = DEBUG1; CREATE INDEX bitidx ON bittmp USING GIST ( a ); +CREATE INDEX bitidx_b ON bittmp USING GIST ( a ) WITH (buffering=on); +DROP INDEX bitidx_b; +RESET client_min_messages; SET enable_seqscan=off; diff --git a/contrib/btree_gist/sql/bytea.sql b/contrib/btree_gist/sql/bytea.sql index 6885f5e56d5..fdfa0c345bd 100644 --- a/contrib/btree_gist/sql/bytea.sql +++ b/contrib/btree_gist/sql/bytea.sql @@ -17,7 +17,11 @@ SELECT count(*) FROM byteatmp WHERE a >= '31b0'; SELECT count(*) FROM byteatmp WHERE a > '31b0'; +SET client_min_messages = DEBUG1; CREATE INDEX byteaidx ON byteatmp USING GIST ( a ); +CREATE INDEX byteaidx_b ON byteatmp USING GIST ( a ) WITH (buffering=on); +DROP INDEX byteaidx_b; +RESET client_min_messages; SET enable_seqscan=off; diff --git a/contrib/btree_gist/sql/cash.sql b/contrib/btree_gist/sql/cash.sql index 4526cc4f0aa..0581b3593ef 100644 --- a/contrib/btree_gist/sql/cash.sql +++ b/contrib/btree_gist/sql/cash.sql @@ -18,7 +18,11 @@ SELECT count(*) FROM moneytmp WHERE a > '22649.64'; SELECT a, a <-> '21472.79' FROM moneytmp ORDER BY a <-> '21472.79' LIMIT 3; +SET client_min_messages = DEBUG1; CREATE INDEX moneyidx ON moneytmp USING gist ( a ); +CREATE INDEX moneyidx_b ON moneytmp USING gist ( a ) WITH (buffering=on); +DROP INDEX moneyidx_b; +RESET client_min_messages; SET enable_seqscan=off; diff --git a/contrib/btree_gist/sql/char.sql b/contrib/btree_gist/sql/char.sql index f6eb52e6724..234eabee3b8 100644 --- a/contrib/btree_gist/sql/char.sql +++ b/contrib/btree_gist/sql/char.sql @@ -16,7 +16,11 @@ SELECT count(*) FROM chartmp WHERE a >= '31b0'::char(32); SELECT count(*) FROM chartmp WHERE a > '31b0'::char(32); +SET client_min_messages = DEBUG1; CREATE INDEX charidx ON chartmp USING GIST ( a ); +CREATE INDEX charidx_b ON chartmp USING GIST ( a ) WITH (buffering=on); +DROP INDEX charidx_b; +RESET client_min_messages; SET enable_seqscan=off; diff --git a/contrib/btree_gist/sql/cidr.sql b/contrib/btree_gist/sql/cidr.sql index 9bd77185b96..be2d22b079a 100644 --- a/contrib/btree_gist/sql/cidr.sql +++ b/contrib/btree_gist/sql/cidr.sql @@ -15,7 +15,11 @@ SELECT count(*) FROM cidrtmp WHERE a >= '121.111.63.82'; SELECT count(*) FROM cidrtmp WHERE a > '121.111.63.82'; +SET client_min_messages = DEBUG1; CREATE INDEX cidridx ON cidrtmp USING gist ( a ); +CREATE INDEX cidridx_b ON cidrtmp USING gist ( a ) WITH (buffering=on); +DROP INDEX cidridx_b; +RESET client_min_messages; SET enable_seqscan=off; diff --git a/contrib/btree_gist/sql/date.sql b/contrib/btree_gist/sql/date.sql index f969ef0a08c..f007402bacc 100644 --- a/contrib/btree_gist/sql/date.sql +++ b/contrib/btree_gist/sql/date.sql @@ -18,7 +18,11 @@ SELECT count(*) FROM datetmp WHERE a > '2001-02-13'; SELECT a, a <-> '2001-02-13' FROM datetmp ORDER BY a <-> '2001-02-13' LIMIT 3; +SET client_min_messages = DEBUG1; CREATE INDEX dateidx ON datetmp USING gist ( a ); +CREATE INDEX dateidx_b ON datetmp USING gist ( a ) WITH (buffering=on); +DROP INDEX dateidx_b; +RESET client_min_messages; SET enable_seqscan=off; diff --git a/contrib/btree_gist/sql/enum.sql b/contrib/btree_gist/sql/enum.sql index 476211e9795..d6dbcb42392 100644 --- a/contrib/btree_gist/sql/enum.sql +++ b/contrib/btree_gist/sql/enum.sql @@ -20,7 +20,11 @@ SELECT count(*) FROM enumtmp WHERE a >= 'g'::rainbow; SELECT count(*) FROM enumtmp WHERE a > 'g'::rainbow; +SET client_min_messages = DEBUG1; CREATE INDEX enumidx ON enumtmp USING gist ( a ); +CREATE INDEX enumidx_b ON enumtmp USING gist ( a ) WITH (buffering=on); +DROP INDEX enumidx_b; +RESET client_min_messages; SET enable_seqscan=off; diff --git a/contrib/btree_gist/sql/float4.sql b/contrib/btree_gist/sql/float4.sql index 3da1ce953c8..0e3eb49343f 100644 --- a/contrib/btree_gist/sql/float4.sql +++ b/contrib/btree_gist/sql/float4.sql @@ -18,7 +18,11 @@ SELECT count(*) FROM float4tmp WHERE a > -179.0; SELECT a, a <-> '-179.0' FROM float4tmp ORDER BY a <-> '-179.0' LIMIT 3; +SET client_min_messages = DEBUG1; CREATE INDEX float4idx ON float4tmp USING gist ( a ); +CREATE INDEX float4idx_b ON float4tmp USING gist ( a ) WITH (buffering=on); +DROP INDEX float4idx_b; +RESET client_min_messages; SET enable_seqscan=off; diff --git a/contrib/btree_gist/sql/float8.sql b/contrib/btree_gist/sql/float8.sql index e1e819b37f9..6a216dd6065 100644 --- a/contrib/btree_gist/sql/float8.sql +++ b/contrib/btree_gist/sql/float8.sql @@ -18,7 +18,11 @@ SELECT count(*) FROM float8tmp WHERE a > -1890.0; SELECT a, a <-> '-1890.0' FROM float8tmp ORDER BY a <-> '-1890.0' LIMIT 3; +SET client_min_messages = DEBUG1; CREATE INDEX float8idx ON float8tmp USING gist ( a ); +CREATE INDEX float8idx_b ON float8tmp USING gist ( a ) WITH (buffering=on); +DROP INDEX float8idx_b; +RESET client_min_messages; SET enable_seqscan=off; diff --git a/contrib/btree_gist/sql/inet.sql b/contrib/btree_gist/sql/inet.sql index 4b8d354b00e..0339c853d38 100644 --- a/contrib/btree_gist/sql/inet.sql +++ b/contrib/btree_gist/sql/inet.sql @@ -16,7 +16,11 @@ SELECT count(*) FROM inettmp WHERE a >= '89.225.196.191'; SELECT count(*) FROM inettmp WHERE a > '89.225.196.191'; +SET client_min_messages = DEBUG1; CREATE INDEX inetidx ON inettmp USING gist ( a ); +CREATE INDEX inetidx_b ON inettmp USING gist ( a ) WITH (buffering=on); +DROP INDEX inetidx_b; +RESET client_min_messages; SET enable_seqscan=off; diff --git a/contrib/btree_gist/sql/int2.sql b/contrib/btree_gist/sql/int2.sql index 988518795fc..bf98ac65f83 100644 --- a/contrib/btree_gist/sql/int2.sql +++ b/contrib/btree_gist/sql/int2.sql @@ -18,7 +18,11 @@ SELECT count(*) FROM int2tmp WHERE a > 237; SELECT a, a <-> '237' FROM int2tmp ORDER BY a <-> '237' LIMIT 3; +SET client_min_messages = DEBUG1; CREATE INDEX int2idx ON int2tmp USING gist ( a ); +CREATE INDEX int2idx_b ON int2tmp USING gist ( a ) WITH (buffering=on); +DROP INDEX int2idx_b; +RESET client_min_messages; SET enable_seqscan=off; diff --git a/contrib/btree_gist/sql/int4.sql b/contrib/btree_gist/sql/int4.sql index 659ab5ee24b..214993314af 100644 --- a/contrib/btree_gist/sql/int4.sql +++ b/contrib/btree_gist/sql/int4.sql @@ -18,7 +18,11 @@ SELECT count(*) FROM int4tmp WHERE a > 237; SELECT a, a <-> '237' FROM int4tmp ORDER BY a <-> '237' LIMIT 3; +SET client_min_messages = DEBUG1; CREATE INDEX int4idx ON int4tmp USING gist ( a ); +CREATE INDEX int4idx_b ON int4tmp USING gist ( a ) WITH (buffering=on); +DROP INDEX int4idx_b; +RESET client_min_messages; SET enable_seqscan=off; diff --git a/contrib/btree_gist/sql/int8.sql b/contrib/btree_gist/sql/int8.sql index 51e55e9c14b..8a6c2a4bfd1 100644 --- a/contrib/btree_gist/sql/int8.sql +++ b/contrib/btree_gist/sql/int8.sql @@ -18,7 +18,11 @@ SELECT count(*) FROM int8tmp WHERE a > 464571291354841; SELECT a, a <-> '464571291354841' FROM int8tmp ORDER BY a <-> '464571291354841' LIMIT 3; +SET client_min_messages = DEBUG1; CREATE INDEX int8idx ON int8tmp USING gist ( a ); +CREATE INDEX int8idx_b ON int8tmp USING gist ( a ) WITH (buffering=on); +DROP INDEX int8idx_b; +RESET client_min_messages; SET enable_seqscan=off; diff --git a/contrib/btree_gist/sql/interval.sql b/contrib/btree_gist/sql/interval.sql index 346d6adcb51..6f9b1d4a39a 100644 --- a/contrib/btree_gist/sql/interval.sql +++ b/contrib/btree_gist/sql/interval.sql @@ -18,7 +18,11 @@ SELECT count(*) FROM intervaltmp WHERE a > '199 days 21:21:23'; SELECT a, a <-> '199 days 21:21:23' FROM intervaltmp ORDER BY a <-> '199 days 21:21:23' LIMIT 3; +SET client_min_messages = DEBUG1; CREATE INDEX intervalidx ON intervaltmp USING gist ( a ); +CREATE INDEX intervalidx_b ON intervaltmp USING gist ( a ) WITH (buffering=on); +DROP INDEX intervalidx_b; +RESET client_min_messages; SET enable_seqscan=off; diff --git a/contrib/btree_gist/sql/macaddr.sql b/contrib/btree_gist/sql/macaddr.sql index 85c271f7ce3..bccfc820ca4 100644 --- a/contrib/btree_gist/sql/macaddr.sql +++ b/contrib/btree_gist/sql/macaddr.sql @@ -16,7 +16,11 @@ SELECT count(*) FROM macaddrtmp WHERE a >= '22:00:5c:e5:9b:0d'; SELECT count(*) FROM macaddrtmp WHERE a > '22:00:5c:e5:9b:0d'; +SET client_min_messages = DEBUG1; CREATE INDEX macaddridx ON macaddrtmp USING gist ( a ); +CREATE INDEX macaddridx_b ON macaddrtmp USING gist ( a ) WITH (buffering=on); +DROP INDEX macaddridx_b; +RESET client_min_messages; SET enable_seqscan=off; diff --git a/contrib/btree_gist/sql/macaddr8.sql b/contrib/btree_gist/sql/macaddr8.sql index 61e7d7af405..2d0447a777b 100644 --- a/contrib/btree_gist/sql/macaddr8.sql +++ b/contrib/btree_gist/sql/macaddr8.sql @@ -16,7 +16,11 @@ SELECT count(*) FROM macaddr8tmp WHERE a >= '22:00:5c:e5:9b:0d'; SELECT count(*) FROM macaddr8tmp WHERE a > '22:00:5c:e5:9b:0d'; +SET client_min_messages = DEBUG1; CREATE INDEX macaddr8idx ON macaddr8tmp USING gist ( a ); +CREATE INDEX macaddr8idx_b ON macaddr8tmp USING gist ( a ) WITH (buffering=on); +DROP INDEX macaddr8idx_b; +RESET client_min_messages; SET enable_seqscan=off; diff --git a/contrib/btree_gist/sql/numeric.sql b/contrib/btree_gist/sql/numeric.sql index dbb2f2f1838..55ecbcdadc5 100644 --- a/contrib/btree_gist/sql/numeric.sql +++ b/contrib/btree_gist/sql/numeric.sql @@ -40,7 +40,11 @@ SELECT count(*) FROM numerictmp WHERE a >= 0 ; SELECT count(*) FROM numerictmp WHERE a > 0 ; +SET client_min_messages = DEBUG1; CREATE INDEX numericidx ON numerictmp USING gist ( a ); +CREATE INDEX numericidx_b ON numerictmp USING gist ( a ) WITH (buffering=on); +DROP INDEX numericidx_b; +RESET client_min_messages; SET enable_seqscan=off; diff --git a/contrib/btree_gist/sql/oid.sql b/contrib/btree_gist/sql/oid.sql index c9358234ce9..bc9ee0cba34 100644 --- a/contrib/btree_gist/sql/oid.sql +++ b/contrib/btree_gist/sql/oid.sql @@ -15,7 +15,11 @@ SELECT count(*) FROM oidtmp WHERE oid >= 17; SELECT count(*) FROM oidtmp WHERE oid > 17; +SET client_min_messages = DEBUG1; CREATE INDEX oididx ON oidtmp USING gist ( oid ); +CREATE INDEX oididx_b ON oidtmp USING gist ( oid ) WITH (buffering=on); +DROP INDEX oididx_b; +RESET client_min_messages; SET enable_seqscan=off; diff --git a/contrib/btree_gist/sql/text.sql b/contrib/btree_gist/sql/text.sql index 46597e731d6..52705a216d1 100644 --- a/contrib/btree_gist/sql/text.sql +++ b/contrib/btree_gist/sql/text.sql @@ -17,7 +17,11 @@ SELECT count(*) FROM texttmp WHERE a >= '31b0'; SELECT count(*) FROM texttmp WHERE a > '31b0'; +SET client_min_messages = DEBUG1; CREATE INDEX textidx ON texttmp USING GIST ( a ); +CREATE INDEX textidx_b ON texttmp USING GIST ( a ) WITH (buffering=on); +DROP INDEX textidx_b; +RESET client_min_messages; SET enable_seqscan=off; diff --git a/contrib/btree_gist/sql/time.sql b/contrib/btree_gist/sql/time.sql index 6104e7f61c8..61239452131 100644 --- a/contrib/btree_gist/sql/time.sql +++ b/contrib/btree_gist/sql/time.sql @@ -18,7 +18,11 @@ SELECT count(*) FROM timetmp WHERE a > '10:57:11'; SELECT a, a <-> '10:57:11' FROM timetmp ORDER BY a <-> '10:57:11' LIMIT 3; +SET client_min_messages = DEBUG1; CREATE INDEX timeidx ON timetmp USING gist ( a ); +CREATE INDEX timeidx_b ON timetmp USING gist ( a ) WITH (buffering=on); +DROP INDEX timeidx_b; +RESET client_min_messages; SET enable_seqscan=off; diff --git a/contrib/btree_gist/sql/timestamp.sql b/contrib/btree_gist/sql/timestamp.sql index 95effebfc47..66a14f5ae51 100644 --- a/contrib/btree_gist/sql/timestamp.sql +++ b/contrib/btree_gist/sql/timestamp.sql @@ -18,7 +18,11 @@ SELECT count(*) FROM timestamptmp WHERE a > '2004-10-26 08:55:08'; SELECT a, a <-> '2004-10-26 08:55:08' FROM timestamptmp ORDER BY a <-> '2004-10-26 08:55:08' LIMIT 3; +SET client_min_messages = DEBUG1; CREATE INDEX timestampidx ON timestamptmp USING gist ( a ); +CREATE INDEX timestampidx_b ON timestamptmp USING gist ( a ) WITH (buffering=on); +DROP INDEX timestampidx_b; +RESET client_min_messages; SET enable_seqscan=off; diff --git a/contrib/btree_gist/sql/timestamptz.sql b/contrib/btree_gist/sql/timestamptz.sql index f70caa4a649..2a92f63fc4a 100644 --- a/contrib/btree_gist/sql/timestamptz.sql +++ b/contrib/btree_gist/sql/timestamptz.sql @@ -39,7 +39,11 @@ SELECT count(*) FROM timestamptztmp WHERE a > '2018-12-18 10:59:54 GMT+4'; SELECT a, a <-> '2018-12-18 10:59:54 GMT+2' FROM timestamptztmp ORDER BY a <-> '2018-12-18 10:59:54 GMT+2' LIMIT 3; +SET client_min_messages = DEBUG1; CREATE INDEX timestamptzidx ON timestamptztmp USING gist ( a ); +CREATE INDEX timestamptzidx_b ON timestamptztmp USING gist ( a ) WITH (buffering=on); +DROP INDEX timestamptzidx_b; +RESET client_min_messages; SET enable_seqscan=off; diff --git a/contrib/btree_gist/sql/timetz.sql b/contrib/btree_gist/sql/timetz.sql index 2fb725db747..bc79d134b8f 100644 --- a/contrib/btree_gist/sql/timetz.sql +++ b/contrib/btree_gist/sql/timetz.sql @@ -42,7 +42,11 @@ INSERT INTO timetzcmp (r_id,a) SELECT 25,count(*) FROM timetztmp WHERE a > '07: +SET client_min_messages = DEBUG1; CREATE INDEX timetzidx ON timetztmp USING gist ( a ); +CREATE INDEX timetzidx_b ON timetztmp USING gist ( a ) WITH (buffering=on); +DROP INDEX timetzidx_b; +RESET client_min_messages; SET enable_seqscan=off; diff --git a/contrib/btree_gist/sql/uuid.sql b/contrib/btree_gist/sql/uuid.sql index 3f7ad764e2d..7771bc0d828 100644 --- a/contrib/btree_gist/sql/uuid.sql +++ b/contrib/btree_gist/sql/uuid.sql @@ -16,7 +16,11 @@ SELECT count(*) FROM uuidtmp WHERE a >= '55e65ca2-4136-4a4b-ba78-cd3fe4678203'; SELECT count(*) FROM uuidtmp WHERE a > '55e65ca2-4136-4a4b-ba78-cd3fe4678203'; +SET client_min_messages = DEBUG1; CREATE INDEX uuididx ON uuidtmp USING gist ( a ); +CREATE INDEX uuididx_b ON uuidtmp USING gist ( a ) WITH (buffering=on); +DROP INDEX uuididx_b; +RESET client_min_messages; SET enable_seqscan=off; diff --git a/contrib/btree_gist/sql/varbit.sql b/contrib/btree_gist/sql/varbit.sql index e2a33b5a1b0..6d8243572bf 100644 --- a/contrib/btree_gist/sql/varbit.sql +++ b/contrib/btree_gist/sql/varbit.sql @@ -16,7 +16,11 @@ SELECT count(*) FROM varbittmp WHERE a >= '1110100111010'; SELECT count(*) FROM varbittmp WHERE a > '1110100111010'; +SET client_min_messages = DEBUG1; CREATE INDEX varbitidx ON varbittmp USING GIST ( a ); +CREATE INDEX varbitidx_b ON varbittmp USING GIST ( a ) WITH (buffering=on); +DROP INDEX varbitidx_b; +RESET client_min_messages; SET enable_seqscan=off; diff --git a/contrib/btree_gist/sql/varchar.sql b/contrib/btree_gist/sql/varchar.sql index 8087a17704e..59b77e0983c 100644 --- a/contrib/btree_gist/sql/varchar.sql +++ b/contrib/btree_gist/sql/varchar.sql @@ -16,7 +16,11 @@ SELECT count(*) FROM vchartmp WHERE a >= '31b0'::varchar(32); SELECT count(*) FROM vchartmp WHERE a > '31b0'::varchar(32); +SET client_min_messages = DEBUG1; CREATE INDEX vcharidx ON vchartmp USING GIST ( text(a) ); +CREATE INDEX vcharidx_b ON vchartmp USING GIST ( text(a) ) WITH (buffering=on); +DROP INDEX vcharidx_b; +RESET client_min_messages; SET enable_seqscan=off; |