diff --git a/bin/pt-variable-advisor b/bin/pt-variable-advisor index 000b7e7e..5c3fd5bd 100755 --- a/bin/pt-variable-advisor +++ b/bin/pt-variable-advisor @@ -2259,6 +2259,10 @@ sub get_rules { id => 'concurrent_insert', code => sub { my ( %args ) = @_; + if ( $args{variables}->{concurrent_insert} + && $args{variables}->{concurrent_insert} =~ m/[^\d]/ ) { + return $args{variables}->{concurrent_insert} eq 'ALWAYS' ? 1 : 0; + } return _var_gt($args{variables}->{concurrent_insert}, 1); }, }, diff --git a/lib/VariableAdvisorRules.pm b/lib/VariableAdvisorRules.pm index eccbff63..86ac033a 100644 --- a/lib/VariableAdvisorRules.pm +++ b/lib/VariableAdvisorRules.pm @@ -56,6 +56,13 @@ sub get_rules { id => 'concurrent_insert', code => sub { my ( %args ) = @_; + # MySQL 5.5 has named values. + # http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html + # https://bugs.launchpad.net/percona-toolkit/+bug/898138 + if ( $args{variables}->{concurrent_insert} + && $args{variables}->{concurrent_insert} =~ m/[^\d]/ ) { + return $args{variables}->{concurrent_insert} eq 'ALWAYS' ? 1 : 0; + } return _var_gt($args{variables}->{concurrent_insert}, 1); }, }, diff --git a/t/lib/VariableAdvisorRules.t b/t/lib/VariableAdvisorRules.t index 4147ef78..63092478 100644 --- a/t/lib/VariableAdvisorRules.t +++ b/t/lib/VariableAdvisorRules.t @@ -9,7 +9,7 @@ BEGIN { use strict; use warnings FATAL => 'all'; use English qw(-no_match_vars); -use Test::More tests => 80; +use Test::More tests => 83; use PodParser; use AdvisorRules; @@ -64,6 +64,18 @@ my @cases = ( vars => [qw(concurrent_insert 2)], advice => [qw(concurrent_insert)], }, + { name => "concurrent insert", + vars => [qw(concurrent_insert NEVER)], + advice => [qw()], + }, + { name => "concurrent insert", + vars => [qw(concurrent_insert AUTO)], + advice => [qw()], + }, + { name => "concurrent insert", + vars => [qw(concurrent_insert ALWAYS)], + advice => [qw(concurrent_insert)], + }, { name => "connect timeout", vars => [qw(connect_timeout 11)], advice => [qw(connect_timeout)],