From 4b6fe95c6c209bf6579df2a604dadab9fdfe5886 Mon Sep 17 00:00:00 2001 From: Daniel Nichter Date: Thu, 24 May 2012 14:52:11 -0600 Subject: [PATCH] Handle MySQL 5.5 named values for concurrent_insert. --- bin/pt-variable-advisor | 4 ++++ lib/VariableAdvisorRules.pm | 7 +++++++ t/lib/VariableAdvisorRules.t | 14 +++++++++++++- 3 files changed, 24 insertions(+), 1 deletion(-) 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)],