PT-2083 - Pt-archiver --charset option is not working for MySQL8.0

- Changed logic, introduced by commit 1d1c13f
- Added test case
This commit is contained in:
Sveta Smirnova
2023-12-07 21:51:47 +03:00
parent 9b347dd466
commit cadf35abc4
4 changed files with 108 additions and 4 deletions

View File

@@ -6368,11 +6368,11 @@ sub main {
}
my ($dbh_version) = $dbh->selectrow_array("SELECT version()");
#if ($dbh_version =~ m/^(\d+\.\d+)\.\d+.*/ && $1 ge '8.0' && !$o->get('charset')) {
if ($dbh_version =~ m/^(\d+\.\d+)\.\d+.*/ && $1 ge '8.0') {
if ( $dbh_version =~ m/^(\d+\.\d+)\.\d+.*/ && $1 ge '8.0' && !$got_charset ) {
PTDEBUG && _d("MySQL 8.0+ detected and charset was not specified.\n Setting character_set_client = utf8mb4 and --charset=utf8");
$dbh->do('/*!40101 SET character_set_connection = utf8mb4 */;');
$o->set('charset', 'utf8');
} elsif ( $got_charset ) {
$dbh->do("/*!40101 SET character_set_connection = ${got_charset} */;");
}
$table->{dbh} = $dbh;