From e7f9c2f967dc39dde19f6191e3bc287d845c6b5d Mon Sep 17 00:00:00 2001 From: Sveta Smirnova Date: Thu, 7 Dec 2023 21:53:58 +0300 Subject: [PATCH] PT-2083 - Pt-archiver --charset option is not working for MySQL8.0 - Run util/update-modules --- bin/pt-archiver | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/bin/pt-archiver b/bin/pt-archiver index 3e14ba7a..3f304d3d 100755 --- a/bin/pt-archiver +++ b/bin/pt-archiver @@ -2100,11 +2100,29 @@ sub check_table { } my ($dbh, $db, $tbl) = @args{@required_args}; my $q = $self->{Quoter} || 'Quoter'; + $self->{check_table_error} = undef; + + + my $lctn_sql = 'SELECT @@lower_case_table_names'; + PTDEBUG && _d($lctn_sql); + + my $lower_case_table_names; + eval { ($lower_case_table_names) = $dbh->selectrow_array($lctn_sql); }; + if ( $EVAL_ERROR ) { + PTDEBUG && _d($EVAL_ERROR); + $self->{check_table_error} = $EVAL_ERROR; + return 0; + } + + PTDEBUG && _d("lower_case_table_names=$lower_case_table_names"); + if ($lower_case_table_names > 0) { + PTDEBUG && _d("MySQL uses case-insensitive lookup, converting '$tbl' to lowercase"); + $tbl = lc $tbl; + } + my $db_tbl = $q->quote($db, $tbl); PTDEBUG && _d('Checking', $db_tbl); - $self->{check_table_error} = undef; - my $sql = "SHOW TABLES FROM " . $q->quote($db) . ' LIKE ' . $q->literal_like($tbl); PTDEBUG && _d($sql);