mirror of
https://github.com/percona/percona-toolkit.git
synced 2025-09-07 21:09:14 +00:00
PT-2264 - pt-query-digest Pipeline process 11 (--output slowlog) caused an error: Wide character
- Updated lib/DSNParser.pm, so it sets binmode to character set utf8 since MySQL 8.0 if character set is not specified in the DSN - Added test case - Run update-modules
This commit is contained in:
@@ -2567,22 +2567,47 @@ sub get_dbh {
|
||||
if ( $cxn_string =~ m/mysql/i ) {
|
||||
my $sql;
|
||||
|
||||
if ( my ($charset) = $cxn_string =~ m/charset=([\w]+)/ ) {
|
||||
my ($charset) = $cxn_string =~ m/charset=([\w]+)/;
|
||||
if ( $charset ) {
|
||||
$sql = qq{/*!40101 SET NAMES "$charset"*/};
|
||||
PTDEBUG && _d($dbh, $sql);
|
||||
eval { $dbh->do($sql) };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Error setting NAMES to $charset: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
else {
|
||||
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;
|
||||
$charset = $character_set_server;
|
||||
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 '$character_set_server'") };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
PTDEBUG && _d('Enabling charset for STDOUT');
|
||||
if ( $charset eq 'utf8' ) {
|
||||
if ( $charset && $charset =~ m/^utf8/ ) {
|
||||
binmode(STDOUT, ':utf8')
|
||||
or die "Can't binmode(STDOUT, ':utf8'): $OS_ERROR";
|
||||
}
|
||||
else {
|
||||
binmode(STDOUT) or die "Can't binmode(STDOUT): $OS_ERROR";
|
||||
}
|
||||
}
|
||||
|
||||
if ( my $vars = $self->prop('set-vars') ) {
|
||||
$self->set_vars($dbh, $vars);
|
||||
@@ -2607,28 +2632,6 @@ sub get_dbh {
|
||||
. ": $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: ',
|
||||
$dbh,
|
||||
|
@@ -2113,22 +2113,47 @@ sub get_dbh {
|
||||
if ( $cxn_string =~ m/mysql/i ) {
|
||||
my $sql;
|
||||
|
||||
if ( my ($charset) = $cxn_string =~ m/charset=([\w]+)/ ) {
|
||||
my ($charset) = $cxn_string =~ m/charset=([\w]+)/;
|
||||
if ( $charset ) {
|
||||
$sql = qq{/*!40101 SET NAMES "$charset"*/};
|
||||
PTDEBUG && _d($dbh, $sql);
|
||||
eval { $dbh->do($sql) };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Error setting NAMES to $charset: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
else {
|
||||
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;
|
||||
$charset = $character_set_server;
|
||||
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 '$character_set_server'") };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
PTDEBUG && _d('Enabling charset for STDOUT');
|
||||
if ( $charset eq 'utf8' ) {
|
||||
if ( $charset && $charset =~ m/^utf8/ ) {
|
||||
binmode(STDOUT, ':utf8')
|
||||
or die "Can't binmode(STDOUT, ':utf8'): $OS_ERROR";
|
||||
}
|
||||
else {
|
||||
binmode(STDOUT) or die "Can't binmode(STDOUT): $OS_ERROR";
|
||||
}
|
||||
}
|
||||
|
||||
if ( my $vars = $self->prop('set-vars') ) {
|
||||
$self->set_vars($dbh, $vars);
|
||||
@@ -2153,28 +2178,6 @@ sub get_dbh {
|
||||
. ": $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: ',
|
||||
$dbh,
|
||||
|
@@ -2457,22 +2457,47 @@ sub get_dbh {
|
||||
if ( $cxn_string =~ m/mysql/i ) {
|
||||
my $sql;
|
||||
|
||||
if ( my ($charset) = $cxn_string =~ m/charset=([\w]+)/ ) {
|
||||
my ($charset) = $cxn_string =~ m/charset=([\w]+)/;
|
||||
if ( $charset ) {
|
||||
$sql = qq{/*!40101 SET NAMES "$charset"*/};
|
||||
PTDEBUG && _d($dbh, $sql);
|
||||
eval { $dbh->do($sql) };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Error setting NAMES to $charset: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
else {
|
||||
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;
|
||||
$charset = $character_set_server;
|
||||
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 '$character_set_server'") };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
PTDEBUG && _d('Enabling charset for STDOUT');
|
||||
if ( $charset eq 'utf8' ) {
|
||||
if ( $charset && $charset =~ m/^utf8/ ) {
|
||||
binmode(STDOUT, ':utf8')
|
||||
or die "Can't binmode(STDOUT, ':utf8'): $OS_ERROR";
|
||||
}
|
||||
else {
|
||||
binmode(STDOUT) or die "Can't binmode(STDOUT): $OS_ERROR";
|
||||
}
|
||||
}
|
||||
|
||||
if ( my $vars = $self->prop('set-vars') ) {
|
||||
$self->set_vars($dbh, $vars);
|
||||
@@ -2497,28 +2522,6 @@ sub get_dbh {
|
||||
. ": $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: ',
|
||||
$dbh,
|
||||
|
@@ -954,22 +954,47 @@ sub get_dbh {
|
||||
if ( $cxn_string =~ m/mysql/i ) {
|
||||
my $sql;
|
||||
|
||||
if ( my ($charset) = $cxn_string =~ m/charset=([\w]+)/ ) {
|
||||
my ($charset) = $cxn_string =~ m/charset=([\w]+)/;
|
||||
if ( $charset ) {
|
||||
$sql = qq{/*!40101 SET NAMES "$charset"*/};
|
||||
PTDEBUG && _d($dbh, $sql);
|
||||
eval { $dbh->do($sql) };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Error setting NAMES to $charset: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
else {
|
||||
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;
|
||||
$charset = $character_set_server;
|
||||
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 '$character_set_server'") };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
PTDEBUG && _d('Enabling charset for STDOUT');
|
||||
if ( $charset eq 'utf8' ) {
|
||||
if ( $charset && $charset =~ m/^utf8/ ) {
|
||||
binmode(STDOUT, ':utf8')
|
||||
or die "Can't binmode(STDOUT, ':utf8'): $OS_ERROR";
|
||||
}
|
||||
else {
|
||||
binmode(STDOUT) or die "Can't binmode(STDOUT): $OS_ERROR";
|
||||
}
|
||||
}
|
||||
|
||||
if ( my $vars = $self->prop('set-vars') ) {
|
||||
$self->set_vars($dbh, $vars);
|
||||
@@ -994,28 +1019,6 @@ sub get_dbh {
|
||||
. ": $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: ',
|
||||
$dbh,
|
||||
|
53
bin/pt-find
53
bin/pt-find
@@ -345,22 +345,47 @@ sub get_dbh {
|
||||
if ( $cxn_string =~ m/mysql/i ) {
|
||||
my $sql;
|
||||
|
||||
if ( my ($charset) = $cxn_string =~ m/charset=([\w]+)/ ) {
|
||||
my ($charset) = $cxn_string =~ m/charset=([\w]+)/;
|
||||
if ( $charset ) {
|
||||
$sql = qq{/*!40101 SET NAMES "$charset"*/};
|
||||
PTDEBUG && _d($dbh, $sql);
|
||||
eval { $dbh->do($sql) };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Error setting NAMES to $charset: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
else {
|
||||
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;
|
||||
$charset = $character_set_server;
|
||||
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 '$character_set_server'") };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
PTDEBUG && _d('Enabling charset for STDOUT');
|
||||
if ( $charset eq 'utf8' ) {
|
||||
if ( $charset && $charset =~ m/^utf8/ ) {
|
||||
binmode(STDOUT, ':utf8')
|
||||
or die "Can't binmode(STDOUT, ':utf8'): $OS_ERROR";
|
||||
}
|
||||
else {
|
||||
binmode(STDOUT) or die "Can't binmode(STDOUT): $OS_ERROR";
|
||||
}
|
||||
}
|
||||
|
||||
if ( my $vars = $self->prop('set-vars') ) {
|
||||
$self->set_vars($dbh, $vars);
|
||||
@@ -385,28 +410,6 @@ sub get_dbh {
|
||||
. ": $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: ',
|
||||
$dbh,
|
||||
|
@@ -1611,22 +1611,47 @@ sub get_dbh {
|
||||
if ( $cxn_string =~ m/mysql/i ) {
|
||||
my $sql;
|
||||
|
||||
if ( my ($charset) = $cxn_string =~ m/charset=([\w]+)/ ) {
|
||||
my ($charset) = $cxn_string =~ m/charset=([\w]+)/;
|
||||
if ( $charset ) {
|
||||
$sql = qq{/*!40101 SET NAMES "$charset"*/};
|
||||
PTDEBUG && _d($dbh, $sql);
|
||||
eval { $dbh->do($sql) };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Error setting NAMES to $charset: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
else {
|
||||
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;
|
||||
$charset = $character_set_server;
|
||||
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 '$character_set_server'") };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
PTDEBUG && _d('Enabling charset for STDOUT');
|
||||
if ( $charset eq 'utf8' ) {
|
||||
if ( $charset && $charset =~ m/^utf8/ ) {
|
||||
binmode(STDOUT, ':utf8')
|
||||
or die "Can't binmode(STDOUT, ':utf8'): $OS_ERROR";
|
||||
}
|
||||
else {
|
||||
binmode(STDOUT) or die "Can't binmode(STDOUT): $OS_ERROR";
|
||||
}
|
||||
}
|
||||
|
||||
if ( my $vars = $self->prop('set-vars') ) {
|
||||
$self->set_vars($dbh, $vars);
|
||||
@@ -1651,28 +1676,6 @@ sub get_dbh {
|
||||
. ": $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: ',
|
||||
$dbh,
|
||||
|
@@ -2992,22 +2992,47 @@ sub get_dbh {
|
||||
if ( $cxn_string =~ m/mysql/i ) {
|
||||
my $sql;
|
||||
|
||||
if ( my ($charset) = $cxn_string =~ m/charset=([\w]+)/ ) {
|
||||
my ($charset) = $cxn_string =~ m/charset=([\w]+)/;
|
||||
if ( $charset ) {
|
||||
$sql = qq{/*!40101 SET NAMES "$charset"*/};
|
||||
PTDEBUG && _d($dbh, $sql);
|
||||
eval { $dbh->do($sql) };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Error setting NAMES to $charset: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
else {
|
||||
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;
|
||||
$charset = $character_set_server;
|
||||
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 '$character_set_server'") };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
PTDEBUG && _d('Enabling charset for STDOUT');
|
||||
if ( $charset eq 'utf8' ) {
|
||||
if ( $charset && $charset =~ m/^utf8/ ) {
|
||||
binmode(STDOUT, ':utf8')
|
||||
or die "Can't binmode(STDOUT, ':utf8'): $OS_ERROR";
|
||||
}
|
||||
else {
|
||||
binmode(STDOUT) or die "Can't binmode(STDOUT): $OS_ERROR";
|
||||
}
|
||||
}
|
||||
|
||||
if ( my $vars = $self->prop('set-vars') ) {
|
||||
$self->set_vars($dbh, $vars);
|
||||
@@ -3032,28 +3057,6 @@ sub get_dbh {
|
||||
. ": $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: ',
|
||||
$dbh,
|
||||
|
@@ -355,22 +355,47 @@ sub get_dbh {
|
||||
if ( $cxn_string =~ m/mysql/i ) {
|
||||
my $sql;
|
||||
|
||||
if ( my ($charset) = $cxn_string =~ m/charset=([\w]+)/ ) {
|
||||
my ($charset) = $cxn_string =~ m/charset=([\w]+)/;
|
||||
if ( $charset ) {
|
||||
$sql = qq{/*!40101 SET NAMES "$charset"*/};
|
||||
PTDEBUG && _d($dbh, $sql);
|
||||
eval { $dbh->do($sql) };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Error setting NAMES to $charset: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
else {
|
||||
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;
|
||||
$charset = $character_set_server;
|
||||
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 '$character_set_server'") };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
PTDEBUG && _d('Enabling charset for STDOUT');
|
||||
if ( $charset eq 'utf8' ) {
|
||||
if ( $charset && $charset =~ m/^utf8/ ) {
|
||||
binmode(STDOUT, ':utf8')
|
||||
or die "Can't binmode(STDOUT, ':utf8'): $OS_ERROR";
|
||||
}
|
||||
else {
|
||||
binmode(STDOUT) or die "Can't binmode(STDOUT): $OS_ERROR";
|
||||
}
|
||||
}
|
||||
|
||||
if ( my $vars = $self->prop('set-vars') ) {
|
||||
$self->set_vars($dbh, $vars);
|
||||
@@ -395,28 +420,6 @@ sub get_dbh {
|
||||
. ": $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: ',
|
||||
$dbh,
|
||||
|
53
bin/pt-kill
53
bin/pt-kill
@@ -2117,22 +2117,47 @@ sub get_dbh {
|
||||
if ( $cxn_string =~ m/mysql/i ) {
|
||||
my $sql;
|
||||
|
||||
if ( my ($charset) = $cxn_string =~ m/charset=([\w]+)/ ) {
|
||||
my ($charset) = $cxn_string =~ m/charset=([\w]+)/;
|
||||
if ( $charset ) {
|
||||
$sql = qq{/*!40101 SET NAMES "$charset"*/};
|
||||
PTDEBUG && _d($dbh, $sql);
|
||||
eval { $dbh->do($sql) };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Error setting NAMES to $charset: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
else {
|
||||
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;
|
||||
$charset = $character_set_server;
|
||||
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 '$character_set_server'") };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
PTDEBUG && _d('Enabling charset for STDOUT');
|
||||
if ( $charset eq 'utf8' ) {
|
||||
if ( $charset && $charset =~ m/^utf8/ ) {
|
||||
binmode(STDOUT, ':utf8')
|
||||
or die "Can't binmode(STDOUT, ':utf8'): $OS_ERROR";
|
||||
}
|
||||
else {
|
||||
binmode(STDOUT) or die "Can't binmode(STDOUT): $OS_ERROR";
|
||||
}
|
||||
}
|
||||
|
||||
if ( my $vars = $self->prop('set-vars') ) {
|
||||
$self->set_vars($dbh, $vars);
|
||||
@@ -2157,28 +2182,6 @@ sub get_dbh {
|
||||
. ": $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: ',
|
||||
$dbh,
|
||||
|
@@ -2367,22 +2367,47 @@ sub get_dbh {
|
||||
if ( $cxn_string =~ m/mysql/i ) {
|
||||
my $sql;
|
||||
|
||||
if ( my ($charset) = $cxn_string =~ m/charset=([\w]+)/ ) {
|
||||
my ($charset) = $cxn_string =~ m/charset=([\w]+)/;
|
||||
if ( $charset ) {
|
||||
$sql = qq{/*!40101 SET NAMES "$charset"*/};
|
||||
PTDEBUG && _d($dbh, $sql);
|
||||
eval { $dbh->do($sql) };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Error setting NAMES to $charset: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
else {
|
||||
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;
|
||||
$charset = $character_set_server;
|
||||
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 '$character_set_server'") };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
PTDEBUG && _d('Enabling charset for STDOUT');
|
||||
if ( $charset eq 'utf8' ) {
|
||||
if ( $charset && $charset =~ m/^utf8/ ) {
|
||||
binmode(STDOUT, ':utf8')
|
||||
or die "Can't binmode(STDOUT, ':utf8'): $OS_ERROR";
|
||||
}
|
||||
else {
|
||||
binmode(STDOUT) or die "Can't binmode(STDOUT): $OS_ERROR";
|
||||
}
|
||||
}
|
||||
|
||||
if ( my $vars = $self->prop('set-vars') ) {
|
||||
$self->set_vars($dbh, $vars);
|
||||
@@ -2407,28 +2432,6 @@ sub get_dbh {
|
||||
. ": $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: ',
|
||||
$dbh,
|
||||
|
@@ -1023,22 +1023,47 @@ sub get_dbh {
|
||||
if ( $cxn_string =~ m/mysql/i ) {
|
||||
my $sql;
|
||||
|
||||
if ( my ($charset) = $cxn_string =~ m/charset=([\w]+)/ ) {
|
||||
my ($charset) = $cxn_string =~ m/charset=([\w]+)/;
|
||||
if ( $charset ) {
|
||||
$sql = qq{/*!40101 SET NAMES "$charset"*/};
|
||||
PTDEBUG && _d($dbh, $sql);
|
||||
eval { $dbh->do($sql) };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Error setting NAMES to $charset: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
else {
|
||||
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;
|
||||
$charset = $character_set_server;
|
||||
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 '$character_set_server'") };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
PTDEBUG && _d('Enabling charset for STDOUT');
|
||||
if ( $charset eq 'utf8' ) {
|
||||
if ( $charset && $charset =~ m/^utf8/ ) {
|
||||
binmode(STDOUT, ':utf8')
|
||||
or die "Can't binmode(STDOUT, ':utf8'): $OS_ERROR";
|
||||
}
|
||||
else {
|
||||
binmode(STDOUT) or die "Can't binmode(STDOUT): $OS_ERROR";
|
||||
}
|
||||
}
|
||||
|
||||
if ( my $vars = $self->prop('set-vars') ) {
|
||||
$self->set_vars($dbh, $vars);
|
||||
@@ -1063,28 +1088,6 @@ sub get_dbh {
|
||||
. ": $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: ',
|
||||
$dbh,
|
||||
|
@@ -1389,22 +1389,47 @@ sub get_dbh {
|
||||
if ( $cxn_string =~ m/mysql/i ) {
|
||||
my $sql;
|
||||
|
||||
if ( my ($charset) = $cxn_string =~ m/charset=([\w]+)/ ) {
|
||||
my ($charset) = $cxn_string =~ m/charset=([\w]+)/;
|
||||
if ( $charset ) {
|
||||
$sql = qq{/*!40101 SET NAMES "$charset"*/};
|
||||
PTDEBUG && _d($dbh, $sql);
|
||||
eval { $dbh->do($sql) };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Error setting NAMES to $charset: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
else {
|
||||
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;
|
||||
$charset = $character_set_server;
|
||||
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 '$character_set_server'") };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
PTDEBUG && _d('Enabling charset for STDOUT');
|
||||
if ( $charset eq 'utf8' ) {
|
||||
if ( $charset && $charset =~ m/^utf8/ ) {
|
||||
binmode(STDOUT, ':utf8')
|
||||
or die "Can't binmode(STDOUT, ':utf8'): $OS_ERROR";
|
||||
}
|
||||
else {
|
||||
binmode(STDOUT) or die "Can't binmode(STDOUT): $OS_ERROR";
|
||||
}
|
||||
}
|
||||
|
||||
if ( my $vars = $self->prop('set-vars') ) {
|
||||
$self->set_vars($dbh, $vars);
|
||||
@@ -1429,28 +1454,6 @@ sub get_dbh {
|
||||
. ": $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: ',
|
||||
$dbh,
|
||||
|
@@ -2110,22 +2110,47 @@ sub get_dbh {
|
||||
if ( $cxn_string =~ m/mysql/i ) {
|
||||
my $sql;
|
||||
|
||||
if ( my ($charset) = $cxn_string =~ m/charset=([\w]+)/ ) {
|
||||
my ($charset) = $cxn_string =~ m/charset=([\w]+)/;
|
||||
if ( $charset ) {
|
||||
$sql = qq{/*!40101 SET NAMES "$charset"*/};
|
||||
PTDEBUG && _d($dbh, $sql);
|
||||
eval { $dbh->do($sql) };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Error setting NAMES to $charset: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
else {
|
||||
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;
|
||||
$charset = $character_set_server;
|
||||
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 '$character_set_server'") };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
PTDEBUG && _d('Enabling charset for STDOUT');
|
||||
if ( $charset eq 'utf8' ) {
|
||||
if ( $charset && $charset =~ m/^utf8/ ) {
|
||||
binmode(STDOUT, ':utf8')
|
||||
or die "Can't binmode(STDOUT, ':utf8'): $OS_ERROR";
|
||||
}
|
||||
else {
|
||||
binmode(STDOUT) or die "Can't binmode(STDOUT): $OS_ERROR";
|
||||
}
|
||||
}
|
||||
|
||||
if ( my $vars = $self->prop('set-vars') ) {
|
||||
$self->set_vars($dbh, $vars);
|
||||
@@ -2150,28 +2175,6 @@ sub get_dbh {
|
||||
. ": $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: ',
|
||||
$dbh,
|
||||
|
@@ -2045,22 +2045,47 @@ sub get_dbh {
|
||||
if ( $cxn_string =~ m/mysql/i ) {
|
||||
my $sql;
|
||||
|
||||
if ( my ($charset) = $cxn_string =~ m/charset=([\w]+)/ ) {
|
||||
my ($charset) = $cxn_string =~ m/charset=([\w]+)/;
|
||||
if ( $charset ) {
|
||||
$sql = qq{/*!40101 SET NAMES "$charset"*/};
|
||||
PTDEBUG && _d($dbh, $sql);
|
||||
eval { $dbh->do($sql) };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Error setting NAMES to $charset: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
else {
|
||||
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;
|
||||
$charset = $character_set_server;
|
||||
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 '$character_set_server'") };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
PTDEBUG && _d('Enabling charset for STDOUT');
|
||||
if ( $charset eq 'utf8' ) {
|
||||
if ( $charset && $charset =~ m/^utf8/ ) {
|
||||
binmode(STDOUT, ':utf8')
|
||||
or die "Can't binmode(STDOUT, ':utf8'): $OS_ERROR";
|
||||
}
|
||||
else {
|
||||
binmode(STDOUT) or die "Can't binmode(STDOUT): $OS_ERROR";
|
||||
}
|
||||
}
|
||||
|
||||
if ( my $vars = $self->prop('set-vars') ) {
|
||||
$self->set_vars($dbh, $vars);
|
||||
@@ -2085,28 +2110,6 @@ sub get_dbh {
|
||||
. ": $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: ',
|
||||
$dbh,
|
||||
|
@@ -2456,22 +2456,47 @@ sub get_dbh {
|
||||
if ( $cxn_string =~ m/mysql/i ) {
|
||||
my $sql;
|
||||
|
||||
if ( my ($charset) = $cxn_string =~ m/charset=([\w]+)/ ) {
|
||||
my ($charset) = $cxn_string =~ m/charset=([\w]+)/;
|
||||
if ( $charset ) {
|
||||
$sql = qq{/*!40101 SET NAMES "$charset"*/};
|
||||
PTDEBUG && _d($dbh, $sql);
|
||||
eval { $dbh->do($sql) };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Error setting NAMES to $charset: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
else {
|
||||
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;
|
||||
$charset = $character_set_server;
|
||||
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 '$character_set_server'") };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
PTDEBUG && _d('Enabling charset for STDOUT');
|
||||
if ( $charset eq 'utf8' ) {
|
||||
if ( $charset && $charset =~ m/^utf8/ ) {
|
||||
binmode(STDOUT, ':utf8')
|
||||
or die "Can't binmode(STDOUT, ':utf8'): $OS_ERROR";
|
||||
}
|
||||
else {
|
||||
binmode(STDOUT) or die "Can't binmode(STDOUT): $OS_ERROR";
|
||||
}
|
||||
}
|
||||
|
||||
if ( my $vars = $self->prop('set-vars') ) {
|
||||
$self->set_vars($dbh, $vars);
|
||||
@@ -2496,28 +2521,6 @@ sub get_dbh {
|
||||
. ": $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: ',
|
||||
$dbh,
|
||||
|
@@ -1658,22 +1658,47 @@ sub get_dbh {
|
||||
if ( $cxn_string =~ m/mysql/i ) {
|
||||
my $sql;
|
||||
|
||||
if ( my ($charset) = $cxn_string =~ m/charset=([\w]+)/ ) {
|
||||
my ($charset) = $cxn_string =~ m/charset=([\w]+)/;
|
||||
if ( $charset ) {
|
||||
$sql = qq{/*!40101 SET NAMES "$charset"*/};
|
||||
PTDEBUG && _d($dbh, $sql);
|
||||
eval { $dbh->do($sql) };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Error setting NAMES to $charset: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
else {
|
||||
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;
|
||||
$charset = $character_set_server;
|
||||
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 '$character_set_server'") };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
PTDEBUG && _d('Enabling charset for STDOUT');
|
||||
if ( $charset eq 'utf8' ) {
|
||||
if ( $charset && $charset =~ m/^utf8/ ) {
|
||||
binmode(STDOUT, ':utf8')
|
||||
or die "Can't binmode(STDOUT, ':utf8'): $OS_ERROR";
|
||||
}
|
||||
else {
|
||||
binmode(STDOUT) or die "Can't binmode(STDOUT): $OS_ERROR";
|
||||
}
|
||||
}
|
||||
|
||||
if ( my $vars = $self->prop('set-vars') ) {
|
||||
$self->set_vars($dbh, $vars);
|
||||
@@ -1698,28 +1723,6 @@ sub get_dbh {
|
||||
. ": $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: ',
|
||||
$dbh,
|
||||
|
@@ -2278,22 +2278,47 @@ sub get_dbh {
|
||||
if ( $cxn_string =~ m/mysql/i ) {
|
||||
my $sql;
|
||||
|
||||
if ( my ($charset) = $cxn_string =~ m/charset=([\w]+)/ ) {
|
||||
my ($charset) = $cxn_string =~ m/charset=([\w]+)/;
|
||||
if ( $charset ) {
|
||||
$sql = qq{/*!40101 SET NAMES "$charset"*/};
|
||||
PTDEBUG && _d($dbh, $sql);
|
||||
eval { $dbh->do($sql) };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Error setting NAMES to $charset: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
else {
|
||||
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;
|
||||
$charset = $character_set_server;
|
||||
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 '$character_set_server'") };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
PTDEBUG && _d('Enabling charset for STDOUT');
|
||||
if ( $charset eq 'utf8' ) {
|
||||
if ( $charset && $charset =~ m/^utf8/ ) {
|
||||
binmode(STDOUT, ':utf8')
|
||||
or die "Can't binmode(STDOUT, ':utf8'): $OS_ERROR";
|
||||
}
|
||||
else {
|
||||
binmode(STDOUT) or die "Can't binmode(STDOUT): $OS_ERROR";
|
||||
}
|
||||
}
|
||||
|
||||
if ( my $vars = $self->prop('set-vars') ) {
|
||||
$self->set_vars($dbh, $vars);
|
||||
@@ -2318,28 +2343,6 @@ sub get_dbh {
|
||||
. ": $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: ',
|
||||
$dbh,
|
||||
|
@@ -1020,22 +1020,47 @@ sub get_dbh {
|
||||
if ( $cxn_string =~ m/mysql/i ) {
|
||||
my $sql;
|
||||
|
||||
if ( my ($charset) = $cxn_string =~ m/charset=([\w]+)/ ) {
|
||||
my ($charset) = $cxn_string =~ m/charset=([\w]+)/;
|
||||
if ( $charset ) {
|
||||
$sql = qq{/*!40101 SET NAMES "$charset"*/};
|
||||
PTDEBUG && _d($dbh, $sql);
|
||||
eval { $dbh->do($sql) };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Error setting NAMES to $charset: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
else {
|
||||
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;
|
||||
$charset = $character_set_server;
|
||||
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 '$character_set_server'") };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
PTDEBUG && _d('Enabling charset for STDOUT');
|
||||
if ( $charset eq 'utf8' ) {
|
||||
if ( $charset && $charset =~ m/^utf8/ ) {
|
||||
binmode(STDOUT, ':utf8')
|
||||
or die "Can't binmode(STDOUT, ':utf8'): $OS_ERROR";
|
||||
}
|
||||
else {
|
||||
binmode(STDOUT) or die "Can't binmode(STDOUT): $OS_ERROR";
|
||||
}
|
||||
}
|
||||
|
||||
if ( my $vars = $self->prop('set-vars') ) {
|
||||
$self->set_vars($dbh, $vars);
|
||||
@@ -1060,28 +1085,6 @@ sub get_dbh {
|
||||
. ": $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: ',
|
||||
$dbh,
|
||||
|
@@ -2114,22 +2114,47 @@ sub get_dbh {
|
||||
if ( $cxn_string =~ m/mysql/i ) {
|
||||
my $sql;
|
||||
|
||||
if ( my ($charset) = $cxn_string =~ m/charset=([\w]+)/ ) {
|
||||
my ($charset) = $cxn_string =~ m/charset=([\w]+)/;
|
||||
if ( $charset ) {
|
||||
$sql = qq{/*!40101 SET NAMES "$charset"*/};
|
||||
PTDEBUG && _d($dbh, $sql);
|
||||
eval { $dbh->do($sql) };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Error setting NAMES to $charset: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
else {
|
||||
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;
|
||||
$charset = $character_set_server;
|
||||
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 '$character_set_server'") };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
PTDEBUG && _d('Enabling charset for STDOUT');
|
||||
if ( $charset eq 'utf8' ) {
|
||||
if ( $charset && $charset =~ m/^utf8/ ) {
|
||||
binmode(STDOUT, ':utf8')
|
||||
or die "Can't binmode(STDOUT, ':utf8'): $OS_ERROR";
|
||||
}
|
||||
else {
|
||||
binmode(STDOUT) or die "Can't binmode(STDOUT): $OS_ERROR";
|
||||
}
|
||||
}
|
||||
|
||||
if ( my $vars = $self->prop('set-vars') ) {
|
||||
$self->set_vars($dbh, $vars);
|
||||
@@ -2154,28 +2179,6 @@ sub get_dbh {
|
||||
. ": $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: ',
|
||||
$dbh,
|
||||
|
@@ -333,22 +333,47 @@ sub get_dbh {
|
||||
my $sql;
|
||||
|
||||
# Set character set and binmode on STDOUT.
|
||||
if ( my ($charset) = $cxn_string =~ m/charset=([\w]+)/ ) {
|
||||
my ($charset) = $cxn_string =~ m/charset=([\w]+)/;
|
||||
if ( $charset ) {
|
||||
$sql = qq{/*!40101 SET NAMES "$charset"*/};
|
||||
PTDEBUG && _d($dbh, $sql);
|
||||
eval { $dbh->do($sql) };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Error setting NAMES to $charset: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
else {
|
||||
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;
|
||||
$charset = $character_set_server;
|
||||
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 '$character_set_server'") };
|
||||
if ( $EVAL_ERROR ) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
PTDEBUG && _d('Enabling charset for STDOUT');
|
||||
if ( $charset eq 'utf8' ) {
|
||||
if ( $charset && $charset =~ m/^utf8/ ) {
|
||||
binmode(STDOUT, ':utf8')
|
||||
or die "Can't binmode(STDOUT, ':utf8'): $OS_ERROR";
|
||||
}
|
||||
else {
|
||||
binmode(STDOUT) or die "Can't binmode(STDOUT): $OS_ERROR";
|
||||
}
|
||||
}
|
||||
|
||||
if ( my $vars = $self->prop('set-vars') ) {
|
||||
$self->set_vars($dbh, $vars);
|
||||
@@ -379,28 +404,6 @@ sub get_dbh {
|
||||
. ": $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: ',
|
||||
$dbh,
|
||||
|
@@ -271,7 +271,7 @@ SKIP: {
|
||||
is($d->{S}, '/tmp/12345/mysql_sandbox12345.sock', 'Filled in socket');
|
||||
is($d->{h}, '127.0.0.1', 'Left hostname alone');
|
||||
|
||||
my $want = $sandbox_version lt '8.0' ? [ qw(utf8 utf8 utf8) ]: [ qw(utf8mb4 utf8mb4 utf8mb4) ];
|
||||
my $want = $sandbox_version lt '8.0' ? [ qw(utf8 utf8 utf8) ]: [ qw(utf8mb3 utf8mb3 utf8mb3) ];
|
||||
|
||||
is_deeply(
|
||||
$dbh->selectrow_arrayref('select @@character_set_client, @@character_set_connection, @@character_set_results'),
|
||||
|
70
t/pt-query-digest/pt-2264.t
Normal file
70
t/pt-query-digest/pt-2264.t
Normal file
@@ -0,0 +1,70 @@
|
||||
#!/usr/bin/env perl
|
||||
|
||||
BEGIN {
|
||||
die "The PERCONA_TOOLKIT_BRANCH environment variable is not set.\n"
|
||||
unless $ENV{PERCONA_TOOLKIT_BRANCH} && -d $ENV{PERCONA_TOOLKIT_BRANCH};
|
||||
unshift @INC, "$ENV{PERCONA_TOOLKIT_BRANCH}/lib";
|
||||
};
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
use English qw(-no_match_vars);
|
||||
use Test::More;
|
||||
|
||||
use PerconaTest;
|
||||
use DSNParser;
|
||||
use Sandbox;
|
||||
|
||||
my $dp = new DSNParser(opts=>$dsn_opts);
|
||||
my $sb = new Sandbox(basedir => '/tmp', DSNParser => $dp);
|
||||
my $dbh = $sb->get_dbh_for('master');
|
||||
|
||||
if ( !$dbh ) {
|
||||
plan skip_all => 'Cannot connect to sandbox master';
|
||||
}
|
||||
else {
|
||||
plan tests => 3;
|
||||
}
|
||||
|
||||
my $pid_file = "/tmp/pt-query-digest-test-pt-2264.t.$PID";
|
||||
my $log_file = "/tmp/pt-query-digest-test-pt-2264.t.log";
|
||||
|
||||
# Need a clean query review table.
|
||||
$sb->create_dbs($dbh, [qw(test percona_schema)]);
|
||||
|
||||
# Run pt-query-digest in the background for 2s,
|
||||
# saving queries to test.query_review.
|
||||
diag(`$trunk/bin/pt-query-digest --processlist h=127.1,P=12345,u=msandbox,p=msandbox --interval 0.01 --daemonize --pid $pid_file --output slowlog --log $log_file --run-time 3`);
|
||||
|
||||
# Wait until its running.
|
||||
PerconaTest::wait_for_files($pid_file);
|
||||
|
||||
# Execute some queries to give it something to see.
|
||||
for (1..3) {
|
||||
$dbh->selectall_arrayref("SELECT SLEEP(2), '😜'");
|
||||
}
|
||||
|
||||
# Wait until it stops running (should already be done).
|
||||
wait_until(sub { !-e $pid_file });
|
||||
|
||||
my $output = `cat $log_file`;
|
||||
|
||||
like(
|
||||
$output,
|
||||
qr/😜/,
|
||||
'Smiley character successfully printed in the output'
|
||||
);
|
||||
|
||||
unlike(
|
||||
$output,
|
||||
qr/Wide character in print at/,
|
||||
'Smiley character did not cause error'
|
||||
);
|
||||
|
||||
# #############################################################################
|
||||
# Done.
|
||||
# #############################################################################
|
||||
diag(`rm $log_file`);
|
||||
$sb->wipe_clean($dbh);
|
||||
ok($sb->ok(), "Sandbox servers") or BAIL_OUT(__FILE__ . " broke the sandbox");
|
||||
exit;
|
Reference in New Issue
Block a user