]> granicus.if.org Git - postgresql/commit
Improve contrib/bloom regression test using code coverage info.
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 10 Apr 2016 17:12:24 +0000 (13:12 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 10 Apr 2016 17:12:24 +0000 (13:12 -0400)
commitcf223c3bf5ba16232147c66b5fef4037aafe747c
tree3f801d8612eb6922f2344e0c18966b06c654be39
parentbd905a0d0416628b4aef153463c1f5e5b80b3e96
Improve contrib/bloom regression test using code coverage info.

Originally, this test created a 100000-row test table, which made it
run rather slowly compared to other contrib tests.  Investigation with
gcov showed that we got no further improvement in code coverage after
the first 700 or so rows, making the large table 99% a waste of time.
Cut it back to 2000 rows to fix the runtime problem and still leave
some headroom for testing behaviors that may appear later.

A closer look at the gcov results showed that the main coverage
omissions in contrib/bloom occurred because the test never filled more
than one entry in the notFullPage array; which is unsurprising because
it exercised index cleanup only in the scenario of complete table
deletion, allowing every page in the index to become deleted rather
than not-full.  Add testing that allows the not-full path to be
exercised as well.

Also, test the amvalidate function, because blvalidate.c had zero
coverage without that, and besides it's a good idea to check for
mistakes in the bloom opclass definitions.
contrib/bloom/expected/bloom.out
contrib/bloom/sql/bloom.sql