mirror of https://github.com/postgres/postgres
Jeff Davis, with minor adjustments by me.pull/1/head
parent
3491520986
commit
90a391c645
@ -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'); |
@ -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'); |
Loading…
Reference in new issue