From 0efad73f3e4450f268c4eb7a18f25bd79e43ddde Mon Sep 17 00:00:00 2001 From: Brian Fraser Date: Wed, 6 Mar 2013 12:52:17 -0300 Subject: [PATCH] Rearrange mysql options so that --defaults-file is always first, and remove default: localhost from pt-ms and pt-stalk, since parse_options.sh deals with defaults + config files for mysql options poorly --- bin/pt-mysql-summary | 4 ++-- bin/pt-stalk | 19 +++++++++++++++++-- lib/bash/mysql_options.sh | 16 ++++++++++++++++ 3 files changed, 35 insertions(+), 4 deletions(-) diff --git a/bin/pt-mysql-summary b/bin/pt-mysql-summary index ad829b41..4233722d 100755 --- a/bin/pt-mysql-summary +++ b/bin/pt-mysql-summary @@ -2422,7 +2422,7 @@ main() { trap sigtrap HUP INT TERM local MYSQL_ARGS="$(mysql_options)" - EXT_ARGV="$EXT_ARGV $MYSQL_ARGS" + EXT_ARGV="$(arrange_mysql_options "$EXT_ARGV $MYSQL_ARGS")" # Check if mysql and mysqldump are there, otherwise bail out early. # But don't if they passed in --read-samples, since we don't need @@ -2980,7 +2980,7 @@ pathname. =item --host -short form: -h; type: string; default: localhost +short form: -h; type: string Host to connect to. diff --git a/bin/pt-stalk b/bin/pt-stalk index 2f84c500..6d916814 100755 --- a/bin/pt-stalk +++ b/bin/pt-stalk @@ -486,6 +486,21 @@ mysql_options() { echo $MYSQL_ARGS } +arrange_mysql_options() { + local opts="$1" + + local rearranged="" + for opt in $opts; do + if [ "$(echo $opt | awk -F= '{print $1}')" = "--defaults-file" ]; then + rearranged="$opt $rearranged" + else + rearranged="$rearranged $opt" + fi + done + + echo "$rearranged" +} + # ########################################################################### # End mysql_options package # ########################################################################### @@ -1388,7 +1403,7 @@ if [ "${0##*/}" = "$TOOL" ] \ fi MYSQL_ARGS="$(mysql_options)" - EXT_ARGV="$EXT_ARGV $MYSQL_ARGS" + EXT_ARGV="$(arrange_mysql_options "$EXT_ARGV $MYSQL_ARGS")" # Check that mysql and mysqladmin are in PATH. If not, we're # already dead in the water, so don't bother with cmd line opts, @@ -1935,7 +1950,7 @@ pathname. =item --host -short form: -h; type: string; default: localhost +short form: -h; type: string Host to connect to. diff --git a/lib/bash/mysql_options.sh b/lib/bash/mysql_options.sh index a3db9ffd..c248bd1f 100644 --- a/lib/bash/mysql_options.sh +++ b/lib/bash/mysql_options.sh @@ -47,6 +47,22 @@ mysql_options() { echo $MYSQL_ARGS } +# This basically makes sure that --defaults-file comes first +arrange_mysql_options() { + local opts="$1" + + local rearranged="" + for opt in $opts; do + if [ "$(echo $opt | awk -F= '{print $1}')" = "--defaults-file" ]; then + rearranged="$opt $rearranged" + else + rearranged="$rearranged $opt" + fi + done + + echo "$rearranged" +} + # ########################################################################### # End mysql_options package # ###########################################################################