Hi, On Tue, Feb 08, 2022 at 12:38:46PM +0900, Michael Paquier wrote: > > While testing installcheck with various server configurations to see > how the main regression test suites could break, I found that loading > pg_stat_statements into the backend is enough to break installcheck > as compute_query_id = auto, the default, lets the decision to compute > query IDs to pg_stat_statements itself. In short, loading > pg_stat_statements breaks EXPLAIN outputs of any SQL-based regression > test.
Indeed, that's unfortunate but that's also a known behavior. > Running installcheck on existing installations is a popular sanity > check, as much as is enabling pg_stat_statements by default, so it > seems to me that we'd better disable compute_query_id by default in > the databases created for the sake of the regression tests, enabling > it only in places where it is relevant. We do that in explain.sql for > a test with compute_query_id, but pg_stat_statements does not do > that. I agree that enabling pg_stat_statements is something common when you're actually going to use your instance, I'm not sure that it also applies to environment for running regression tests. > I'd like to suggest a fix for that, by tweaking the tests of > pg_stat_statements to use compute_query_id = auto, so as we would > still stress the code paths where the module takes the decision to > compute query IDs, while the default regression databases would > disable it. Please note that this also fixes the case of any > out-of-core modules that have EXPLAIN cases. That's already been discussed in [1] and rejected, as it would also mean losing the ability to have pg_stat_statements (or any similar extension) coverage using the regression tests. I personally rely on regression tests for such custom extensions quite a lot, so I'm still -1 on that. [1] https://www.postgresql.org/message-id/flat/1634283396.372373993%40f75.i.mail.ru