Re: parallel.c is not marked as test covered - Mailing list pgsql-hackers

From Clément Prévost
Subject Re: parallel.c is not marked as test covered
Date
Msg-id CABaKae_HuYzzt9Q7BTdj1f_=5QuPrrPCBsn0R4y3JrBH0z5uWA@mail.gmail.com
Whole thread Raw
In response to Re: parallel.c is not marked as test covered  (Andres Freund <andres@anarazel.de>)
Responses Re: parallel.c is not marked as test covered  (Noah Misch <noah@leadboat.com>)
Re: parallel.c is not marked as test covered  (Noah Misch <noah@leadboat.com>)
List pgsql-hackers
On Mon, May 9, 2016 at 4:50 PM Andres Freund <andres@anarazel.de> wrote:
I think it's a good idea to run a force-parallel run on some buildfarm
members. But I'm rather convinced that the core tests run by all animals
need some minimal coverage of parallel queries. Both because otherwise
it'll be hard to get some coverage of unusual platforms, and because
it's imo something rather relevant to test during development.
Good point. 

After some experiments, I found out that, for my setup (9b7bfc3a88ef7b), a parallel seq scan is used given both parallel_setup_cost and parallel_tuple_cost are set to 0 and given that the table is at least 3 times as large as the biggest test table tenk1.

The attached patch
 is a regression test using this method that is reasonably small and fast to run. I also hid the workers count from the explain output when costs are disabled as suggested by Tom Lane and Robert Haas on this same thread (http://www.postgresql.org/message-id/CA+TgmobBQS4ss3+CwoZOKgbsBqKfRndwc=hLiALAep5aXQCTDA@mail.gmail.com).

Testing under these conditions does not test the planner job at all but at least some parallel code can be run on the build farm and the test suite gets 2643 more lines and 188 more function covered.

I don't know however if this test will be reliable on other platforms, some more feedback is needed here.
Attachment

pgsql-hackers by date:

Previous
From: Álvaro Hernández Tortosa
Date:
Subject: Re: 10.0
Next
From: Oleg Bartunov
Date:
Subject: Re: Just-in-time compiling things (was: asynchronous and vectorized execution)