From 6b5d866f7525b250bb4ecb0deffd66531e375143 Mon Sep 17 00:00:00 2001 From: Dan Reif Date: Sun, 10 Jun 2018 21:32:05 +0000 Subject: [PATCH] Remove wildcard from variable sourcing Resolves the issue where `join_buffer%` matches both `join_buffer_size` and `join_buffer_space_limit`, which in turn results in an error like: ``` ./tuning-primer.sh: line 402: export: `2097152': not a valid identifier ``` This was originally necessary because older version of MySQL would use `join_buffer` as the variable instead of `join_buffer_size`. If you are using a version that old, I apologize for breaking your script, but the good news is, you're probably already broken in dozens of other ways running decade-old code, so I don't feel too bad about piling on. --- tuning-primer.sh | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tuning-primer.sh b/tuning-primer.sh index 4c41edd..a07ba2b 100755 --- a/tuning-primer.sh +++ b/tuning-primer.sh @@ -337,8 +337,9 @@ mysql_status () { ######################################################################### mysql_variable () { - local variable=$($mysql -Bse "show /*!50000 global */ variables like $1" | awk '{ print $2 }') - export "$2"=$variable + local variable=$($mysql -Bse "show /*!50000 global */ variables like $1" | awk '{ print $2 }') + echo "'$1' '$2' '$variable'" >&2 + export "$2"=$variable } mysql_variableTSV () { local variable=$($mysql -Bse "show /*!50000 global */ variables like $1" | awk -F \t '{ print $2 }') @@ -821,7 +822,7 @@ check_sort_operations () { mysql_status \'Sort_merge_passes\' sort_merge_passes mysql_status \'Sort_scan\' sort_scan mysql_status \'Sort_range\' sort_range - mysql_variable \'sort_buffer%\' sort_buffer_size + mysql_variable \'sort_buffer_size\' sort_buffer_size mysql_variable \'read_rnd_buffer_size\' read_rnd_buffer_size total_sorts=$(($sort_scan+$sort_range)) @@ -879,7 +880,7 @@ check_join_operations () { mysql_status \'Select_full_join\' select_full_join mysql_status \'Select_range_check\' select_range_check - mysql_variable \'join_buffer%\' join_buffer_size + mysql_variable \'join_buffer_size\' join_buffer_size ## Some 4K is dropped from join_buffer_size adding it back to make sane ## ## handling of human-readable conversion ##