mirror of
https://github.com/postgres/postgres.git
synced 2025-12-16 16:42:29 +03:00
CREATE INDEX ... INCLUDING (column[, ...])
Now indexes (but only B-tree for now) can contain "extra" column(s) which doesn't participate in index structure, they are just stored in leaf tuples. It allows to use index only scan by using single index instead of two or more indexes. Author: Anastasia Lubennikova with minor editorializing by me Reviewers: David Rowley, Peter Geoghegan, Jeff Janes
This commit is contained in:
@@ -721,6 +721,26 @@ INSERT INTO func_index_heap VALUES('ABCD', 'EF');
|
||||
-- but this shouldn't:
|
||||
INSERT INTO func_index_heap VALUES('QWERTY');
|
||||
|
||||
--
|
||||
-- Test unique index with included columns
|
||||
--
|
||||
CREATE TABLE covering_index_heap (f1 int, f2 int, f3 text);
|
||||
CREATE UNIQUE INDEX covering_index_index on covering_index_heap (f1,f2) INCLUDING(f3);
|
||||
|
||||
INSERT INTO covering_index_heap VALUES(1,1,'AAA');
|
||||
INSERT INTO covering_index_heap VALUES(1,2,'AAA');
|
||||
-- this should fail because of unique index on f1,f2:
|
||||
INSERT INTO covering_index_heap VALUES(1,2,'BBB');
|
||||
-- and this shouldn't:
|
||||
INSERT INTO covering_index_heap VALUES(1,4,'AAA');
|
||||
-- Try to build index on table that already contains data
|
||||
CREATE UNIQUE INDEX covering_pkey on covering_index_heap (f1,f2) INCLUDING(f3);
|
||||
-- Try to use existing covering index as primary key
|
||||
ALTER TABLE covering_index_heap ADD CONSTRAINT covering_pkey PRIMARY KEY USING INDEX
|
||||
covering_pkey;
|
||||
DROP TABLE covering_index_heap;
|
||||
|
||||
|
||||
--
|
||||
-- Also try building functional, expressional, and partial indexes on
|
||||
-- tables that already contain data.
|
||||
|
||||
Reference in New Issue
Block a user