diff options
Diffstat (limited to 'contrib/btree_gist')
-rw-r--r-- | contrib/btree_gist/Makefile | 6 | ||||
-rw-r--r-- | contrib/btree_gist/btree_gist--1.7--1.8.sql | 87 | ||||
-rw-r--r-- | contrib/btree_gist/btree_gist.c | 27 | ||||
-rw-r--r-- | contrib/btree_gist/btree_gist.control | 2 | ||||
-rw-r--r-- | contrib/btree_gist/expected/stratnum.out | 13 | ||||
-rw-r--r-- | contrib/btree_gist/expected/without_overlaps.out | 92 | ||||
-rw-r--r-- | contrib/btree_gist/meson.build | 3 | ||||
-rw-r--r-- | contrib/btree_gist/sql/stratnum.sql | 3 | ||||
-rw-r--r-- | contrib/btree_gist/sql/without_overlaps.sql | 53 |
9 files changed, 3 insertions, 283 deletions
diff --git a/contrib/btree_gist/Makefile b/contrib/btree_gist/Makefile index 7ac2df26c10..073dcc745c4 100644 --- a/contrib/btree_gist/Makefile +++ b/contrib/btree_gist/Makefile @@ -33,14 +33,12 @@ EXTENSION = btree_gist DATA = btree_gist--1.0--1.1.sql \ btree_gist--1.1--1.2.sql btree_gist--1.2.sql btree_gist--1.2--1.3.sql \ btree_gist--1.3--1.4.sql btree_gist--1.4--1.5.sql \ - btree_gist--1.5--1.6.sql btree_gist--1.6--1.7.sql \ - btree_gist--1.7--1.8.sql + btree_gist--1.5--1.6.sql btree_gist--1.6--1.7.sql PGFILEDESC = "btree_gist - B-tree equivalent GiST operator classes" REGRESS = init int2 int4 int8 float4 float8 cash oid timestamp timestamptz \ time timetz date interval macaddr macaddr8 inet cidr text varchar char \ - bytea bit varbit numeric uuid not_equal enum bool partitions \ - stratnum without_overlaps + bytea bit varbit numeric uuid not_equal enum bool partitions SHLIB_LINK += $(filter -lm, $(LIBS)) diff --git a/contrib/btree_gist/btree_gist--1.7--1.8.sql b/contrib/btree_gist/btree_gist--1.7--1.8.sql deleted file mode 100644 index 307bfe574b0..00000000000 --- a/contrib/btree_gist/btree_gist--1.7--1.8.sql +++ /dev/null @@ -1,87 +0,0 @@ -/* contrib/btree_gist/btree_gist--1.7--1.8.sql */ - --- complain if script is sourced in psql, rather than via CREATE EXTENSION -\echo Use "ALTER EXTENSION btree_gist UPDATE TO '1.8'" to load this file. \quit - -CREATE FUNCTION gist_stratnum_btree(smallint) -RETURNS smallint -AS 'MODULE_PATHNAME' -LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT; - -ALTER OPERATOR FAMILY gist_oid_ops USING gist ADD - FUNCTION 12 (oid, oid) gist_stratnum_btree (int2) ; - -ALTER OPERATOR FAMILY gist_int2_ops USING gist ADD - FUNCTION 12 (int2, int2) gist_stratnum_btree (int2) ; - -ALTER OPERATOR FAMILY gist_int4_ops USING gist ADD - FUNCTION 12 (int4, int4) gist_stratnum_btree (int2) ; - -ALTER OPERATOR FAMILY gist_int8_ops USING gist ADD - FUNCTION 12 (int8, int8) gist_stratnum_btree (int2) ; - -ALTER OPERATOR FAMILY gist_float4_ops USING gist ADD - FUNCTION 12 (float4, float4) gist_stratnum_btree (int2) ; - -ALTER OPERATOR FAMILY gist_float8_ops USING gist ADD - FUNCTION 12 (float8, float8) gist_stratnum_btree (int2) ; - -ALTER OPERATOR FAMILY gist_timestamp_ops USING gist ADD - FUNCTION 12 (timestamp, timestamp) gist_stratnum_btree (int2) ; - -ALTER OPERATOR FAMILY gist_timestamptz_ops USING gist ADD - FUNCTION 12 (timestamptz, timestamptz) gist_stratnum_btree (int2) ; - -ALTER OPERATOR FAMILY gist_time_ops USING gist ADD - FUNCTION 12 (time, time) gist_stratnum_btree (int2) ; - -ALTER OPERATOR FAMILY gist_date_ops USING gist ADD - FUNCTION 12 (date, date) gist_stratnum_btree (int2) ; - -ALTER OPERATOR FAMILY gist_interval_ops USING gist ADD - FUNCTION 12 (interval, interval) gist_stratnum_btree (int2) ; - -ALTER OPERATOR FAMILY gist_cash_ops USING gist ADD - FUNCTION 12 (money, money) gist_stratnum_btree (int2) ; - -ALTER OPERATOR FAMILY gist_macaddr_ops USING gist ADD - FUNCTION 12 (macaddr, macaddr) gist_stratnum_btree (int2) ; - -ALTER OPERATOR FAMILY gist_text_ops USING gist ADD - FUNCTION 12 (text, text) gist_stratnum_btree (int2) ; - -ALTER OPERATOR FAMILY gist_bpchar_ops USING gist ADD - FUNCTION 12 (bpchar, bpchar) gist_stratnum_btree (int2) ; - -ALTER OPERATOR FAMILY gist_bytea_ops USING gist ADD - FUNCTION 12 (bytea, bytea) gist_stratnum_btree (int2) ; - -ALTER OPERATOR FAMILY gist_numeric_ops USING gist ADD - FUNCTION 12 (numeric, numeric) gist_stratnum_btree (int2) ; - -ALTER OPERATOR FAMILY gist_bit_ops USING gist ADD - FUNCTION 12 (bit, bit) gist_stratnum_btree (int2) ; - -ALTER OPERATOR FAMILY gist_vbit_ops USING gist ADD - FUNCTION 12 (varbit, varbit) gist_stratnum_btree (int2) ; - -ALTER OPERATOR FAMILY gist_inet_ops USING gist ADD - FUNCTION 12 (inet, inet) gist_stratnum_btree (int2) ; - -ALTER OPERATOR FAMILY gist_cidr_ops USING gist ADD - FUNCTION 12 (cidr, cidr) gist_stratnum_btree (int2) ; - -ALTER OPERATOR FAMILY gist_timetz_ops USING gist ADD - FUNCTION 12 (timetz, timetz) gist_stratnum_btree (int2) ; - -ALTER OPERATOR FAMILY gist_uuid_ops USING gist ADD - FUNCTION 12 (uuid, uuid) gist_stratnum_btree (int2) ; - -ALTER OPERATOR FAMILY gist_macaddr8_ops USING gist ADD - FUNCTION 12 (macaddr8, macaddr8) gist_stratnum_btree (int2) ; - -ALTER OPERATOR FAMILY gist_enum_ops USING gist ADD - FUNCTION 12 (anyenum, anyenum) gist_stratnum_btree (int2) ; - -ALTER OPERATOR FAMILY gist_bool_ops USING gist ADD - FUNCTION 12 (bool, bool) gist_stratnum_btree (int2) ; diff --git a/contrib/btree_gist/btree_gist.c b/contrib/btree_gist/btree_gist.c index 5fd4cce27d0..92520aedae1 100644 --- a/contrib/btree_gist/btree_gist.c +++ b/contrib/btree_gist/btree_gist.c @@ -3,7 +3,6 @@ */ #include "postgres.h" -#include "access/stratnum.h" #include "utils/builtins.h" PG_MODULE_MAGIC; @@ -11,7 +10,6 @@ PG_MODULE_MAGIC; PG_FUNCTION_INFO_V1(gbt_decompress); PG_FUNCTION_INFO_V1(gbtreekey_in); PG_FUNCTION_INFO_V1(gbtreekey_out); -PG_FUNCTION_INFO_V1(gist_stratnum_btree); /************************************************** * In/Out for keys @@ -53,28 +51,3 @@ gbt_decompress(PG_FUNCTION_ARGS) { PG_RETURN_POINTER(PG_GETARG_POINTER(0)); } - -/* - * Returns the btree number for supported operators, otherwise invalid. - */ -Datum -gist_stratnum_btree(PG_FUNCTION_ARGS) -{ - StrategyNumber strat = PG_GETARG_UINT16(0); - - switch (strat) - { - case RTEqualStrategyNumber: - PG_RETURN_UINT16(BTEqualStrategyNumber); - case RTLessStrategyNumber: - PG_RETURN_UINT16(BTLessStrategyNumber); - case RTLessEqualStrategyNumber: - PG_RETURN_UINT16(BTLessEqualStrategyNumber); - case RTGreaterStrategyNumber: - PG_RETURN_UINT16(BTGreaterStrategyNumber); - case RTGreaterEqualStrategyNumber: - PG_RETURN_UINT16(BTGreaterEqualStrategyNumber); - default: - PG_RETURN_UINT16(InvalidStrategy); - } -} diff --git a/contrib/btree_gist/btree_gist.control b/contrib/btree_gist/btree_gist.control index abf66538f32..fa9171a80a2 100644 --- a/contrib/btree_gist/btree_gist.control +++ b/contrib/btree_gist/btree_gist.control @@ -1,6 +1,6 @@ # btree_gist extension comment = 'support for indexing common datatypes in GiST' -default_version = '1.8' +default_version = '1.7' module_pathname = '$libdir/btree_gist' relocatable = true trusted = true diff --git a/contrib/btree_gist/expected/stratnum.out b/contrib/btree_gist/expected/stratnum.out deleted file mode 100644 index 9d80c6590d9..00000000000 --- a/contrib/btree_gist/expected/stratnum.out +++ /dev/null @@ -1,13 +0,0 @@ --- test stratnum support func -SELECT gist_stratnum_btree(3::smallint); - gist_stratnum_btree ---------------------- - 0 -(1 row) - -SELECT gist_stratnum_btree(18::smallint); - gist_stratnum_btree ---------------------- - 3 -(1 row) - diff --git a/contrib/btree_gist/expected/without_overlaps.out b/contrib/btree_gist/expected/without_overlaps.out deleted file mode 100644 index 18856900ded..00000000000 --- a/contrib/btree_gist/expected/without_overlaps.out +++ /dev/null @@ -1,92 +0,0 @@ --- Core must test WITHOUT OVERLAPS --- with an int4range + daterange, --- so here we do some simple tests --- to make sure int + daterange works too, --- since that is the expected use-case. -CREATE TABLE temporal_rng ( - id integer, - valid_at daterange, - CONSTRAINT temporal_rng_pk PRIMARY KEY (id, valid_at WITHOUT OVERLAPS) -); -\d temporal_rng - Table "public.temporal_rng" - Column | Type | Collation | Nullable | Default -----------+-----------+-----------+----------+--------- - id | integer | | not null | - valid_at | daterange | | not null | -Indexes: - "temporal_rng_pk" PRIMARY KEY (id, valid_at WITHOUT OVERLAPS) - -SELECT pg_get_constraintdef(oid) FROM pg_constraint WHERE conname = 'temporal_rng_pk'; - pg_get_constraintdef ---------------------------------------------- - PRIMARY KEY (id, valid_at WITHOUT OVERLAPS) -(1 row) - -SELECT pg_get_indexdef(conindid, 0, true) FROM pg_constraint WHERE conname = 'temporal_rng_pk'; - pg_get_indexdef -------------------------------------------------------------------------------- - CREATE UNIQUE INDEX temporal_rng_pk ON temporal_rng USING gist (id, valid_at) -(1 row) - -INSERT INTO temporal_rng VALUES - (1, '[2000-01-01,2001-01-01)'); --- same key, doesn't overlap: -INSERT INTO temporal_rng VALUES - (1, '[2001-01-01,2002-01-01)'); --- overlaps but different key: -INSERT INTO temporal_rng VALUES - (2, '[2000-01-01,2001-01-01)'); --- should fail: -INSERT INTO temporal_rng VALUES - (1, '[2000-06-01,2001-01-01)'); -ERROR: conflicting key value violates exclusion constraint "temporal_rng_pk" -DETAIL: Key (id, valid_at)=(1, [06-01-2000,01-01-2001)) conflicts with existing key (id, valid_at)=(1, [01-01-2000,01-01-2001)). --- Foreign key -CREATE TABLE temporal_fk_rng2rng ( - id integer, - valid_at daterange, - parent_id integer, - CONSTRAINT temporal_fk_rng2rng_pk PRIMARY KEY (id, valid_at WITHOUT OVERLAPS), - CONSTRAINT temporal_fk_rng2rng_fk FOREIGN KEY (parent_id, PERIOD valid_at) - REFERENCES temporal_rng (id, PERIOD valid_at) -); -\d temporal_fk_rng2rng - Table "public.temporal_fk_rng2rng" - Column | Type | Collation | Nullable | Default ------------+-----------+-----------+----------+--------- - id | integer | | not null | - valid_at | daterange | | not null | - parent_id | integer | | | -Indexes: - "temporal_fk_rng2rng_pk" PRIMARY KEY (id, valid_at WITHOUT OVERLAPS) -Foreign-key constraints: - "temporal_fk_rng2rng_fk" FOREIGN KEY (parent_id, PERIOD valid_at) REFERENCES temporal_rng(id, PERIOD valid_at) - -SELECT pg_get_constraintdef(oid) FROM pg_constraint WHERE conname = 'temporal_fk_rng2rng_fk'; - pg_get_constraintdef ---------------------------------------------------------------------------------------- - FOREIGN KEY (parent_id, PERIOD valid_at) REFERENCES temporal_rng(id, PERIOD valid_at) -(1 row) - --- okay -INSERT INTO temporal_fk_rng2rng VALUES - (1, '[2000-01-01,2001-01-01)', 1); --- okay spanning two parent records: -INSERT INTO temporal_fk_rng2rng VALUES - (2, '[2000-01-01,2002-01-01)', 1); --- key is missing -INSERT INTO temporal_fk_rng2rng VALUES - (3, '[2000-01-01,2001-01-01)', 3); -ERROR: insert or update on table "temporal_fk_rng2rng" violates foreign key constraint "temporal_fk_rng2rng_fk" -DETAIL: Key (parent_id, valid_at)=(3, [01-01-2000,01-01-2001)) is not present in table "temporal_rng". --- key exist but is outside range -INSERT INTO temporal_fk_rng2rng VALUES - (4, '[2001-01-01,2002-01-01)', 2); -ERROR: insert or update on table "temporal_fk_rng2rng" violates foreign key constraint "temporal_fk_rng2rng_fk" -DETAIL: Key (parent_id, valid_at)=(2, [01-01-2001,01-01-2002)) is not present in table "temporal_rng". --- key exist but is partly outside range -INSERT INTO temporal_fk_rng2rng VALUES - (5, '[2000-01-01,2002-01-01)', 2); -ERROR: insert or update on table "temporal_fk_rng2rng" violates foreign key constraint "temporal_fk_rng2rng_fk" -DETAIL: Key (parent_id, valid_at)=(2, [01-01-2000,01-01-2002)) is not present in table "temporal_rng". diff --git a/contrib/btree_gist/meson.build b/contrib/btree_gist/meson.build index 73b1bbf52a6..c88a6ac84ae 100644 --- a/contrib/btree_gist/meson.build +++ b/contrib/btree_gist/meson.build @@ -50,7 +50,6 @@ install_data( 'btree_gist--1.4--1.5.sql', 'btree_gist--1.5--1.6.sql', 'btree_gist--1.6--1.7.sql', - 'btree_gist--1.7--1.8.sql', kwargs: contrib_data_args, ) @@ -90,8 +89,6 @@ tests += { 'enum', 'bool', 'partitions', - 'stratnum', - 'without_overlaps', ], }, } diff --git a/contrib/btree_gist/sql/stratnum.sql b/contrib/btree_gist/sql/stratnum.sql deleted file mode 100644 index f58cdbe93da..00000000000 --- a/contrib/btree_gist/sql/stratnum.sql +++ /dev/null @@ -1,3 +0,0 @@ --- test stratnum support func -SELECT gist_stratnum_btree(3::smallint); -SELECT gist_stratnum_btree(18::smallint); diff --git a/contrib/btree_gist/sql/without_overlaps.sql b/contrib/btree_gist/sql/without_overlaps.sql deleted file mode 100644 index b1b581fcabc..00000000000 --- a/contrib/btree_gist/sql/without_overlaps.sql +++ /dev/null @@ -1,53 +0,0 @@ --- Core must test WITHOUT OVERLAPS --- with an int4range + daterange, --- so here we do some simple tests --- to make sure int + daterange works too, --- since that is the expected use-case. -CREATE TABLE temporal_rng ( - id integer, - valid_at daterange, - CONSTRAINT temporal_rng_pk PRIMARY KEY (id, valid_at WITHOUT OVERLAPS) -); -\d temporal_rng -SELECT pg_get_constraintdef(oid) FROM pg_constraint WHERE conname = 'temporal_rng_pk'; -SELECT pg_get_indexdef(conindid, 0, true) FROM pg_constraint WHERE conname = 'temporal_rng_pk'; - -INSERT INTO temporal_rng VALUES - (1, '[2000-01-01,2001-01-01)'); --- same key, doesn't overlap: -INSERT INTO temporal_rng VALUES - (1, '[2001-01-01,2002-01-01)'); --- overlaps but different key: -INSERT INTO temporal_rng VALUES - (2, '[2000-01-01,2001-01-01)'); --- should fail: -INSERT INTO temporal_rng VALUES - (1, '[2000-06-01,2001-01-01)'); - --- Foreign key -CREATE TABLE temporal_fk_rng2rng ( - id integer, - valid_at daterange, - parent_id integer, - CONSTRAINT temporal_fk_rng2rng_pk PRIMARY KEY (id, valid_at WITHOUT OVERLAPS), - CONSTRAINT temporal_fk_rng2rng_fk FOREIGN KEY (parent_id, PERIOD valid_at) - REFERENCES temporal_rng (id, PERIOD valid_at) -); -\d temporal_fk_rng2rng -SELECT pg_get_constraintdef(oid) FROM pg_constraint WHERE conname = 'temporal_fk_rng2rng_fk'; - --- okay -INSERT INTO temporal_fk_rng2rng VALUES - (1, '[2000-01-01,2001-01-01)', 1); --- okay spanning two parent records: -INSERT INTO temporal_fk_rng2rng VALUES - (2, '[2000-01-01,2002-01-01)', 1); --- key is missing -INSERT INTO temporal_fk_rng2rng VALUES - (3, '[2000-01-01,2001-01-01)', 3); --- key exist but is outside range -INSERT INTO temporal_fk_rng2rng VALUES - (4, '[2001-01-01,2002-01-01)', 2); --- key exist but is partly outside range -INSERT INTO temporal_fk_rng2rng VALUES - (5, '[2000-01-01,2002-01-01)', 2); |