Alvaro Herrera wrote:

> One idea I just had is to somehow add it to src/test/modules/brin, and
> set up the postmaster in that test with autovacuum_naptime=1s.  I'll go
> check how feasible that is.  (By placing it there we could also verify
> that the index does indeed contain the index entries we expect, since it
> has pageinspect available.)

Yeah, this works, as per the attached patch.

-- 
Álvaro Herrera                https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
>From 196bec86e957cc6413d1e4823cb891a0edc192de Mon Sep 17 00:00:00 2001
From: Alvaro Herrera <alvhe...@alvh.no-ip.org>
Date: Sat, 23 Sep 2017 12:56:56 +0200
Subject: [PATCH] Add autovacuum work-items test for BRIN

---
 src/test/modules/brin/Makefile          |  7 ++++--
 src/test/modules/brin/t/01_workitems.pl | 39 +++++++++++++++++++++++++++++++++
 2 files changed, 44 insertions(+), 2 deletions(-)
 create mode 100644 src/test/modules/brin/t/01_workitems.pl

diff --git a/src/test/modules/brin/Makefile b/src/test/modules/brin/Makefile
index dda84c23c7..18c5cafd5e 100644
--- a/src/test/modules/brin/Makefile
+++ b/src/test/modules/brin/Makefile
@@ -16,7 +16,7 @@ include $(top_builddir)/src/Makefile.global
 include $(top_srcdir)/contrib/contrib-global.mk
 endif
 
-check: isolation-check
+check: isolation-check prove-check
 
 isolation-check: | submake-isolation
        $(MKDIR_P) isolation_output
@@ -24,7 +24,10 @@ isolation-check: | submake-isolation
            --outputdir=./isolation_output \
            $(ISOLATIONCHECKS)
 
-.PHONY: check isolation-check
+prove-check:
+       $(prove_check)
+
+.PHONY: check isolation-check prove-check
 
 submake-isolation:
        $(MAKE) -C $(top_builddir)/src/test/isolation all
diff --git a/src/test/modules/brin/t/01_workitems.pl 
b/src/test/modules/brin/t/01_workitems.pl
new file mode 100644
index 0000000000..11c9981d40
--- /dev/null
+++ b/src/test/modules/brin/t/01_workitems.pl
@@ -0,0 +1,39 @@
+# Verify that work items work correctly
+
+use strict;
+use warnings;
+
+use TestLib;
+use Test::More tests => 2;
+use PostgresNode;
+
+my $node = get_new_node('tango');
+$node->init;
+$node->append_conf('postgresql.conf', 'autovacuum_naptime=1s');
+$node->start;
+
+$node->safe_psql('postgres', 'create extension pageinspect');
+
+# Create a table with an autosummarizing BRIN index
+$node->safe_psql('postgres',
+       'create table brin_wi (a int) with (fillfactor = 10);
+        create index brin_wi_idx on brin_wi using brin (a) with 
(pages_per_range=1, autosummarize=on);
+        '
+);
+my $count = $node->safe_psql('postgres',
+       "select count(*) from brin_page_items(get_raw_page('brin_wi_idx', 2), 
'brin_wi_idx'::regclass)"
+);
+is($count, '1', "initial index state is correct");
+
+$node->safe_psql('postgres',
+       'insert into brin_wi select * from generate_series(1, 100)');
+
+$node->poll_query_until('postgres',
+       "select count(*) > 1 from brin_page_items(get_raw_page('brin_wi_idx', 
2), 'brin_wi_idx'::regclass)",
+       't');
+
+$count = $node->safe_psql('postgres',
+       "select count(*) > 1 from brin_page_items(get_raw_page('brin_wi_idx', 
2), 'brin_wi_idx'::regclass)"
+);
+is($count, 't', "index got summarized");
+$node->stop;
-- 
2.11.0

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to