From 41ce96eefde3baa2427404ab42fe19406ff38e7a Mon Sep 17 00:00:00 2001 From: Andrey Borodin Date: Wed, 28 Mar 2018 13:49:51 +0500 Subject: [PATCH 1/3] Tests of covering indexes in amcheck --- contrib/amcheck/expected/check_btree.out | 17 +++++++++++++++++ contrib/amcheck/sql/check_btree.sql | 8 ++++++++ 2 files changed, 25 insertions(+) diff --git a/contrib/amcheck/expected/check_btree.out b/contrib/amcheck/expected/check_btree.out index df3741e2c9..247a082d48 100644 --- a/contrib/amcheck/expected/check_btree.out +++ b/contrib/amcheck/expected/check_btree.out @@ -1,10 +1,13 @@ -- minimal test, basically just verifying that amcheck CREATE TABLE bttest_a(id int8); CREATE TABLE bttest_b(id int8); +CREATE TABLE bttest_c(id int8, payload1 text, payload2 int8); INSERT INTO bttest_a SELECT * FROM generate_series(1, 100000); INSERT INTO bttest_b SELECT * FROM generate_series(100000, 1, -1); +INSERT INTO bttest_c SELECT id, id::text payload1,id payload2 FROM generate_series(1, 100000) id; CREATE INDEX bttest_a_idx ON bttest_a USING btree (id); CREATE INDEX bttest_b_idx ON bttest_b USING btree (id); +CREATE INDEX bttest_c_idx ON bttest_c (id) INCLUDE (payload1, payload2); CREATE ROLE bttest_role; -- verify permissions are checked (error due to function not callable) SET ROLE bttest_role; @@ -85,8 +88,22 @@ WHERE relation = ANY(ARRAY['bttest_a', 'bttest_a_idx', 'bttest_b', 'bttest_b_idx (0 rows) COMMIT; +--check covering index +SELECT bt_index_check('bttest_c_idx'); + bt_index_check +---------------- + +(1 row) + +SELECT bt_index_parent_check('bttest_c_idx'); + bt_index_parent_check +----------------------- + +(1 row) + -- cleanup DROP TABLE bttest_a; DROP TABLE bttest_b; +DROP TABLE bttest_c; DROP OWNED BY bttest_role; -- permissions DROP ROLE bttest_role; diff --git a/contrib/amcheck/sql/check_btree.sql b/contrib/amcheck/sql/check_btree.sql index fd90531027..e8fdd7e805 100644 --- a/contrib/amcheck/sql/check_btree.sql +++ b/contrib/amcheck/sql/check_btree.sql @@ -1,12 +1,15 @@ -- minimal test, basically just verifying that amcheck CREATE TABLE bttest_a(id int8); CREATE TABLE bttest_b(id int8); +CREATE TABLE bttest_c(id int8, payload1 text, payload2 int8); INSERT INTO bttest_a SELECT * FROM generate_series(1, 100000); INSERT INTO bttest_b SELECT * FROM generate_series(100000, 1, -1); +INSERT INTO bttest_c SELECT id, id::text payload1,id payload2 FROM generate_series(1, 100000) id; CREATE INDEX bttest_a_idx ON bttest_a USING btree (id); CREATE INDEX bttest_b_idx ON bttest_b USING btree (id); +CREATE INDEX bttest_c_idx ON bttest_c (id) INCLUDE (payload1, payload2); CREATE ROLE bttest_role; @@ -54,8 +57,13 @@ WHERE relation = ANY(ARRAY['bttest_a', 'bttest_a_idx', 'bttest_b', 'bttest_b_idx AND pid = pg_backend_pid(); COMMIT; +--check covering index +SELECT bt_index_check('bttest_c_idx'); +SELECT bt_index_parent_check('bttest_c_idx'); + -- cleanup DROP TABLE bttest_a; DROP TABLE bttest_b; +DROP TABLE bttest_c; DROP OWNED BY bttest_role; -- permissions DROP ROLE bttest_role; -- 2.14.3 (Apple Git-98)