diff options
author | Robert Haas | 2010-08-03 19:53:20 +0000 |
---|---|---|
committer | Robert Haas | 2010-08-03 19:53:20 +0000 |
commit | 90a391c645774c2606ae4b82f4a07130afdd0a42 (patch) | |
tree | e16ddbe3de23b951e0e7305139d9382737624bdc | |
parent | 349152098654b9b3b2a01d1e207296d888fb5e6e (diff) |
Regression tests for new btree_gist "not equals" support.
Jeff Davis, with minor adjustments by me.
-rw-r--r-- | contrib/btree_gist/Makefile | 4 | ||||
-rw-r--r-- | contrib/btree_gist/expected/not_equal.out | 40 | ||||
-rw-r--r-- | contrib/btree_gist/sql/not_equal.sql | 32 |
3 files changed, 74 insertions, 2 deletions
diff --git a/contrib/btree_gist/Makefile b/contrib/btree_gist/Makefile index 8c779c4d061..3889d947c12 100644 --- a/contrib/btree_gist/Makefile +++ b/contrib/btree_gist/Makefile @@ -1,4 +1,4 @@ -# $PostgreSQL: pgsql/contrib/btree_gist/Makefile,v 1.12 2007/11/10 23:59:50 momjian Exp $ +# $PostgreSQL: pgsql/contrib/btree_gist/Makefile,v 1.13 2010/08/03 19:53:19 rhaas Exp $ MODULE_big = btree_gist @@ -11,7 +11,7 @@ DATA_built = btree_gist.sql DATA = uninstall_btree_gist.sql REGRESS = init int2 int4 int8 float4 float8 cash oid timestamp timestamptz time timetz \ - date interval macaddr inet cidr text varchar char bytea bit varbit numeric + date interval macaddr inet cidr text varchar char bytea bit varbit numeric not_equal ifdef USE_PGXS PG_CONFIG = pg_config diff --git a/contrib/btree_gist/expected/not_equal.out b/contrib/btree_gist/expected/not_equal.out new file mode 100644 index 00000000000..d9b91e2d569 --- /dev/null +++ b/contrib/btree_gist/expected/not_equal.out @@ -0,0 +1,40 @@ +SET enable_seqscan to false; +-- test search for "not equals" +CREATE TABLE test_ne ( + a TIMESTAMP, + b NUMERIC +); +CREATE INDEX test_ne_idx ON test_ne USING gist (a, b); +INSERT INTO test_ne SELECT '2009-01-01', 10.7 FROM generate_series(1,1000); +INSERT INTO test_ne VALUES('2007-02-03', -91.3); +INSERT INTO test_ne VALUES('2011-09-01', 43.7); +INSERT INTO test_ne SELECT '2009-01-01', 10.7 FROM generate_series(1,1000); +EXPLAIN (COSTS OFF) SELECT * FROM test_ne WHERE a <> '2009-01-01' AND b <> 10.7; + QUERY PLAN +------------------------------------------------------------------------------------------------------ + Bitmap Heap Scan on test_ne + Recheck Cond: ((a <> 'Thu Jan 01 00:00:00 2009'::timestamp without time zone) AND (b <> 10.7)) + -> Bitmap Index Scan on test_ne_idx + Index Cond: ((a <> 'Thu Jan 01 00:00:00 2009'::timestamp without time zone) AND (b <> 10.7)) +(4 rows) + +SELECT * FROM test_ne WHERE a <> '2009-01-01' AND b <> 10.7; + a | b +--------------------------+------- + Sat Feb 03 00:00:00 2007 | -91.3 + Thu Sep 01 00:00:00 2011 | 43.7 +(2 rows) + +-- test search for "not equals" using an exclusion constraint +CREATE TABLE zoo ( + cage INTEGER, + animal TEXT, + EXCLUDE USING gist (cage WITH =, animal WITH <>) +); +NOTICE: CREATE TABLE / EXCLUDE will create implicit index "zoo_cage_animal_excl" for table "zoo" +INSERT INTO zoo VALUES(123, 'zebra'); +INSERT INTO zoo VALUES(123, 'zebra'); +INSERT INTO zoo VALUES(123, 'lion'); +ERROR: conflicting key value violates exclusion constraint "zoo_cage_animal_excl" +DETAIL: Key (cage, animal)=(123, lion) conflicts with existing key (cage, animal)=(123, zebra). +INSERT INTO zoo VALUES(124, 'lion'); diff --git a/contrib/btree_gist/sql/not_equal.sql b/contrib/btree_gist/sql/not_equal.sql new file mode 100644 index 00000000000..b1940ef4fe7 --- /dev/null +++ b/contrib/btree_gist/sql/not_equal.sql @@ -0,0 +1,32 @@ + +SET enable_seqscan to false; + +-- test search for "not equals" + +CREATE TABLE test_ne ( + a TIMESTAMP, + b NUMERIC +); +CREATE INDEX test_ne_idx ON test_ne USING gist (a, b); + +INSERT INTO test_ne SELECT '2009-01-01', 10.7 FROM generate_series(1,1000); +INSERT INTO test_ne VALUES('2007-02-03', -91.3); +INSERT INTO test_ne VALUES('2011-09-01', 43.7); +INSERT INTO test_ne SELECT '2009-01-01', 10.7 FROM generate_series(1,1000); + +EXPLAIN (COSTS OFF) SELECT * FROM test_ne WHERE a <> '2009-01-01' AND b <> 10.7; + +SELECT * FROM test_ne WHERE a <> '2009-01-01' AND b <> 10.7; + +-- test search for "not equals" using an exclusion constraint + +CREATE TABLE zoo ( + cage INTEGER, + animal TEXT, + EXCLUDE USING gist (cage WITH =, animal WITH <>) +); + +INSERT INTO zoo VALUES(123, 'zebra'); +INSERT INTO zoo VALUES(123, 'zebra'); +INSERT INTO zoo VALUES(123, 'lion'); +INSERT INTO zoo VALUES(124, 'lion'); |