mirror of
https://github.com/percona/percona-toolkit.git
synced 2025-09-10 05:00:45 +00:00
PT-1707 Updated DSNParser in all apps
This commit is contained in:
@@ -2379,7 +2379,7 @@ sub parse {
|
|||||||
foreach my $key ( keys %$opts ) {
|
foreach my $key ( keys %$opts ) {
|
||||||
PTDEBUG && _d('Finding value for', $key);
|
PTDEBUG && _d('Finding value for', $key);
|
||||||
$final_props{$key} = $given_props{$key};
|
$final_props{$key} = $given_props{$key};
|
||||||
if ( !defined $final_props{$key}
|
if ( !defined $final_props{$key}
|
||||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||||
{
|
{
|
||||||
$final_props{$key} = $prev->{$key};
|
$final_props{$key} = $prev->{$key};
|
||||||
@@ -2546,6 +2546,7 @@ sub get_dbh {
|
|||||||
|
|
||||||
if ( $cxn_string =~ m/mysql/i ) {
|
if ( $cxn_string =~ m/mysql/i ) {
|
||||||
my $sql;
|
my $sql;
|
||||||
|
|
||||||
if ( my ($charset) = $cxn_string =~ m/charset=([\w]+)/ ) {
|
if ( my ($charset) = $cxn_string =~ m/charset=([\w]+)/ ) {
|
||||||
$sql = qq{/*!40101 SET NAMES "$charset"*/};
|
$sql = qq{/*!40101 SET NAMES "$charset"*/};
|
||||||
PTDEBUG && _d($dbh, $sql);
|
PTDEBUG && _d($dbh, $sql);
|
||||||
@@ -2586,6 +2587,28 @@ sub get_dbh {
|
|||||||
. ": $EVAL_ERROR";
|
. ": $EVAL_ERROR";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||||
|
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||||
|
$dbh->{mysql_enable_utf8} = 1;
|
||||||
|
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||||
|
"Setting: SET NAMES $character_set_server";
|
||||||
|
PTDEBUG && _d($msg);
|
||||||
|
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
PTDEBUG && _d('DBH info: ',
|
PTDEBUG && _d('DBH info: ',
|
||||||
$dbh,
|
$dbh,
|
||||||
|
@@ -1945,7 +1945,7 @@ sub parse {
|
|||||||
foreach my $key ( keys %$opts ) {
|
foreach my $key ( keys %$opts ) {
|
||||||
PTDEBUG && _d('Finding value for', $key);
|
PTDEBUG && _d('Finding value for', $key);
|
||||||
$final_props{$key} = $given_props{$key};
|
$final_props{$key} = $given_props{$key};
|
||||||
if ( !defined $final_props{$key}
|
if ( !defined $final_props{$key}
|
||||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||||
{
|
{
|
||||||
$final_props{$key} = $prev->{$key};
|
$final_props{$key} = $prev->{$key};
|
||||||
@@ -2153,6 +2153,28 @@ sub get_dbh {
|
|||||||
. ": $EVAL_ERROR";
|
. ": $EVAL_ERROR";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||||
|
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||||
|
$dbh->{mysql_enable_utf8} = 1;
|
||||||
|
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||||
|
"Setting: SET NAMES $character_set_server";
|
||||||
|
PTDEBUG && _d($msg);
|
||||||
|
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
PTDEBUG && _d('DBH info: ',
|
PTDEBUG && _d('DBH info: ',
|
||||||
$dbh,
|
$dbh,
|
||||||
|
@@ -2289,7 +2289,7 @@ sub parse {
|
|||||||
foreach my $key ( keys %$opts ) {
|
foreach my $key ( keys %$opts ) {
|
||||||
PTDEBUG && _d('Finding value for', $key);
|
PTDEBUG && _d('Finding value for', $key);
|
||||||
$final_props{$key} = $given_props{$key};
|
$final_props{$key} = $given_props{$key};
|
||||||
if ( !defined $final_props{$key}
|
if ( !defined $final_props{$key}
|
||||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||||
{
|
{
|
||||||
$final_props{$key} = $prev->{$key};
|
$final_props{$key} = $prev->{$key};
|
||||||
@@ -2497,6 +2497,28 @@ sub get_dbh {
|
|||||||
. ": $EVAL_ERROR";
|
. ": $EVAL_ERROR";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||||
|
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||||
|
$dbh->{mysql_enable_utf8} = 1;
|
||||||
|
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||||
|
"Setting: SET NAMES $character_set_server";
|
||||||
|
PTDEBUG && _d($msg);
|
||||||
|
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
PTDEBUG && _d('DBH info: ',
|
PTDEBUG && _d('DBH info: ',
|
||||||
$dbh,
|
$dbh,
|
||||||
|
@@ -766,7 +766,7 @@ sub parse {
|
|||||||
foreach my $key ( keys %$opts ) {
|
foreach my $key ( keys %$opts ) {
|
||||||
PTDEBUG && _d('Finding value for', $key);
|
PTDEBUG && _d('Finding value for', $key);
|
||||||
$final_props{$key} = $given_props{$key};
|
$final_props{$key} = $given_props{$key};
|
||||||
if ( !defined $final_props{$key}
|
if ( !defined $final_props{$key}
|
||||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||||
{
|
{
|
||||||
$final_props{$key} = $prev->{$key};
|
$final_props{$key} = $prev->{$key};
|
||||||
@@ -974,6 +974,28 @@ sub get_dbh {
|
|||||||
. ": $EVAL_ERROR";
|
. ": $EVAL_ERROR";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||||
|
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||||
|
$dbh->{mysql_enable_utf8} = 1;
|
||||||
|
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||||
|
"Setting: SET NAMES $character_set_server";
|
||||||
|
PTDEBUG && _d($msg);
|
||||||
|
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
PTDEBUG && _d('DBH info: ',
|
PTDEBUG && _d('DBH info: ',
|
||||||
$dbh,
|
$dbh,
|
||||||
|
24
bin/pt-find
24
bin/pt-find
@@ -177,7 +177,7 @@ sub parse {
|
|||||||
foreach my $key ( keys %$opts ) {
|
foreach my $key ( keys %$opts ) {
|
||||||
PTDEBUG && _d('Finding value for', $key);
|
PTDEBUG && _d('Finding value for', $key);
|
||||||
$final_props{$key} = $given_props{$key};
|
$final_props{$key} = $given_props{$key};
|
||||||
if ( !defined $final_props{$key}
|
if ( !defined $final_props{$key}
|
||||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||||
{
|
{
|
||||||
$final_props{$key} = $prev->{$key};
|
$final_props{$key} = $prev->{$key};
|
||||||
@@ -385,6 +385,28 @@ sub get_dbh {
|
|||||||
. ": $EVAL_ERROR";
|
. ": $EVAL_ERROR";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||||
|
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||||
|
$dbh->{mysql_enable_utf8} = 1;
|
||||||
|
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||||
|
"Setting: SET NAMES $character_set_server";
|
||||||
|
PTDEBUG && _d($msg);
|
||||||
|
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
PTDEBUG && _d('DBH info: ',
|
PTDEBUG && _d('DBH info: ',
|
||||||
$dbh,
|
$dbh,
|
||||||
|
@@ -1441,7 +1441,7 @@ sub parse {
|
|||||||
foreach my $key ( keys %$opts ) {
|
foreach my $key ( keys %$opts ) {
|
||||||
PTDEBUG && _d('Finding value for', $key);
|
PTDEBUG && _d('Finding value for', $key);
|
||||||
$final_props{$key} = $given_props{$key};
|
$final_props{$key} = $given_props{$key};
|
||||||
if ( !defined $final_props{$key}
|
if ( !defined $final_props{$key}
|
||||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||||
{
|
{
|
||||||
$final_props{$key} = $prev->{$key};
|
$final_props{$key} = $prev->{$key};
|
||||||
@@ -1649,6 +1649,28 @@ sub get_dbh {
|
|||||||
. ": $EVAL_ERROR";
|
. ": $EVAL_ERROR";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||||
|
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||||
|
$dbh->{mysql_enable_utf8} = 1;
|
||||||
|
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||||
|
"Setting: SET NAMES $character_set_server";
|
||||||
|
PTDEBUG && _d($msg);
|
||||||
|
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
PTDEBUG && _d('DBH info: ',
|
PTDEBUG && _d('DBH info: ',
|
||||||
$dbh,
|
$dbh,
|
||||||
|
@@ -2742,7 +2742,7 @@ sub parse {
|
|||||||
foreach my $key ( keys %$opts ) {
|
foreach my $key ( keys %$opts ) {
|
||||||
PTDEBUG && _d('Finding value for', $key);
|
PTDEBUG && _d('Finding value for', $key);
|
||||||
$final_props{$key} = $given_props{$key};
|
$final_props{$key} = $given_props{$key};
|
||||||
if ( !defined $final_props{$key}
|
if ( !defined $final_props{$key}
|
||||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||||
{
|
{
|
||||||
$final_props{$key} = $prev->{$key};
|
$final_props{$key} = $prev->{$key};
|
||||||
@@ -2882,7 +2882,7 @@ sub get_dbh {
|
|||||||
my $dbh;
|
my $dbh;
|
||||||
my $tries = 2;
|
my $tries = 2;
|
||||||
while ( !$dbh && $tries-- ) {
|
while ( !$dbh && $tries-- ) {
|
||||||
PTDEBUG && _d($cxn_string, ' ', $user, ' ', $pass,
|
PTDEBUG && _d($cxn_string, ' ', $user, ' ', $pass,
|
||||||
join(', ', map { "$_=>$defaults->{$_}" } keys %$defaults ));
|
join(', ', map { "$_=>$defaults->{$_}" } keys %$defaults ));
|
||||||
|
|
||||||
$dbh = eval { DBI->connect($cxn_string, $user, $pass, $defaults) };
|
$dbh = eval { DBI->connect($cxn_string, $user, $pass, $defaults) };
|
||||||
@@ -2950,6 +2950,28 @@ sub get_dbh {
|
|||||||
. ": $EVAL_ERROR";
|
. ": $EVAL_ERROR";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||||
|
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||||
|
$dbh->{mysql_enable_utf8} = 1;
|
||||||
|
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||||
|
"Setting: SET NAMES $character_set_server";
|
||||||
|
PTDEBUG && _d($msg);
|
||||||
|
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
PTDEBUG && _d('DBH info: ',
|
PTDEBUG && _d('DBH info: ',
|
||||||
$dbh,
|
$dbh,
|
||||||
@@ -3058,7 +3080,7 @@ sub set_vars {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub _d {
|
sub _d {
|
||||||
|
@@ -187,7 +187,7 @@ sub parse {
|
|||||||
foreach my $key ( keys %$opts ) {
|
foreach my $key ( keys %$opts ) {
|
||||||
PTDEBUG && _d('Finding value for', $key);
|
PTDEBUG && _d('Finding value for', $key);
|
||||||
$final_props{$key} = $given_props{$key};
|
$final_props{$key} = $given_props{$key};
|
||||||
if ( !defined $final_props{$key}
|
if ( !defined $final_props{$key}
|
||||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||||
{
|
{
|
||||||
$final_props{$key} = $prev->{$key};
|
$final_props{$key} = $prev->{$key};
|
||||||
@@ -395,6 +395,28 @@ sub get_dbh {
|
|||||||
. ": $EVAL_ERROR";
|
. ": $EVAL_ERROR";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||||
|
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||||
|
$dbh->{mysql_enable_utf8} = 1;
|
||||||
|
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||||
|
"Setting: SET NAMES $character_set_server";
|
||||||
|
PTDEBUG && _d($msg);
|
||||||
|
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
PTDEBUG && _d('DBH info: ',
|
PTDEBUG && _d('DBH info: ',
|
||||||
$dbh,
|
$dbh,
|
||||||
|
24
bin/pt-kill
24
bin/pt-kill
@@ -1949,7 +1949,7 @@ sub parse {
|
|||||||
foreach my $key ( keys %$opts ) {
|
foreach my $key ( keys %$opts ) {
|
||||||
PTDEBUG && _d('Finding value for', $key);
|
PTDEBUG && _d('Finding value for', $key);
|
||||||
$final_props{$key} = $given_props{$key};
|
$final_props{$key} = $given_props{$key};
|
||||||
if ( !defined $final_props{$key}
|
if ( !defined $final_props{$key}
|
||||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||||
{
|
{
|
||||||
$final_props{$key} = $prev->{$key};
|
$final_props{$key} = $prev->{$key};
|
||||||
@@ -2157,6 +2157,28 @@ sub get_dbh {
|
|||||||
. ": $EVAL_ERROR";
|
. ": $EVAL_ERROR";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||||
|
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||||
|
$dbh->{mysql_enable_utf8} = 1;
|
||||||
|
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||||
|
"Setting: SET NAMES $character_set_server";
|
||||||
|
PTDEBUG && _d($msg);
|
||||||
|
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
PTDEBUG && _d('DBH info: ',
|
PTDEBUG && _d('DBH info: ',
|
||||||
$dbh,
|
$dbh,
|
||||||
|
@@ -2407,6 +2407,28 @@ sub get_dbh {
|
|||||||
. ": $EVAL_ERROR";
|
. ": $EVAL_ERROR";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||||
|
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||||
|
$dbh->{mysql_enable_utf8} = 1;
|
||||||
|
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||||
|
"Setting: SET NAMES $character_set_server";
|
||||||
|
PTDEBUG && _d($msg);
|
||||||
|
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
PTDEBUG && _d('DBH info: ',
|
PTDEBUG && _d('DBH info: ',
|
||||||
$dbh,
|
$dbh,
|
||||||
|
@@ -855,7 +855,7 @@ sub parse {
|
|||||||
foreach my $key ( keys %$opts ) {
|
foreach my $key ( keys %$opts ) {
|
||||||
PTDEBUG && _d('Finding value for', $key);
|
PTDEBUG && _d('Finding value for', $key);
|
||||||
$final_props{$key} = $given_props{$key};
|
$final_props{$key} = $given_props{$key};
|
||||||
if ( !defined $final_props{$key}
|
if ( !defined $final_props{$key}
|
||||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||||
{
|
{
|
||||||
$final_props{$key} = $prev->{$key};
|
$final_props{$key} = $prev->{$key};
|
||||||
@@ -1063,6 +1063,28 @@ sub get_dbh {
|
|||||||
. ": $EVAL_ERROR";
|
. ": $EVAL_ERROR";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||||
|
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||||
|
$dbh->{mysql_enable_utf8} = 1;
|
||||||
|
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||||
|
"Setting: SET NAMES $character_set_server";
|
||||||
|
PTDEBUG && _d($msg);
|
||||||
|
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
PTDEBUG && _d('DBH info: ',
|
PTDEBUG && _d('DBH info: ',
|
||||||
$dbh,
|
$dbh,
|
||||||
|
@@ -1221,7 +1221,7 @@ sub parse {
|
|||||||
foreach my $key ( keys %$opts ) {
|
foreach my $key ( keys %$opts ) {
|
||||||
PTDEBUG && _d('Finding value for', $key);
|
PTDEBUG && _d('Finding value for', $key);
|
||||||
$final_props{$key} = $given_props{$key};
|
$final_props{$key} = $given_props{$key};
|
||||||
if ( !defined $final_props{$key}
|
if ( !defined $final_props{$key}
|
||||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||||
{
|
{
|
||||||
$final_props{$key} = $prev->{$key};
|
$final_props{$key} = $prev->{$key};
|
||||||
@@ -1361,7 +1361,7 @@ sub get_dbh {
|
|||||||
my $dbh;
|
my $dbh;
|
||||||
my $tries = 2;
|
my $tries = 2;
|
||||||
while ( !$dbh && $tries-- ) {
|
while ( !$dbh && $tries-- ) {
|
||||||
PTDEBUG && _d($cxn_string, ' ', $user, ' ', $pass,
|
PTDEBUG && _d($cxn_string, ' ', $user, ' ', $pass,
|
||||||
join(', ', map { "$_=>$defaults->{$_}" } keys %$defaults ));
|
join(', ', map { "$_=>$defaults->{$_}" } keys %$defaults ));
|
||||||
|
|
||||||
$dbh = eval { DBI->connect($cxn_string, $user, $pass, $defaults) };
|
$dbh = eval { DBI->connect($cxn_string, $user, $pass, $defaults) };
|
||||||
@@ -1429,6 +1429,28 @@ sub get_dbh {
|
|||||||
. ": $EVAL_ERROR";
|
. ": $EVAL_ERROR";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||||
|
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||||
|
$dbh->{mysql_enable_utf8} = 1;
|
||||||
|
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||||
|
"Setting: SET NAMES $character_set_server";
|
||||||
|
PTDEBUG && _d($msg);
|
||||||
|
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
PTDEBUG && _d('DBH info: ',
|
PTDEBUG && _d('DBH info: ',
|
||||||
$dbh,
|
$dbh,
|
||||||
@@ -1537,7 +1559,7 @@ sub set_vars {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub _d {
|
sub _d {
|
||||||
|
@@ -1942,7 +1942,7 @@ sub parse {
|
|||||||
foreach my $key ( keys %$opts ) {
|
foreach my $key ( keys %$opts ) {
|
||||||
PTDEBUG && _d('Finding value for', $key);
|
PTDEBUG && _d('Finding value for', $key);
|
||||||
$final_props{$key} = $given_props{$key};
|
$final_props{$key} = $given_props{$key};
|
||||||
if ( !defined $final_props{$key}
|
if ( !defined $final_props{$key}
|
||||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||||
{
|
{
|
||||||
$final_props{$key} = $prev->{$key};
|
$final_props{$key} = $prev->{$key};
|
||||||
@@ -2150,6 +2150,28 @@ sub get_dbh {
|
|||||||
. ": $EVAL_ERROR";
|
. ": $EVAL_ERROR";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||||
|
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||||
|
$dbh->{mysql_enable_utf8} = 1;
|
||||||
|
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||||
|
"Setting: SET NAMES $character_set_server";
|
||||||
|
PTDEBUG && _d($msg);
|
||||||
|
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
PTDEBUG && _d('DBH info: ',
|
PTDEBUG && _d('DBH info: ',
|
||||||
$dbh,
|
$dbh,
|
||||||
|
@@ -1877,7 +1877,7 @@ sub parse {
|
|||||||
foreach my $key ( keys %$opts ) {
|
foreach my $key ( keys %$opts ) {
|
||||||
PTDEBUG && _d('Finding value for', $key);
|
PTDEBUG && _d('Finding value for', $key);
|
||||||
$final_props{$key} = $given_props{$key};
|
$final_props{$key} = $given_props{$key};
|
||||||
if ( !defined $final_props{$key}
|
if ( !defined $final_props{$key}
|
||||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||||
{
|
{
|
||||||
$final_props{$key} = $prev->{$key};
|
$final_props{$key} = $prev->{$key};
|
||||||
@@ -2085,6 +2085,28 @@ sub get_dbh {
|
|||||||
. ": $EVAL_ERROR";
|
. ": $EVAL_ERROR";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||||
|
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||||
|
$dbh->{mysql_enable_utf8} = 1;
|
||||||
|
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||||
|
"Setting: SET NAMES $character_set_server";
|
||||||
|
PTDEBUG && _d($msg);
|
||||||
|
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
PTDEBUG && _d('DBH info: ',
|
PTDEBUG && _d('DBH info: ',
|
||||||
$dbh,
|
$dbh,
|
||||||
|
@@ -2288,7 +2288,7 @@ sub parse {
|
|||||||
foreach my $key ( keys %$opts ) {
|
foreach my $key ( keys %$opts ) {
|
||||||
PTDEBUG && _d('Finding value for', $key);
|
PTDEBUG && _d('Finding value for', $key);
|
||||||
$final_props{$key} = $given_props{$key};
|
$final_props{$key} = $given_props{$key};
|
||||||
if ( !defined $final_props{$key}
|
if ( !defined $final_props{$key}
|
||||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||||
{
|
{
|
||||||
$final_props{$key} = $prev->{$key};
|
$final_props{$key} = $prev->{$key};
|
||||||
@@ -2496,6 +2496,28 @@ sub get_dbh {
|
|||||||
. ": $EVAL_ERROR";
|
. ": $EVAL_ERROR";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||||
|
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||||
|
$dbh->{mysql_enable_utf8} = 1;
|
||||||
|
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||||
|
"Setting: SET NAMES $character_set_server";
|
||||||
|
PTDEBUG && _d($msg);
|
||||||
|
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
PTDEBUG && _d('DBH info: ',
|
PTDEBUG && _d('DBH info: ',
|
||||||
$dbh,
|
$dbh,
|
||||||
|
@@ -1477,7 +1477,7 @@ sub parse {
|
|||||||
foreach my $key ( keys %$opts ) {
|
foreach my $key ( keys %$opts ) {
|
||||||
PTDEBUG && _d('Finding value for', $key);
|
PTDEBUG && _d('Finding value for', $key);
|
||||||
$final_props{$key} = $given_props{$key};
|
$final_props{$key} = $given_props{$key};
|
||||||
if ( !defined $final_props{$key}
|
if ( !defined $final_props{$key}
|
||||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||||
{
|
{
|
||||||
$final_props{$key} = $prev->{$key};
|
$final_props{$key} = $prev->{$key};
|
||||||
@@ -1685,6 +1685,28 @@ sub get_dbh {
|
|||||||
. ": $EVAL_ERROR";
|
. ": $EVAL_ERROR";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||||
|
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||||
|
$dbh->{mysql_enable_utf8} = 1;
|
||||||
|
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||||
|
"Setting: SET NAMES $character_set_server";
|
||||||
|
PTDEBUG && _d($msg);
|
||||||
|
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
PTDEBUG && _d('DBH info: ',
|
PTDEBUG && _d('DBH info: ',
|
||||||
$dbh,
|
$dbh,
|
||||||
|
@@ -2110,7 +2110,7 @@ sub parse {
|
|||||||
foreach my $key ( keys %$opts ) {
|
foreach my $key ( keys %$opts ) {
|
||||||
PTDEBUG && _d('Finding value for', $key);
|
PTDEBUG && _d('Finding value for', $key);
|
||||||
$final_props{$key} = $given_props{$key};
|
$final_props{$key} = $given_props{$key};
|
||||||
if ( !defined $final_props{$key}
|
if ( !defined $final_props{$key}
|
||||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||||
{
|
{
|
||||||
$final_props{$key} = $prev->{$key};
|
$final_props{$key} = $prev->{$key};
|
||||||
@@ -2137,7 +2137,6 @@ sub parse {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$self->{dsn_props} = \%final_props;
|
|
||||||
return \%final_props;
|
return \%final_props;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2319,18 +2318,26 @@ sub get_dbh {
|
|||||||
. ": $EVAL_ERROR";
|
. ": $EVAL_ERROR";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
if ($self->{dsn_props}->{D} && $self->{dsn_props}->{t}) {
|
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||||
PTDEBUG && _d("DSN has a schema and table: $self->{dsn_props}->{D}.$self->{dsn_props}->{t}");
|
if ($EVAL_ERROR) {
|
||||||
PTDEBUG && _d("Trying to set the default charset for the connection");
|
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||||
my (undef, $create_table) = eval { $dbh->selectrow_array("SHOW CREATE TABLE $self->{dsn_props}->{D}.$self->{dsn_props}->{t}") };
|
}
|
||||||
|
|
||||||
if ($create_table && $create_table =~ m/DEFAULT CHARSET=(\S+)\s*/) {
|
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||||
PTDEBUG && _d("Detected table's character set: $1");
|
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||||
PTDEBUG && _d("Executing: SET NAMES '$1'");
|
$dbh->{mysql_enable_utf8} = 1;
|
||||||
$dbh->do("SET NAMES '$1'");
|
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||||
} else {
|
"Setting: SET NAMES $character_set_server";
|
||||||
PTDEBUG && _d("Cannot get the default character set for the table");
|
PTDEBUG && _d($msg);
|
||||||
|
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -129,7 +129,7 @@ sub parse {
|
|||||||
foreach my $key ( keys %$opts ) {
|
foreach my $key ( keys %$opts ) {
|
||||||
PTDEBUG && _d('Finding value for', $key);
|
PTDEBUG && _d('Finding value for', $key);
|
||||||
$final_props{$key} = $given_props{$key};
|
$final_props{$key} = $given_props{$key};
|
||||||
if ( !defined $final_props{$key}
|
if ( !defined $final_props{$key}
|
||||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||||
{
|
{
|
||||||
$final_props{$key} = $prev->{$key};
|
$final_props{$key} = $prev->{$key};
|
||||||
@@ -337,6 +337,28 @@ sub get_dbh {
|
|||||||
. ": $EVAL_ERROR";
|
. ": $EVAL_ERROR";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||||
|
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||||
|
$dbh->{mysql_enable_utf8} = 1;
|
||||||
|
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||||
|
"Setting: SET NAMES $character_set_server";
|
||||||
|
PTDEBUG && _d($msg);
|
||||||
|
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
PTDEBUG && _d('DBH info: ',
|
PTDEBUG && _d('DBH info: ',
|
||||||
$dbh,
|
$dbh,
|
||||||
|
@@ -852,7 +852,7 @@ sub parse {
|
|||||||
foreach my $key ( keys %$opts ) {
|
foreach my $key ( keys %$opts ) {
|
||||||
PTDEBUG && _d('Finding value for', $key);
|
PTDEBUG && _d('Finding value for', $key);
|
||||||
$final_props{$key} = $given_props{$key};
|
$final_props{$key} = $given_props{$key};
|
||||||
if ( !defined $final_props{$key}
|
if ( !defined $final_props{$key}
|
||||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||||
{
|
{
|
||||||
$final_props{$key} = $prev->{$key};
|
$final_props{$key} = $prev->{$key};
|
||||||
@@ -1060,6 +1060,28 @@ sub get_dbh {
|
|||||||
. ": $EVAL_ERROR";
|
. ": $EVAL_ERROR";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||||
|
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||||
|
$dbh->{mysql_enable_utf8} = 1;
|
||||||
|
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||||
|
"Setting: SET NAMES $character_set_server";
|
||||||
|
PTDEBUG && _d($msg);
|
||||||
|
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
PTDEBUG && _d('DBH info: ',
|
PTDEBUG && _d('DBH info: ',
|
||||||
$dbh,
|
$dbh,
|
||||||
|
@@ -1946,7 +1946,7 @@ sub parse {
|
|||||||
foreach my $key ( keys %$opts ) {
|
foreach my $key ( keys %$opts ) {
|
||||||
PTDEBUG && _d('Finding value for', $key);
|
PTDEBUG && _d('Finding value for', $key);
|
||||||
$final_props{$key} = $given_props{$key};
|
$final_props{$key} = $given_props{$key};
|
||||||
if ( !defined $final_props{$key}
|
if ( !defined $final_props{$key}
|
||||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||||
{
|
{
|
||||||
$final_props{$key} = $prev->{$key};
|
$final_props{$key} = $prev->{$key};
|
||||||
@@ -2154,6 +2154,28 @@ sub get_dbh {
|
|||||||
. ": $EVAL_ERROR";
|
. ": $EVAL_ERROR";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||||
|
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||||
|
$dbh->{mysql_enable_utf8} = 1;
|
||||||
|
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||||
|
"Setting: SET NAMES $character_set_server";
|
||||||
|
PTDEBUG && _d($msg);
|
||||||
|
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
PTDEBUG && _d('DBH info: ',
|
PTDEBUG && _d('DBH info: ',
|
||||||
$dbh,
|
$dbh,
|
||||||
|
@@ -1894,7 +1894,7 @@ sub parse {
|
|||||||
foreach my $key ( keys %$opts ) {
|
foreach my $key ( keys %$opts ) {
|
||||||
PTDEBUG && _d('Finding value for', $key);
|
PTDEBUG && _d('Finding value for', $key);
|
||||||
$final_props{$key} = $given_props{$key};
|
$final_props{$key} = $given_props{$key};
|
||||||
if ( !defined $final_props{$key}
|
if ( !defined $final_props{$key}
|
||||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||||
{
|
{
|
||||||
$final_props{$key} = $prev->{$key};
|
$final_props{$key} = $prev->{$key};
|
||||||
@@ -2102,6 +2102,28 @@ sub get_dbh {
|
|||||||
. ": $EVAL_ERROR";
|
. ": $EVAL_ERROR";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||||
|
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||||
|
$dbh->{mysql_enable_utf8} = 1;
|
||||||
|
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||||
|
"Setting: SET NAMES $character_set_server";
|
||||||
|
PTDEBUG && _d($msg);
|
||||||
|
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||||
|
if ($EVAL_ERROR) {
|
||||||
|
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
PTDEBUG && _d('DBH info: ',
|
PTDEBUG && _d('DBH info: ',
|
||||||
$dbh,
|
$dbh,
|
||||||
|
@@ -263,7 +263,13 @@ sub find_slave_hosts {
|
|||||||
|
|
||||||
sub _find_slaves_by_processlist {
|
sub _find_slaves_by_processlist {
|
||||||
my ( $self, $dsn_parser, $dbh, $dsn ) = @_;
|
my ( $self, $dsn_parser, $dbh, $dsn ) = @_;
|
||||||
|
my @connected_slaves = $self->get_connected_slaves($dbh);
|
||||||
|
my @slaves = $self->_process_slaves_list($dsn_parser, $dsn, \@connected_slaves);
|
||||||
|
return @slaves;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub _process_slaves_list {
|
||||||
|
my ($self, $dsn_parser, $dsn, $connected_slaves) = @_;
|
||||||
my @slaves = map {
|
my @slaves = map {
|
||||||
my $slave = $dsn_parser->parse("h=$_", $dsn);
|
my $slave = $dsn_parser->parse("h=$_", $dsn);
|
||||||
$slave->{source} = 'processlist';
|
$slave->{source} = 'processlist';
|
||||||
@@ -275,8 +281,11 @@ sub _find_slaves_by_processlist {
|
|||||||
if ( $host eq 'localhost' ) {
|
if ( $host eq 'localhost' ) {
|
||||||
$host = '127.0.0.1'; # Replication never uses sockets.
|
$host = '127.0.0.1'; # Replication never uses sockets.
|
||||||
}
|
}
|
||||||
|
if ($host =~ m/::/) {
|
||||||
|
$host = '['.$host.']';
|
||||||
|
}
|
||||||
$host;
|
$host;
|
||||||
} $self->get_connected_slaves($dbh);
|
} @$connected_slaves;
|
||||||
|
|
||||||
return @slaves;
|
return @slaves;
|
||||||
}
|
}
|
||||||
|
@@ -335,7 +335,6 @@ $res = $ms->wait_for_master(
|
|||||||
slave_dbh => $slaves[0],
|
slave_dbh => $slaves[0],
|
||||||
timeout => 10,
|
timeout => 10,
|
||||||
);
|
);
|
||||||
warn "res->{result}: $res->{result}";
|
|
||||||
|
|
||||||
ok($res->{result} >= 0, 'Wait was successful');
|
ok($res->{result} >= 0, 'Wait was successful');
|
||||||
|
|
||||||
@@ -868,6 +867,33 @@ SKIP: {
|
|||||||
|
|
||||||
$sb->stop_sandbox(qw(chan_master1 chan_master2 chan_slave1));
|
$sb->stop_sandbox(qw(chan_master1 chan_master2 chan_slave1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
my $connected_slaves = [
|
||||||
|
{
|
||||||
|
command => 'Binlog Dump',
|
||||||
|
db => undef,
|
||||||
|
host => '2001:db8:1::242:ac11:3:53902',
|
||||||
|
id => 7,
|
||||||
|
info => undef,
|
||||||
|
rows_examined => 0,
|
||||||
|
rows_sent => 0,
|
||||||
|
state => 'Master has sent all binlog to slave; waiting for more updates',
|
||||||
|
time => 80,
|
||||||
|
user => 'root'
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
my @g = $ms->_process_slaves_list ($dp, $dsn, $connected_slaves);
|
||||||
|
is (
|
||||||
|
scalar @g,
|
||||||
|
1,
|
||||||
|
"1 slave (IPv6) detected",
|
||||||
|
);
|
||||||
|
is (
|
||||||
|
$g[0]->{h},
|
||||||
|
"[2001:db8:1::242:ac11:3]",
|
||||||
|
"Brackets were added to IPv6 detected slave host",
|
||||||
|
);
|
||||||
# #############################################################################
|
# #############################################################################
|
||||||
# Done.
|
# Done.
|
||||||
# #############################################################################
|
# #############################################################################
|
||||||
|
Reference in New Issue
Block a user