mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-08-27 20:07:20 +02:00
Improve inefficient regexes in vacuumdb TAP test.
The regexes used in 102_vacuumdb_stages.pl to check the postmaster log
for expected output contained several places with ".*.*", which is
underdetermined and can cause exponential runtime growth in Perl's regex
matcher (since it's not bright enough not to waste time seeing whether
different splits of the same substring would allow a match). We were
fortunate that the amount of text in the postmaster log was generally not
enough to make the runtime go to the moon; although commit 6271fceb8
had
been on the hairy edge of an obvious problem, thanks to its increasing the
default log verbosity to DEBUG1. Experimentation shows that anyone who
tried to run this test case with an even higher log verbosity would have
been in for serious pain. But even at default logging level, fixing this
saves several hundred ms on my workstation, more on slower buildfarm
members.
Remove the extra ".*"s, restoring more-or-less-linear matching speed.
Back-patch to 9.4 where the test case was added, mostly in case anyone
tries to do related debugging in a back branch.
Discussion: https://postgr.es/m/32459.1525657786@sss.pgh.pa.us
This commit is contained in:
parent
2f895f784f
commit
36784e9147
@ -10,26 +10,26 @@ $node->start;
|
||||
|
||||
$node->issues_sql_like(
|
||||
[ 'vacuumdb', '--analyze-in-stages', 'postgres' ],
|
||||
qr/.*statement:\ SET\ default_statistics_target=1;\ SET\ vacuum_cost_delay=0;
|
||||
.*statement:\ ANALYZE.*
|
||||
qr/statement:\ SET\ default_statistics_target=1;\ SET\ vacuum_cost_delay=0;
|
||||
.*statement:\ ANALYZE
|
||||
.*statement:\ SET\ default_statistics_target=10;\ RESET\ vacuum_cost_delay;
|
||||
.*statement:\ ANALYZE.*
|
||||
.*statement:\ ANALYZE
|
||||
.*statement:\ RESET\ default_statistics_target;
|
||||
.*statement:\ ANALYZE/sx,
|
||||
'analyze three times');
|
||||
|
||||
$node->issues_sql_like(
|
||||
[ 'vacuumdb', '--analyze-in-stages', '--all' ],
|
||||
qr/.*statement:\ SET\ default_statistics_target=1;\ SET\ vacuum_cost_delay=0;
|
||||
.*statement:\ ANALYZE.*
|
||||
qr/statement:\ SET\ default_statistics_target=1;\ SET\ vacuum_cost_delay=0;
|
||||
.*statement:\ ANALYZE
|
||||
.*statement:\ SET\ default_statistics_target=1;\ SET\ vacuum_cost_delay=0;
|
||||
.*statement:\ ANALYZE.*
|
||||
.*statement:\ ANALYZE
|
||||
.*statement:\ SET\ default_statistics_target=10;\ RESET\ vacuum_cost_delay;
|
||||
.*statement:\ ANALYZE.*
|
||||
.*statement:\ ANALYZE
|
||||
.*statement:\ SET\ default_statistics_target=10;\ RESET\ vacuum_cost_delay;
|
||||
.*statement:\ ANALYZE.*
|
||||
.*statement:\ ANALYZE
|
||||
.*statement:\ RESET\ default_statistics_target;
|
||||
.*statement:\ ANALYZE.*
|
||||
.*statement:\ ANALYZE
|
||||
.*statement:\ RESET\ default_statistics_target;
|
||||
.*statement:\ ANALYZE/sx,
|
||||
'analyze more than one database in stages');
|
||||
|
Loading…
Reference in New Issue
Block a user