Merge branch '3.0' into mysql-8

This commit is contained in:
Carlos Salguero
2018-02-19 12:11:07 -03:00
335 changed files with 3316 additions and 1399 deletions

View File

@@ -1,5 +1,13 @@
Changelog for Percona Toolkit
v3.0.7
* Fixed Bug PT-244 : pt-online-schema-change --data-dir option broken for partitioned table
* Feature PT-633 : Added --mysql-only option to pt-stalk for RDS
* Fixed bug PT-1256: pt-table-sync does not use the character set for the table it is synchronizing
* Fixed bug PT-1455: pt-osc is stuck when the table that is being altered is filtered out in the slave
* Fixed bug PMM-1905: Explain fails if encounters negative "ntoreturn"
v3.0.6 released 2017-12-20
* Fixed bug PT-234: Genaral log parser cannot handle timestamps with tz

View File

@@ -5372,15 +5372,16 @@ eval {
require HTTP::Micro;
};
{
my $file = 'percona-version-check';
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
'/etc/percona',
'/etc/percona-toolkit',
'/tmp',
"$home",
);
);
{
my $file = 'percona-version-check';
sub version_check_file {
foreach my $dir ( @vc_dirs ) {
@@ -5597,6 +5598,46 @@ sub get_instance_id {
}
sub get_uuid {
my $uuid_file = '/.percona-toolkit.uuid';
foreach my $dir (@vc_dirs) {
my $filename = $dir.$uuid_file;
my $uuid=_read_uuid($filename);
return $uuid if $uuid;
}
my $filename = $ENV{"HOME"} . $uuid_file;
my $uuid = _generate_uuid();
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
print $fh $uuid;
close $fh;
return $uuid;
}
sub _generate_uuid {
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
}
sub _read_uuid {
my $filename = shift;
my $fh;
eval {
open($fh, '<:encoding(UTF-8)', $filename);
};
return if ($EVAL_ERROR);
my $uuid;
eval { $uuid = <$fh>; };
return if ($EVAL_ERROR);
chomp $uuid;
return $uuid;
}
sub pingback {
my (%args) = @_;
my @required_args = qw(url instances);
@@ -5633,7 +5674,7 @@ sub pingback {
my $client_content = encode_client_response(
items => $items,
versions => $versions,
general_id => md5_hex( hostname() ),
general_id => get_uuid(),
);
my $client_response = {

View File

@@ -4711,15 +4711,16 @@ eval {
require HTTP::Micro;
};
{
my $file = 'percona-version-check';
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
'/etc/percona',
'/etc/percona-toolkit',
'/tmp',
"$home",
);
);
{
my $file = 'percona-version-check';
sub version_check_file {
foreach my $dir ( @vc_dirs ) {
@@ -4936,6 +4937,46 @@ sub get_instance_id {
}
sub get_uuid {
my $uuid_file = '/.percona-toolkit.uuid';
foreach my $dir (@vc_dirs) {
my $filename = $dir.$uuid_file;
my $uuid=_read_uuid($filename);
return $uuid if $uuid;
}
my $filename = $ENV{"HOME"} . $uuid_file;
my $uuid = _generate_uuid();
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
print $fh $uuid;
close $fh;
return $uuid;
}
sub _generate_uuid {
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
}
sub _read_uuid {
my $filename = shift;
my $fh;
eval {
open($fh, '<:encoding(UTF-8)', $filename);
};
return if ($EVAL_ERROR);
my $uuid;
eval { $uuid = <$fh>; };
return if ($EVAL_ERROR);
chomp $uuid;
return $uuid;
}
sub pingback {
my (%args) = @_;
my @required_args = qw(url instances);
@@ -4972,7 +5013,7 @@ sub pingback {
my $client_content = encode_client_response(
items => $items,
versions => $versions,
general_id => md5_hex( hostname() ),
general_id => get_uuid(),
);
my $client_response = {

View File

@@ -3775,15 +3775,16 @@ eval {
require HTTP::Micro;
};
{
my $file = 'percona-version-check';
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
'/etc/percona',
'/etc/percona-toolkit',
'/tmp',
"$home",
);
);
{
my $file = 'percona-version-check';
sub version_check_file {
foreach my $dir ( @vc_dirs ) {
@@ -4000,6 +4001,46 @@ sub get_instance_id {
}
sub get_uuid {
my $uuid_file = '/.percona-toolkit.uuid';
foreach my $dir (@vc_dirs) {
my $filename = $dir.$uuid_file;
my $uuid=_read_uuid($filename);
return $uuid if $uuid;
}
my $filename = $ENV{"HOME"} . $uuid_file;
my $uuid = _generate_uuid();
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
print $fh $uuid;
close $fh;
return $uuid;
}
sub _generate_uuid {
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
}
sub _read_uuid {
my $filename = shift;
my $fh;
eval {
open($fh, '<:encoding(UTF-8)', $filename);
};
return if ($EVAL_ERROR);
my $uuid;
eval { $uuid = <$fh>; };
return if ($EVAL_ERROR);
chomp $uuid;
return $uuid;
}
sub pingback {
my (%args) = @_;
my @required_args = qw(url instances);
@@ -4036,7 +4077,7 @@ sub pingback {
my $client_content = encode_client_response(
items => $items,
versions => $versions,
general_id => md5_hex( hostname() ),
general_id => get_uuid(),
);
my $client_response = {

View File

@@ -4328,15 +4328,16 @@ eval {
require HTTP::Micro;
};
{
my $file = 'percona-version-check';
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
'/etc/percona',
'/etc/percona-toolkit',
'/tmp',
"$home",
);
);
{
my $file = 'percona-version-check';
sub version_check_file {
foreach my $dir ( @vc_dirs ) {
@@ -4553,6 +4554,46 @@ sub get_instance_id {
}
sub get_uuid {
my $uuid_file = '/.percona-toolkit.uuid';
foreach my $dir (@vc_dirs) {
my $filename = $dir.$uuid_file;
my $uuid=_read_uuid($filename);
return $uuid if $uuid;
}
my $filename = $ENV{"HOME"} . $uuid_file;
my $uuid = _generate_uuid();
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
print $fh $uuid;
close $fh;
return $uuid;
}
sub _generate_uuid {
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
}
sub _read_uuid {
my $filename = shift;
my $fh;
eval {
open($fh, '<:encoding(UTF-8)', $filename);
};
return if ($EVAL_ERROR);
my $uuid;
eval { $uuid = <$fh>; };
return if ($EVAL_ERROR);
chomp $uuid;
return $uuid;
}
sub pingback {
my (%args) = @_;
my @required_args = qw(url instances);
@@ -4589,7 +4630,7 @@ sub pingback {
my $client_content = encode_client_response(
items => $items,
versions => $versions,
general_id => md5_hex( hostname() ),
general_id => get_uuid(),
);
my $client_response = {

View File

@@ -4379,15 +4379,16 @@ eval {
require HTTP::Micro;
};
{
my $file = 'percona-version-check';
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
'/etc/percona',
'/etc/percona-toolkit',
'/tmp',
"$home",
);
);
{
my $file = 'percona-version-check';
sub version_check_file {
foreach my $dir ( @vc_dirs ) {
@@ -4604,6 +4605,46 @@ sub get_instance_id {
}
sub get_uuid {
my $uuid_file = '/.percona-toolkit.uuid';
foreach my $dir (@vc_dirs) {
my $filename = $dir.$uuid_file;
my $uuid=_read_uuid($filename);
return $uuid if $uuid;
}
my $filename = $ENV{"HOME"} . $uuid_file;
my $uuid = _generate_uuid();
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
print $fh $uuid;
close $fh;
return $uuid;
}
sub _generate_uuid {
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
}
sub _read_uuid {
my $filename = shift;
my $fh;
eval {
open($fh, '<:encoding(UTF-8)', $filename);
};
return if ($EVAL_ERROR);
my $uuid;
eval { $uuid = <$fh>; };
return if ($EVAL_ERROR);
chomp $uuid;
return $uuid;
}
sub pingback {
my (%args) = @_;
my @required_args = qw(url instances);
@@ -4640,7 +4681,7 @@ sub pingback {
my $client_content = encode_client_response(
items => $items,
versions => $versions,
general_id => md5_hex( hostname() ),
general_id => get_uuid(),
);
my $client_response = {

View File

@@ -3093,15 +3093,16 @@ eval {
require HTTP::Micro;
};
{
my $file = 'percona-version-check';
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
'/etc/percona',
'/etc/percona-toolkit',
'/tmp',
"$home",
);
);
{
my $file = 'percona-version-check';
sub version_check_file {
foreach my $dir ( @vc_dirs ) {
@@ -3318,6 +3319,46 @@ sub get_instance_id {
}
sub get_uuid {
my $uuid_file = '/.percona-toolkit.uuid';
foreach my $dir (@vc_dirs) {
my $filename = $dir.$uuid_file;
my $uuid=_read_uuid($filename);
return $uuid if $uuid;
}
my $filename = $ENV{"HOME"} . $uuid_file;
my $uuid = _generate_uuid();
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
print $fh $uuid;
close $fh;
return $uuid;
}
sub _generate_uuid {
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
}
sub _read_uuid {
my $filename = shift;
my $fh;
eval {
open($fh, '<:encoding(UTF-8)', $filename);
};
return if ($EVAL_ERROR);
my $uuid;
eval { $uuid = <$fh>; };
return if ($EVAL_ERROR);
chomp $uuid;
return $uuid;
}
sub pingback {
my (%args) = @_;
my @required_args = qw(url instances);
@@ -3354,7 +3395,7 @@ sub pingback {
my $client_content = encode_client_response(
items => $items,
versions => $versions,
general_id => md5_hex( hostname() ),
general_id => get_uuid(),
);
my $client_response = {

View File

@@ -3280,15 +3280,16 @@ eval {
require HTTP::Micro;
};
{
my $file = 'percona-version-check';
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
'/etc/percona',
'/etc/percona-toolkit',
'/tmp',
"$home",
);
);
{
my $file = 'percona-version-check';
sub version_check_file {
foreach my $dir ( @vc_dirs ) {
@@ -3505,6 +3506,46 @@ sub get_instance_id {
}
sub get_uuid {
my $uuid_file = '/.percona-toolkit.uuid';
foreach my $dir (@vc_dirs) {
my $filename = $dir.$uuid_file;
my $uuid=_read_uuid($filename);
return $uuid if $uuid;
}
my $filename = $ENV{"HOME"} . $uuid_file;
my $uuid = _generate_uuid();
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
print $fh $uuid;
close $fh;
return $uuid;
}
sub _generate_uuid {
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
}
sub _read_uuid {
my $filename = shift;
my $fh;
eval {
open($fh, '<:encoding(UTF-8)', $filename);
};
return if ($EVAL_ERROR);
my $uuid;
eval { $uuid = <$fh>; };
return if ($EVAL_ERROR);
chomp $uuid;
return $uuid;
}
sub pingback {
my (%args) = @_;
my @required_args = qw(url instances);
@@ -3541,7 +3582,7 @@ sub pingback {
my $client_content = encode_client_response(
items => $items,
versions => $versions,
general_id => md5_hex( hostname() ),
general_id => get_uuid(),
);
my $client_response = {

View File

@@ -4980,15 +4980,16 @@ eval {
require HTTP::Micro;
};
{
my $file = 'percona-version-check';
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
'/etc/percona',
'/etc/percona-toolkit',
'/tmp',
"$home",
);
);
{
my $file = 'percona-version-check';
sub version_check_file {
foreach my $dir ( @vc_dirs ) {
@@ -5205,6 +5206,46 @@ sub get_instance_id {
}
sub get_uuid {
my $uuid_file = '/.percona-toolkit.uuid';
foreach my $dir (@vc_dirs) {
my $filename = $dir.$uuid_file;
my $uuid=_read_uuid($filename);
return $uuid if $uuid;
}
my $filename = $ENV{"HOME"} . $uuid_file;
my $uuid = _generate_uuid();
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
print $fh $uuid;
close $fh;
return $uuid;
}
sub _generate_uuid {
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
}
sub _read_uuid {
my $filename = shift;
my $fh;
eval {
open($fh, '<:encoding(UTF-8)', $filename);
};
return if ($EVAL_ERROR);
my $uuid;
eval { $uuid = <$fh>; };
return if ($EVAL_ERROR);
chomp $uuid;
return $uuid;
}
sub pingback {
my (%args) = @_;
my @required_args = qw(url instances);
@@ -5241,7 +5282,7 @@ sub pingback {
my $client_content = encode_client_response(
items => $items,
versions => $versions,
general_id => md5_hex( hostname() ),
general_id => get_uuid(),
);
my $client_response = {

View File

@@ -5777,15 +5777,16 @@ eval {
require HTTP::Micro;
};
{
my $file = 'percona-version-check';
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
'/etc/percona',
'/etc/percona-toolkit',
'/tmp',
"$home",
);
);
{
my $file = 'percona-version-check';
sub version_check_file {
foreach my $dir ( @vc_dirs ) {
@@ -6002,6 +6003,46 @@ sub get_instance_id {
}
sub get_uuid {
my $uuid_file = '/.percona-toolkit.uuid';
foreach my $dir (@vc_dirs) {
my $filename = $dir.$uuid_file;
my $uuid=_read_uuid($filename);
return $uuid if $uuid;
}
my $filename = $ENV{"HOME"} . $uuid_file;
my $uuid = _generate_uuid();
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
print $fh $uuid;
close $fh;
return $uuid;
}
sub _generate_uuid {
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
}
sub _read_uuid {
my $filename = shift;
my $fh;
eval {
open($fh, '<:encoding(UTF-8)', $filename);
};
return if ($EVAL_ERROR);
my $uuid;
eval { $uuid = <$fh>; };
return if ($EVAL_ERROR);
chomp $uuid;
return $uuid;
}
sub pingback {
my (%args) = @_;
my @required_args = qw(url instances);
@@ -6038,7 +6079,7 @@ sub pingback {
my $client_content = encode_client_response(
items => $items,
versions => $versions,
general_id => md5_hex( hostname() ),
general_id => get_uuid(),
);
my $client_response = {

View File

@@ -6185,15 +6185,16 @@ eval {
require HTTP::Micro;
};
{
my $file = 'percona-version-check';
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
'/etc/percona',
'/etc/percona-toolkit',
'/tmp',
"$home",
);
);
{
my $file = 'percona-version-check';
sub version_check_file {
foreach my $dir ( @vc_dirs ) {
@@ -6410,6 +6411,46 @@ sub get_instance_id {
}
sub get_uuid {
my $uuid_file = '/.percona-toolkit.uuid';
foreach my $dir (@vc_dirs) {
my $filename = $dir.$uuid_file;
my $uuid=_read_uuid($filename);
return $uuid if $uuid;
}
my $filename = $ENV{"HOME"} . $uuid_file;
my $uuid = _generate_uuid();
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
print $fh $uuid;
close $fh;
return $uuid;
}
sub _generate_uuid {
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
}
sub _read_uuid {
my $filename = shift;
my $fh;
eval {
open($fh, '<:encoding(UTF-8)', $filename);
};
return if ($EVAL_ERROR);
my $uuid;
eval { $uuid = <$fh>; };
return if ($EVAL_ERROR);
chomp $uuid;
return $uuid;
}
sub pingback {
my (%args) = @_;
my @required_args = qw(url instances);
@@ -6446,7 +6487,7 @@ sub pingback {
my $client_content = encode_client_response(
items => $items,
versions => $versions,
general_id => md5_hex( hostname() ),
general_id => get_uuid(),
);
my $client_response = {

View File

@@ -56,7 +56,7 @@ BEGIN {
{
package Percona::Toolkit;
our $VERSION = '3.0.6';
our $VERSION = '3.0.7';
use strict;
use warnings FATAL => 'all';
@@ -4281,7 +4281,8 @@ sub recurse_to_slaves {
PTDEBUG && _d('Connected to', $dp->as_string($slave_dsn));
};
if ( $EVAL_ERROR ) {
print STDERR "Cannot connect to ", $dp->as_string($slave_dsn), "\n"
#TODO REMOVE DEBUG
print STDERR "1> Cannot connect to ", $dp->as_string($slave_dsn), "\n"
or die "Cannot print: $OS_ERROR";
return;
}
@@ -5001,7 +5002,7 @@ sub wait {
my $lag = $get_lag->($lagged_slaves[$i]->{cxn});
PTDEBUG && _d($lagged_slaves[$i]->{cxn}->name(),
'slave lag:', $lag);
if ( !defined $lag || $lag > $max_lag ) {
if ( defined $lag && $lag > $max_lag ) {
$lagged_slaves[$i]->{lag} = $lag;
}
else {
@@ -7413,15 +7414,16 @@ eval {
require HTTP::Micro;
};
{
my $file = 'percona-version-check';
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
'/etc/percona',
'/etc/percona-toolkit',
'/tmp',
"$home",
);
);
{
my $file = 'percona-version-check';
sub version_check_file {
foreach my $dir ( @vc_dirs ) {
@@ -7638,6 +7640,46 @@ sub get_instance_id {
}
sub get_uuid {
my $uuid_file = '/.percona-toolkit.uuid';
foreach my $dir (@vc_dirs) {
my $filename = $dir.$uuid_file;
my $uuid=_read_uuid($filename);
return $uuid if $uuid;
}
my $filename = $ENV{"HOME"} . $uuid_file;
my $uuid = _generate_uuid();
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
print $fh $uuid;
close $fh;
return $uuid;
}
sub _generate_uuid {
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
}
sub _read_uuid {
my $filename = shift;
my $fh;
eval {
open($fh, '<:encoding(UTF-8)', $filename);
};
return if ($EVAL_ERROR);
my $uuid;
eval { $uuid = <$fh>; };
return if ($EVAL_ERROR);
chomp $uuid;
return $uuid;
}
sub pingback {
my (%args) = @_;
my @required_args = qw(url instances);
@@ -7674,7 +7716,7 @@ sub pingback {
my $client_content = encode_client_response(
items => $items,
versions => $versions,
general_id => md5_hex( hostname() ),
general_id => get_uuid(),
);
my $client_response = {
@@ -8693,7 +8735,8 @@ sub main {
# to stop lagging. If any replica is stopped, the tool
# waits forever until the replica is started."
# https://bugs.launchpad.net/percona-toolkit/+bug/1402051
PTDEBUG && _d('Cannot connect to', $cxn->name(), ':',
#TODO REMOVE DEBUG
PTDEBUG && _d('2> Cannot connect to', $cxn->name(), ':',
$EVAL_ERROR);
# Make ReplicaLagWaiter::wait() report slave is stopped.
return undef;
@@ -9134,7 +9177,8 @@ sub main {
}
};
if ( $slaves && scalar @$slaves ) {
my $table_is_replicated;
if ( $slaves && scalar @$slaves && $table_is_replicated) {
foreach my $slave (@$slaves) {
my ($pr, $pr_first_report);
if ( $o->get('progress') ) {
@@ -10393,15 +10437,15 @@ sub create_new_table {
}
if ( $o->get('data-dir') && !$o->got('remove-data-dir') ) {
if ( (-d $o->get('data-dir')) && (-w $o->get('data-dir')) ){
$sql =~ s/DATA DIRECTORY='.*?'//;
$sql .= sprintf(" DATA DIRECTORY='%s' ",$o->get('data-dir'));
$sql = insert_data_directory($sql, $o->get('data-dir'));
PTDEBUG && _d("adding data dir ".$o->get('data-dir'));
PTDEBUG && _d("New query\n$sql\n");
} else {
die $o->get('data-dir') . " is not a directory or it is not writable";
}
}
if ( $o->got('remove-data-dir') ) {
$sql =~ s/DATA DIRECTORY='.*?'//;
$sql =~ s/DATA DIRECTORY\s*=\s*'.*?'//;
PTDEBUG && _d("removing data dir");
}
PTDEBUG && _d($sql);
@@ -10440,6 +10484,21 @@ sub create_new_table {
. "no longer need, then re-run the tool.\n";
}
sub insert_data_directory {
my ($sql, $data_dir) = @_;
$sql =~ s/DATA DIRECTORY\s*=\s*'.*?'//;
my $re_ps=qr/(\/\*!50100 )?(PARTITION|SUBPARTITION)/;
if ($sql=~ m/$re_ps/) {
my $insert_pos=$-[0];
$sql = substr($sql, 0, $insert_pos - 1). " DATA DIRECTORY = '$data_dir' " .substr($sql, $insert_pos);
} else {
$sql .= " DATA DIRECTORY = '$data_dir' ";
}
return $sql;
}
sub swap_tables {
my (%args) = @_;
my @required_args = qw(orig_tbl new_tbl Cxn Quoter OptionParser Retry tries stats);
@@ -12828,7 +12887,7 @@ Default character set.
=item * D
dsn: database; copy: yes
dsn: database; copy: no
Database for the old and new table.
@@ -12979,6 +13038,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
=head1 VERSION
pt-online-schema-change 3.0.6
pt-online-schema-change 3.0.7
=cut

View File

@@ -12457,15 +12457,16 @@ eval {
require HTTP::Micro;
};
{
my $file = 'percona-version-check';
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
'/etc/percona',
'/etc/percona-toolkit',
'/tmp',
"$home",
);
);
{
my $file = 'percona-version-check';
sub version_check_file {
foreach my $dir ( @vc_dirs ) {
@@ -12682,6 +12683,46 @@ sub get_instance_id {
}
sub get_uuid {
my $uuid_file = '/.percona-toolkit.uuid';
foreach my $dir (@vc_dirs) {
my $filename = $dir.$uuid_file;
my $uuid=_read_uuid($filename);
return $uuid if $uuid;
}
my $filename = $ENV{"HOME"} . $uuid_file;
my $uuid = _generate_uuid();
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
print $fh $uuid;
close $fh;
return $uuid;
}
sub _generate_uuid {
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
}
sub _read_uuid {
my $filename = shift;
my $fh;
eval {
open($fh, '<:encoding(UTF-8)', $filename);
};
return if ($EVAL_ERROR);
my $uuid;
eval { $uuid = <$fh>; };
return if ($EVAL_ERROR);
chomp $uuid;
return $uuid;
}
sub pingback {
my (%args) = @_;
my @required_args = qw(url instances);
@@ -12718,7 +12759,7 @@ sub pingback {
my $client_content = encode_client_response(
items => $items,
versions => $versions,
general_id => md5_hex( hostname() ),
general_id => get_uuid(),
);
my $client_response = {

View File

@@ -3597,15 +3597,16 @@ eval {
require HTTP::Micro;
};
{
my $file = 'percona-version-check';
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
'/etc/percona',
'/etc/percona-toolkit',
'/tmp',
"$home",
);
);
{
my $file = 'percona-version-check';
sub version_check_file {
foreach my $dir ( @vc_dirs ) {
@@ -3822,6 +3823,46 @@ sub get_instance_id {
}
sub get_uuid {
my $uuid_file = '/.percona-toolkit.uuid';
foreach my $dir (@vc_dirs) {
my $filename = $dir.$uuid_file;
my $uuid=_read_uuid($filename);
return $uuid if $uuid;
}
my $filename = $ENV{"HOME"} . $uuid_file;
my $uuid = _generate_uuid();
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
print $fh $uuid;
close $fh;
return $uuid;
}
sub _generate_uuid {
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
}
sub _read_uuid {
my $filename = shift;
my $fh;
eval {
open($fh, '<:encoding(UTF-8)', $filename);
};
return if ($EVAL_ERROR);
my $uuid;
eval { $uuid = <$fh>; };
return if ($EVAL_ERROR);
chomp $uuid;
return $uuid;
}
sub pingback {
my (%args) = @_;
my @required_args = qw(url instances);
@@ -3858,7 +3899,7 @@ sub pingback {
my $client_content = encode_client_response(
items => $items,
versions => $versions,
general_id => md5_hex( hostname() ),
general_id => get_uuid(),
);
my $client_response = {

View File

@@ -4306,15 +4306,16 @@ eval {
require HTTP::Micro;
};
{
my $file = 'percona-version-check';
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
'/etc/percona',
'/etc/percona-toolkit',
'/tmp',
"$home",
);
);
{
my $file = 'percona-version-check';
sub version_check_file {
foreach my $dir ( @vc_dirs ) {
@@ -4531,6 +4532,46 @@ sub get_instance_id {
}
sub get_uuid {
my $uuid_file = '/.percona-toolkit.uuid';
foreach my $dir (@vc_dirs) {
my $filename = $dir.$uuid_file;
my $uuid=_read_uuid($filename);
return $uuid if $uuid;
}
my $filename = $ENV{"HOME"} . $uuid_file;
my $uuid = _generate_uuid();
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
print $fh $uuid;
close $fh;
return $uuid;
}
sub _generate_uuid {
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
}
sub _read_uuid {
my $filename = shift;
my $fh;
eval {
open($fh, '<:encoding(UTF-8)', $filename);
};
return if ($EVAL_ERROR);
my $uuid;
eval { $uuid = <$fh>; };
return if ($EVAL_ERROR);
chomp $uuid;
return $uuid;
}
sub pingback {
my (%args) = @_;
my @required_args = qw(url instances);
@@ -4567,7 +4608,7 @@ sub pingback {
my $client_content = encode_client_response(
items => $items,
versions => $versions,
general_id => md5_hex( hostname() ),
general_id => get_uuid(),
);
my $client_response = {

View File

@@ -128,6 +128,7 @@ OPT_ERRS=0 # How many command line option errors
OPT_VERSION="" # If --version was specified
OPT_HELP="" # If --help was specified
OPT_ASK_PASS="" # If --ask-pass was specified
OPT_MYSQL_ONLY="" # If --mysql-only was specified
PO_DIR="" # Directory with program option spec files
usage() {
@@ -795,7 +796,10 @@ collect() {
local d="$1" # directory to save results in
local p="$2" # prefix for each result file
local mysqld_pid=$(_pidof mysqld | awk '{print $1; exit;}')
local mysqld_pid=""
if [ ! "$OPT_MYSQL_ONLY" ]; then
mysqld_pid=$(_pidof mysqld | awk '{print $1; exit;}')
fi
if [ "$CMD_PMAP" -a "$mysqld_pid" ]; then
if $CMD_PMAP --help 2>&1 | grep -- -x >/dev/null 2>&1 ; then
@@ -824,7 +828,7 @@ collect() {
fi
local tail_error_log_pid=""
if [ "$mysql_error_log" ]; then
if [ "$mysql_error_log" -a ! "$OPT_MYSQL_ONLY" ]; then
log "The MySQL error log seems to be $mysql_error_log"
tail -f "$mysql_error_log" >"$d/$p-log_error" &
tail_error_log_pid=$!
@@ -865,6 +869,7 @@ collect() {
local strace_pid=$!
fi
if [ ! "$OPT_MYSQL_ONLY" ]; then
ps -eaF >> "$d/$p-ps" &
top -bn${OPT_RUN_TIME} >> "$d/$p-top" &
@@ -896,6 +901,7 @@ collect() {
$CMD_MYSQLADMIN $EXT_ARGV ext -i$OPT_SLEEP_COLLECT -c$cnt >>"$d/$p-mysqladmin" &
local mysqladmin_pid=$!
fi
local have_lock_waits_table=""
$CMD_MYSQL $EXT_ARGV -e "SHOW TABLES FROM INFORMATION_SCHEMA" \
@@ -915,7 +921,7 @@ collect() {
fi
while [ $((curr_time - start_time)) -lt $OPT_RUN_TIME ]; do
if [ ! "$OPT_MYSQL_ONLY" ]; then
disk_space $d > $d/$p-disk-space
check_disk_space \
$d/$p-disk-space \
@@ -949,6 +955,7 @@ collect() {
(echo $ts; df -k) >> "$d/$p-df" &
(echo $ts; netstat -antp) >> "$d/$p-netstat" &
(echo $ts; netstat -s) >> "$d/$p-netstat_s" &
fi
(echo $ts; $CMD_MYSQL $EXT_ARGV -e "SHOW FULL PROCESSLIST\G") \
>> "$d/$p-processlist" &
if [ "$have_lock_waits_table" ]; then
@@ -1414,6 +1421,7 @@ stalk() {
# Start collecting, maybe.
# ##################################################################
log "Collect $ITER triggered"
log "MYSQL_ONLY: $OPT_MYSQL_ONLY"
# Send email to whomever that collect has been triggered.
if [ "$OPT_NOTIFY_BY_EMAIL" ]; then
@@ -1424,7 +1432,6 @@ stalk() {
if [ "$OPT_COLLECT" ]; then
local prefix="${OPT_PREFIX:-$(date +%F-%T | tr ':-' '_')}"
# Check if we'll have enough disk space to collect. Disk space
# is also checked every interval while collecting.
local margin="20971520" # default 20M margin, unless:
@@ -2093,6 +2100,13 @@ Plugin writers should keep in mind that the file destination prefix currently
in use should be accessed through the C<$prefix> variable, rather than
C<$OPT_PREFIX>.
=item --mysql-only
Trigger only MySQL related captures, ignoring all others. The only not MySQL related
value being collected is the disk space, because it is needed to calculate the
available free disk space to write the result files.
This option is useful for RDS instances.
=item --port
short form: -P; type: int
@@ -2362,7 +2376,7 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
=head1 VERSION
pt-stalk 3.0.6
pt-stalk 3.0.7
=cut

View File

@@ -797,15 +797,16 @@ eval {
require HTTP::Micro;
};
{
my $file = 'percona-version-check';
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
'/etc/percona',
'/etc/percona-toolkit',
'/tmp',
"$home",
);
);
{
my $file = 'percona-version-check';
sub version_check_file {
foreach my $dir ( @vc_dirs ) {
@@ -1022,6 +1023,46 @@ sub get_instance_id {
}
sub get_uuid {
my $uuid_file = '/.percona-toolkit.uuid';
foreach my $dir (@vc_dirs) {
my $filename = $dir.$uuid_file;
my $uuid=_read_uuid($filename);
return $uuid if $uuid;
}
my $filename = $ENV{"HOME"} . $uuid_file;
my $uuid = _generate_uuid();
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
print $fh $uuid;
close $fh;
return $uuid;
}
sub _generate_uuid {
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
}
sub _read_uuid {
my $filename = shift;
my $fh;
eval {
open($fh, '<:encoding(UTF-8)', $filename);
};
return if ($EVAL_ERROR);
my $uuid;
eval { $uuid = <$fh>; };
return if ($EVAL_ERROR);
chomp $uuid;
return $uuid;
}
sub pingback {
my (%args) = @_;
my @required_args = qw(url instances);
@@ -1058,7 +1099,7 @@ sub pingback {
my $client_content = encode_client_response(
items => $items,
versions => $versions,
general_id => md5_hex( hostname() ),
general_id => get_uuid(),
);
my $client_response = {

View File

@@ -55,7 +55,7 @@ BEGIN {
{
package Percona::Toolkit;
our $VERSION = '3.0.6';
our $VERSION = '3.0.7';
use strict;
use warnings FATAL => 'all';
@@ -2137,6 +2137,7 @@ sub parse {
}
}
$self->{dsn_props} = \%final_props;
return \%final_props;
}
@@ -2319,6 +2320,20 @@ sub get_dbh {
}
}
if ($self->{dsn_props}->{D} && $self->{dsn_props}->{t}) {
PTDEBUG && _d("DSN has a schema and table: $self->{dsn_props}->{D}.$self->{dsn_props}->{t}");
PTDEBUG && _d("Trying to set the default charset for the connection");
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*/) {
PTDEBUG && _d("Detected table's character set: $1");
PTDEBUG && _d("Executing: SET NAMES '$1'");
$dbh->do("SET NAMES '$1'");
} else {
PTDEBUG && _d("Cannot get the default character set for the table");
}
}
PTDEBUG && _d('DBH info: ',
$dbh,
Dumper($dbh->selectrow_hashref(
@@ -9200,15 +9215,16 @@ eval {
require HTTP::Micro;
};
{
my $file = 'percona-version-check';
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
'/etc/percona',
'/etc/percona-toolkit',
'/tmp',
"$home",
);
);
{
my $file = 'percona-version-check';
sub version_check_file {
foreach my $dir ( @vc_dirs ) {
@@ -9425,6 +9441,46 @@ sub get_instance_id {
}
sub get_uuid {
my $uuid_file = '/.percona-toolkit.uuid';
foreach my $dir (@vc_dirs) {
my $filename = $dir.$uuid_file;
my $uuid=_read_uuid($filename);
return $uuid if $uuid;
}
my $filename = $ENV{"HOME"} . $uuid_file;
my $uuid = _generate_uuid();
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
print $fh $uuid;
close $fh;
return $uuid;
}
sub _generate_uuid {
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
}
sub _read_uuid {
my $filename = shift;
my $fh;
eval {
open($fh, '<:encoding(UTF-8)', $filename);
};
return if ($EVAL_ERROR);
my $uuid;
eval { $uuid = <$fh>; };
return if ($EVAL_ERROR);
chomp $uuid;
return $uuid;
}
sub pingback {
my (%args) = @_;
my @required_args = qw(url instances);
@@ -9461,7 +9517,7 @@ sub pingback {
my $client_content = encode_client_response(
items => $items,
versions => $versions,
general_id => md5_hex( hostname() ),
general_id => get_uuid(),
);
my $client_response = {
@@ -10644,6 +10700,16 @@ sub sync_a_table {
: $tbl_struct->{engine} eq 'InnoDB' ? 1
: 0;
if ($tbl_struct->{charset}) {
PTDEBUG && _d("Detected table's character set: $tbl_struct->{charset}");
PTDEBUG && _d("Executing: SET NAMES '$tbl_struct->{charset}'");
$src->{dbh}->do("SET NAMES '$tbl_struct->{charset}'");
$src->{misc_dbh}->do("SET NAMES '$tbl_struct->{charset}'");
$dst->{dbh}->do("SET NAMES '$tbl_struct->{charset}'");
$dst->{misc_dbh}->do("SET NAMES '$tbl_struct->{charset}'");
} else {
PTDEBUG && _d("Cannot get the default character set for the table");
}
# Turn off AutoCommit if we're using transactions.
$src->{dbh}->{AutoCommit} = !$use_txn;
$src->{misc_dbh}->{AutoCommit} = !$use_txn;
@@ -12977,6 +13043,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
=head1 VERSION
pt-table-sync 3.0.6
pt-table-sync 3.0.7
=cut

View File

@@ -4086,15 +4086,16 @@ eval {
require HTTP::Micro;
};
{
my $file = 'percona-version-check';
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
'/etc/percona',
'/etc/percona-toolkit',
'/tmp',
"$home",
);
);
{
my $file = 'percona-version-check';
sub version_check_file {
foreach my $dir ( @vc_dirs ) {
@@ -4311,6 +4312,46 @@ sub get_instance_id {
}
sub get_uuid {
my $uuid_file = '/.percona-toolkit.uuid';
foreach my $dir (@vc_dirs) {
my $filename = $dir.$uuid_file;
my $uuid=_read_uuid($filename);
return $uuid if $uuid;
}
my $filename = $ENV{"HOME"} . $uuid_file;
my $uuid = _generate_uuid();
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
print $fh $uuid;
close $fh;
return $uuid;
}
sub _generate_uuid {
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
}
sub _read_uuid {
my $filename = shift;
my $fh;
eval {
open($fh, '<:encoding(UTF-8)', $filename);
};
return if ($EVAL_ERROR);
my $uuid;
eval { $uuid = <$fh>; };
return if ($EVAL_ERROR);
chomp $uuid;
return $uuid;
}
sub pingback {
my (%args) = @_;
my @required_args = qw(url instances);
@@ -4347,7 +4388,7 @@ sub pingback {
my $client_content = encode_client_response(
items => $items,
versions => $versions,
general_id => md5_hex( hostname() ),
general_id => get_uuid(),
);
my $client_response = {

View File

@@ -4504,15 +4504,16 @@ eval {
require HTTP::Micro;
};
{
my $file = 'percona-version-check';
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
'/etc/percona',
'/etc/percona-toolkit',
'/tmp',
"$home",
);
);
{
my $file = 'percona-version-check';
sub version_check_file {
foreach my $dir ( @vc_dirs ) {
@@ -4729,6 +4730,46 @@ sub get_instance_id {
}
sub get_uuid {
my $uuid_file = '/.percona-toolkit.uuid';
foreach my $dir (@vc_dirs) {
my $filename = $dir.$uuid_file;
my $uuid=_read_uuid($filename);
return $uuid if $uuid;
}
my $filename = $ENV{"HOME"} . $uuid_file;
my $uuid = _generate_uuid();
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
print $fh $uuid;
close $fh;
return $uuid;
}
sub _generate_uuid {
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
}
sub _read_uuid {
my $filename = shift;
my $fh;
eval {
open($fh, '<:encoding(UTF-8)', $filename);
};
return if ($EVAL_ERROR);
my $uuid;
eval { $uuid = <$fh>; };
return if ($EVAL_ERROR);
chomp $uuid;
return $uuid;
}
sub pingback {
my (%args) = @_;
my @required_args = qw(url instances);
@@ -4765,7 +4806,7 @@ sub pingback {
my $client_content = encode_client_response(
items => $items,
versions => $versions,
general_id => md5_hex( hostname() ),
general_id => get_uuid(),
);
my $client_response = {

8
config/deb/postinst Normal file
View File

@@ -0,0 +1,8 @@
#!/bin/bash
if [ ! -e /etc/percona-toolkit/.percona.toolkit.uuid ]; then
mkdir -p /etc/percona-toolkit
perl -e 'printf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;' > /etc/percona-toolkit/.percona.toolkit.uuid
fi
#DEBHELPER#

View File

@@ -42,6 +42,11 @@ find $RPM_BUILD_ROOT -type f -name 'percona-toolkit.pod' -exec rm -f {} ';'
rm -rf $RPM_BUILD_ROOT/usr/share/perl5
chmod -R u+w $RPM_BUILD_ROOT/*
%post
if [ ! -e /etc/percona-toolkit/.percona.toolkit.uuid ]; then
mkdir -p /etc/percona-toolkit
perl -e 'printf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;' > /etc/percona-toolkit/.percona.toolkit.uuid
fi
%clean
rm -rf $RPM_BUILD_ROOT

View File

@@ -1,13 +1,7 @@
Release Notes
*************
v3.0.6 released 2017-12-20
==========================
Release Notes
*************
v3.0.6 released 2017-11-20
v3.0.6 released 2018-01-04
==========================
Percona Toolkit 3.0.6 includes the following changes:
@@ -17,15 +11,23 @@ New Features
* :jirabug:`PT-221`: Improve ``pt-table-sync`` support for ``MyRocks``
* :jirabug:`PT-218`: ``pt-stalk`` now checks the ``RocksDB`` status
* :jirabug:`PT-214`: ``pt-mysql-summary`` contains the ``RocksDB`` section
* :jirabug:`PT-205`: ``pt-osc`` shows a message if trying to set the engine to ``rocksdb`` and ``binlog_format != row``
* :jirabug:`PT-204`: ``pt-table-checksum`` skips ``RocksDB`` tables
* :jirabug:`PT-205`: ``pt-osc`` shows a message if trying to set the engine to
``rocksdb`` and ``binlog_format != row``.
* :jirabug:`PT-204`: ``pt-table-checksum`` skips ``RocksDB`` tables.
Bug fixes
Known Issues
* :jirabug:`PT-234`: The genaral log parser cannot handle timestamps which include time zones
* :jirabug:`PT-238`: The information message implemented for :jirabug:`PT-204` has a typo when referring to the ``--ignore-engines`` parameter. This problem is planned to be fixed in the next release.
* :jirabug:`PT-240`: It has been detected that the implementation of :jirabug:`PT-205` is not complete and ``pt-osc`` may fail when altering tables. This problem is planned to be fixed in the next release.
Bug Fixes
* :jirabug:`PT-234`: The general log parser cannot handle timestamps which include time zones
* :jirabug:`PT-229`: ``pt-online-schema-change`` does not retry on a deadlock error when using ``Percona Server`` 5.7
* :jirabug:`PT-225`: ``pt-table-checksum`` ignores generated columns
v3.0.5 released 2017-11-20
==========================

View File

@@ -48,6 +48,14 @@ eval {
require HTTP::Micro;
};
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
'/etc/percona',
'/etc/percona-toolkit',
'/tmp',
"$home",
);
# Return the version check file used to keep track of
# MySQL instance that have been checked and when. Some
# systems use random tmp dirs; we don't want that else
@@ -55,13 +63,6 @@ eval {
# per system is the goal, so prefer global sys dirs first.
{
my $file = 'percona-version-check';
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
my @vc_dirs = (
'/etc/percona',
'/etc/percona-toolkit',
'/tmp',
"$home",
);
sub version_check_file {
foreach my $dir ( @vc_dirs ) {
@@ -326,6 +327,49 @@ sub get_instance_id {
return $name, $id;
}
# This function has been implemented solely to be able to count individual
# Toolkit users for statistics. It uses a random UUID, no client info is
# being gathered nor stored
sub get_uuid {
my $uuid_file = '/.percona-toolkit.uuid';
foreach my $dir (@vc_dirs) {
my $filename = $dir.$uuid_file;
my $uuid=_read_uuid($filename);
return $uuid if $uuid;
}
my $filename = $ENV{"HOME"} . $uuid_file;
my $uuid = _generate_uuid();
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
print $fh $uuid;
close $fh;
return $uuid;
}
sub _generate_uuid {
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
}
sub _read_uuid {
my $filename = shift;
my $fh;
eval {
open($fh, '<:encoding(UTF-8)', $filename);
};
return if ($EVAL_ERROR);
my $uuid;
eval { $uuid = <$fh>; };
return if ($EVAL_ERROR);
chomp $uuid;
return $uuid;
}
# #############################################################################
# Protocol handlers
# #############################################################################
@@ -387,7 +431,7 @@ sub pingback {
my $client_content = encode_client_response(
items => $items,
versions => $versions,
general_id => md5_hex( hostname() ),
general_id => get_uuid(),
);
my $client_response = {

View File

@@ -49,8 +49,11 @@ collect() {
local d="$1" # directory to save results in
local p="$2" # prefix for each result file
local mysqld_pid=""
# Get pidof mysqld.
local mysqld_pid=$(_pidof mysqld | awk '{print $1; exit;}')
if [ ! "$OPT_MYSQL_ONLY" ]; then
mysqld_pid=$(_pidof mysqld | awk '{print $1; exit;}')
fi
# Get memory allocation info before anything else.
if [ "$CMD_PMAP" -a "$mysqld_pid" ]; then
@@ -90,7 +93,7 @@ collect() {
fi
local tail_error_log_pid=""
if [ "$mysql_error_log" ]; then
if [ "$mysql_error_log" -a ! "$OPT_MYSQL_ONLY" ]; then
log "The MySQL error log seems to be $mysql_error_log"
tail -f "$mysql_error_log" >"$d/$p-log_error" &
tail_error_log_pid=$!
@@ -141,6 +144,7 @@ collect() {
# Grab a few general things first. Background all of these so we can start
# them all up as quickly as possible.
if [ ! "$OPT_MYSQL_ONLY" ]; then
ps -eaF >> "$d/$p-ps" &
top -bn${OPT_RUN_TIME} >> "$d/$p-top" &
@@ -179,6 +183,7 @@ collect() {
# in the loop tends not to work very well.
$CMD_MYSQLADMIN $EXT_ARGV ext -i$OPT_SLEEP_COLLECT -c$cnt >>"$d/$p-mysqladmin" &
local mysqladmin_pid=$!
fi
local have_lock_waits_table=""
$CMD_MYSQL $EXT_ARGV -e "SHOW TABLES FROM INFORMATION_SCHEMA" \
@@ -200,7 +205,7 @@ collect() {
fi
while [ $((curr_time - start_time)) -lt $OPT_RUN_TIME ]; do
if [ ! "$OPT_MYSQL_ONLY" ]; then
# We check the disk, but don't exit, because we need to stop jobs if we
# need to exit.
disk_space $d > $d/$p-disk-space
@@ -241,6 +246,7 @@ collect() {
(echo $ts; df -k) >> "$d/$p-df" &
(echo $ts; netstat -antp) >> "$d/$p-netstat" &
(echo $ts; netstat -s) >> "$d/$p-netstat_s" &
fi
(echo $ts; $CMD_MYSQL $EXT_ARGV -e "SHOW FULL PROCESSLIST\G") \
>> "$d/$p-processlist" &
if [ "$have_lock_waits_table" ]; then

View File

@@ -27,10 +27,11 @@ innodb_lock_wait_timeout = 3
general_log
general_log_file = genlog
lower_case_table_names = 0
slow-query-log = 1
slow-query-log = 0
slow-query-log-file = /tmp/PORT/data/slow.log
log_slow_admin_statements = 1
long_query_time = 0
#character-set-server = utf8
# fkc test
binlog_format = STATEMENT

View File

@@ -63,9 +63,9 @@ func TestExplain(t *testing.T) {
versions := []string{
"2.6.12",
"3.0.15",
"3.2.16",
"3.4.7",
"3.5.11",
"3.2.19",
"3.4.12",
"3.6.2",
}
samples := map[string]string{

View File

@@ -78,109 +78,12 @@ func TestFingerprints(t *testing.T) {
t.Parallel()
dir := vars.RootPath + samples + "/doc/out/"
dirExpect := vars.RootPath + samples + "/expect/fingerprints/"
files, err := ioutil.ReadDir(dir)
if err != nil {
t.Fatalf("cannot list samples: %s", err)
}
expects := map[string]string{
"aggregate_2.6.12": "AGGREGATE coll a",
"aggregate_3.0.15": "AGGREGATE coll a",
"aggregate_3.2.16": "AGGREGATE coll a",
"aggregate_3.4.7": "AGGREGATE coll a",
"aggregate_3.5.11": "AGGREGATE coll a",
"count_2.6.12": "COUNT coll",
"count_3.0.15": "COUNT coll",
"count_3.2.16": "COUNT coll",
"count_3.4.7": "COUNT coll",
"count_3.5.11": "COUNT coll",
"count_with_query_2.6.12": "COUNT coll a",
"count_with_query_3.0.15": "COUNT coll a",
"count_with_query_3.2.16": "COUNT coll a",
"count_with_query_3.4.7": "COUNT coll a",
"count_with_query_3.5.11": "COUNT coll a",
"delete_2.6.12": "REMOVE coll a,b",
"delete_3.0.15": "REMOVE coll a,b",
"delete_3.2.16": "REMOVE coll a,b",
"delete_3.4.7": "REMOVE coll a,b",
"delete_3.5.11": "REMOVE coll a,b",
"delete_all_2.6.12": "REMOVE coll a,b",
"delete_all_3.0.15": "REMOVE coll a,b",
"delete_all_3.2.16": "REMOVE coll a,b",
"delete_all_3.4.7": "REMOVE coll a,b",
"delete_all_3.5.11": "REMOVE coll a,b",
"distinct_2.6.12": "DISTINCT coll a,b",
"distinct_3.0.15": "DISTINCT coll a,b",
"distinct_3.2.16": "DISTINCT coll a,b",
"distinct_3.4.7": "DISTINCT coll a,b",
"distinct_3.5.11": "DISTINCT coll a,b",
"explain_2.6.12": "EXPLAIN",
"explain_3.0.15": "EXPLAIN",
"explain_3.2.16": "EXPLAIN",
"explain_3.4.7": "EXPLAIN",
"explain_3.5.11": "EXPLAIN",
"eval_2.6.12": "EVAL",
"eval_3.0.15": "EVAL",
"eval_3.2.16": "EVAL",
"eval_3.4.7": "EVAL",
"eval_3.5.11": "EVAL",
"find_empty_2.6.12": "FIND coll",
"find_empty_3.0.15": "FIND coll",
"find_empty_3.2.16": "FIND coll",
"find_empty_3.4.7": "FIND coll",
"find_empty_3.5.11": "FIND coll",
"find_2.6.12": "FIND coll k",
"find_3.0.15": "FIND coll k",
"find_3.2.16": "FIND coll k",
"find_3.4.7": "FIND coll k",
"find_3.5.11": "FIND coll k",
"find_andrii_2.6.12": "FIND coll c,k,pad",
"find_andrii_3.0.15": "FIND coll c,k,pad",
"find_andrii_3.2.16": "FIND coll c,k,pad",
"find_andrii_3.4.7": "FIND coll c,k,pad",
"find_andrii_3.5.11": "FIND coll c,k,pad",
"find_with_sort_2.6.12": "FIND coll b,c",
"find_with_sort_3.0.15": "FIND coll b,c",
"find_with_sort_3.2.16": "FIND coll b,c",
"find_with_sort_3.4.7": "FIND coll b,c",
"find_with_sort_3.5.11": "FIND coll b,c",
"findandmodify_2.6.12": "FINDANDMODIFY coll a",
"findandmodify_3.0.15": "FINDANDMODIFY coll a",
"findandmodify_3.2.16": "FINDANDMODIFY coll a",
"findandmodify_3.4.7": "FINDANDMODIFY coll a",
"findandmodify_3.5.11": "FINDANDMODIFY coll a",
"geonear_2.6.12": "GEONEAR coll",
"geonear_3.0.15": "GEONEAR coll",
"geonear_3.2.16": "GEONEAR coll",
"geonear_3.4.7": "GEONEAR coll",
"geonear_3.5.11": "GEONEAR coll",
"getmore_2.6.12": "GETMORE coll",
"getmore_3.0.15": "GETMORE coll",
"getmore_3.2.16": "GETMORE coll",
"getmore_3.4.7": "GETMORE coll",
"getmore_3.5.11": "GETMORE coll",
"group_2.6.12": "GROUP coll a,b",
"group_3.0.15": "GROUP coll a,b",
"group_3.2.16": "GROUP coll a,b",
"group_3.4.7": "GROUP coll a,b",
"group_3.5.11": "GROUP coll a,b",
"insert_2.6.12": "INSERT coll",
"insert_3.0.15": "INSERT coll",
"insert_3.2.16": "INSERT coll",
"insert_3.4.7": "INSERT coll",
"insert_3.5.11": "INSERT coll",
"mapreduce_2.6.12": "MAPREDUCE coll a",
"mapreduce_3.0.15": "MAPREDUCE coll a",
"mapreduce_3.2.16": "MAPREDUCE coll a",
"mapreduce_3.4.7": "MAPREDUCE coll a",
"mapreduce_3.5.11": "MAPREDUCE coll a",
"update_2.6.12": "UPDATE coll a",
"update_3.0.15": "UPDATE coll a",
"update_3.2.16": "UPDATE coll a",
"update_3.4.7": "UPDATE coll a",
"update_3.5.11": "UPDATE coll a",
}
for _, file := range files {
t.Run(file.Name(), func(t *testing.T) {
doc := proto.SystemProfile{}
@@ -193,9 +96,21 @@ func TestFingerprints(t *testing.T) {
if err != nil {
t.Errorf("cannot create fingerprint: %s", err)
}
expect := expects[file.Name()]
if !reflect.DeepEqual(got.Fingerprint, expect) {
t.Errorf("fp.Fingerprint(doc) = %s, want %s", got.Fingerprint, expect)
fExpect := dirExpect + file.Name()
if tutil.ShouldUpdateSamples() {
err := tutil.WriteJson(fExpect, got)
if err != nil {
fmt.Printf("cannot update samples: %s", err.Error())
}
}
var expect Fingerprint
err = tutil.LoadJson(fExpect, &expect)
if err != nil {
t.Fatalf("cannot load expected data %s: %s", fExpect, err)
}
if !reflect.DeepEqual(got, expect) {
t.Errorf("fp.Fingerprint(doc) = %s, want %s", got, expect)
}
})
}

View File

@@ -118,6 +118,7 @@ func (self ExampleQuery) Db() string {
return ""
}
// ExplainCmd returns bson.D ready to use in https://godoc.org/labix.org/v2/mgo#Database.Run
func (self ExampleQuery) ExplainCmd() bson.D {
cmd := self.Command
@@ -162,8 +163,16 @@ func (self ExampleQuery) ExplainCmd() bson.D {
}
} else {
for i := range cmd {
// drop $db param as it is not supported in MongoDB 3.0
if cmd[i].Name == "$db" {
switch cmd[i].Name {
// PMM-1905: Drop "ntoreturn" if it's negative.
case "ntoreturn":
// If it's non-negative, then we are fine, continue to next param.
if cmd[i].Value.(int64) >= 0 {
continue
}
fallthrough
// Drop $db as it is not supported in MongoDB 3.0.
case "$db":
if len(cmd)-1 == i {
cmd = cmd[:i]
} else {

View File

@@ -275,9 +275,9 @@ func TestAvailableMetrics(t *testing.T) {
versions := []string{
"2.6.12",
"3.0.15",
"3.2.16",
"3.4.7",
"3.5.11",
"3.2.19",
"3.4.12",
"3.6.2",
}
samples := []string{
@@ -345,7 +345,6 @@ func TestAvailableMetrics(t *testing.T) {
if !reflect.DeepEqual(got, expect) {
t.Errorf("s.Queries() = %#v, want %#v", got, expect)
}
})
t.Run("cmd_metric", func(t *testing.T) {

View File

@@ -20,20 +20,20 @@
"numYield" : 0,
"lockStats" : {
"timeLockedMicros" : {
"r" : NumberLong(222),
"w" : NumberLong(0)
"r" : NumberLong(1234),
"w" : NumberLong(4321)
},
"timeAcquiringMicros" : {
"r" : NumberLong(15),
"w" : NumberLong(6)
"r" : NumberLong(9876),
"w" : NumberLong(6789)
}
},
"responseLength" : 385,
"millis" : 0,
"millis" : 42,
"execStats" : {
},
"ts" : ISODate("2017-10-15T01:54:08.661Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -42,11 +42,11 @@
}
},
"responseLength" : 385,
"millis" : 0,
"millis" : 42,
"execStats" : {
},
"ts" : ISODate("2017-10-15T01:54:18.509Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -38,11 +38,11 @@
},
"responseLength" : 388,
"protocol" : "op_command",
"millis" : 0,
"millis" : 42,
"execStats" : {
},
"ts" : ISODate("2017-10-15T01:54:31.293Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -40,9 +40,9 @@
"nreturned" : 8,
"responseLength" : 370,
"protocol" : "op_command",
"millis" : 0,
"millis" : 42,
"planSummary" : "IXSCAN { a: 1 }",
"ts" : ISODate("2017-10-15T01:54:41.948Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"appName" : "MongoDB Shell",
"allUsers" : [ ],

View File

@@ -24,26 +24,26 @@
"locks" : {
"Global" : {
"acquireCount" : {
"r" : NumberLong(6)
"r" : NumberLong(4)
}
},
"Database" : {
"acquireCount" : {
"r" : NumberLong(3)
"r" : NumberLong(2)
}
},
"Collection" : {
"acquireCount" : {
"r" : NumberLong(3)
"r" : NumberLong(2)
}
}
},
"nreturned" : 8,
"responseLength" : 370,
"protocol" : "op_msg",
"millis" : 2,
"millis" : 42,
"planSummary" : "IXSCAN { a: 1 }",
"ts" : ISODate("2017-10-15T01:54:52.564Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"appName" : "MongoDB Shell",
"allUsers" : [ ],

View File

@@ -14,20 +14,20 @@
"numYield" : 0,
"lockStats" : {
"timeLockedMicros" : {
"r" : NumberLong(33),
"w" : NumberLong(0)
"r" : NumberLong(1234),
"w" : NumberLong(4321)
},
"timeAcquiringMicros" : {
"r" : NumberLong(3),
"w" : NumberLong(5)
"r" : NumberLong(9876),
"w" : NumberLong(6789)
}
},
"responseLength" : 48,
"millis" : 0,
"millis" : 42,
"execStats" : {
},
"ts" : ISODate("2017-10-15T01:54:08.889Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -36,11 +36,11 @@
}
},
"responseLength" : 44,
"millis" : 0,
"millis" : 42,
"execStats" : {
},
"ts" : ISODate("2017-10-15T01:54:18.673Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -32,11 +32,11 @@
},
"responseLength" : 47,
"protocol" : "op_command",
"millis" : 0,
"millis" : 42,
"execStats" : {
},
"ts" : ISODate("2017-10-15T01:54:31.529Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -32,7 +32,7 @@
},
"responseLength" : 29,
"protocol" : "op_command",
"millis" : 0,
"millis" : 42,
"planSummary" : "COUNT",
"execStats" : {
"stage" : "COUNT",
@@ -49,7 +49,7 @@
"nCounted" : 10,
"nSkipped" : 0
},
"ts" : ISODate("2017-10-15T01:54:42.157Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"appName" : "MongoDB Shell",
"allUsers" : [ ],

View File

@@ -33,7 +33,7 @@
},
"responseLength" : 29,
"protocol" : "op_msg",
"millis" : 0,
"millis" : 42,
"planSummary" : "COUNT",
"execStats" : {
"stage" : "COUNT",
@@ -50,7 +50,7 @@
"nCounted" : 10,
"nSkipped" : 0
},
"ts" : ISODate("2017-10-15T01:54:52.844Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"appName" : "MongoDB Shell",
"allUsers" : [ ],

View File

@@ -16,20 +16,20 @@
"numYield" : 0,
"lockStats" : {
"timeLockedMicros" : {
"r" : NumberLong(75),
"w" : NumberLong(0)
"r" : NumberLong(1234),
"w" : NumberLong(4321)
},
"timeAcquiringMicros" : {
"r" : NumberLong(6),
"w" : NumberLong(6)
"r" : NumberLong(9876),
"w" : NumberLong(6789)
}
},
"responseLength" : 48,
"millis" : 0,
"millis" : 42,
"execStats" : {
},
"ts" : ISODate("2017-10-15T01:54:09.039Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -38,11 +38,11 @@
}
},
"responseLength" : 44,
"millis" : 0,
"millis" : 42,
"execStats" : {
},
"ts" : ISODate("2017-10-15T01:54:18.838Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -34,11 +34,11 @@
},
"responseLength" : 47,
"protocol" : "op_command",
"millis" : 0,
"millis" : 42,
"execStats" : {
},
"ts" : ISODate("2017-10-15T01:54:31.756Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -34,7 +34,7 @@
},
"responseLength" : 29,
"protocol" : "op_command",
"millis" : 0,
"millis" : 42,
"planSummary" : "COLLSCAN",
"execStats" : {
"stage" : "COUNT",
@@ -71,7 +71,7 @@
"docsExamined" : 10
}
},
"ts" : ISODate("2017-10-15T01:54:42.350Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"appName" : "MongoDB Shell",
"allUsers" : [ ],

View File

@@ -35,7 +35,7 @@
},
"responseLength" : 29,
"protocol" : "op_msg",
"millis" : 0,
"millis" : 42,
"planSummary" : "COLLSCAN",
"execStats" : {
"stage" : "COUNT",
@@ -72,7 +72,7 @@
"docsExamined" : 10
}
},
"ts" : ISODate("2017-10-15T01:54:53.078Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"appName" : "MongoDB Shell",
"allUsers" : [ ],

View File

@@ -14,19 +14,19 @@
"numYield" : 0,
"lockStats" : {
"timeLockedMicros" : {
"r" : NumberLong(0),
"w" : NumberLong(144)
"r" : NumberLong(1234),
"w" : NumberLong(4321)
},
"timeAcquiringMicros" : {
"r" : NumberLong(0),
"w" : NumberLong(11)
"r" : NumberLong(9876),
"w" : NumberLong(6789)
}
},
"millis" : 0,
"millis" : 42,
"execStats" : {
},
"ts" : ISODate("2017-10-15T01:54:09.246Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -36,11 +36,11 @@
}
}
},
"millis" : 0,
"millis" : 42,
"execStats" : {
},
"ts" : ISODate("2017-10-15T01:54:19.034Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -31,11 +31,11 @@
}
}
},
"millis" : 1,
"millis" : 42,
"execStats" : {
},
"ts" : ISODate("2017-10-15T01:54:32.020Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -32,7 +32,7 @@
}
}
},
"millis" : 0,
"millis" : 42,
"planSummary" : "IXSCAN { a: 1 }",
"execStats" : {
"stage" : "DELETE",
@@ -105,7 +105,7 @@
}
}
},
"ts" : ISODate("2017-10-15T01:54:42.612Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"appName" : "MongoDB Shell",
"allUsers" : [ ],

View File

@@ -35,7 +35,7 @@
}
}
},
"millis" : 1,
"millis" : 42,
"planSummary" : "IXSCAN { a: 1 }",
"execStats" : {
"stage" : "DELETE",
@@ -108,7 +108,7 @@
}
}
},
"ts" : ISODate("2017-10-15T01:54:53.333Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"appName" : "MongoDB Shell",
"allUsers" : [ ],

View File

@@ -14,19 +14,19 @@
"numYield" : 0,
"lockStats" : {
"timeLockedMicros" : {
"r" : NumberLong(0),
"w" : NumberLong(396)
"r" : NumberLong(1234),
"w" : NumberLong(4321)
},
"timeAcquiringMicros" : {
"r" : NumberLong(0),
"w" : NumberLong(12)
"r" : NumberLong(9876),
"w" : NumberLong(6789)
}
},
"millis" : 0,
"millis" : 42,
"execStats" : {
},
"ts" : ISODate("2017-10-15T01:54:09.463Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -36,11 +36,11 @@
}
}
},
"millis" : 0,
"millis" : 42,
"execStats" : {
},
"ts" : ISODate("2017-10-15T01:54:19.206Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -31,11 +31,11 @@
}
}
},
"millis" : 1,
"millis" : 42,
"execStats" : {
},
"ts" : ISODate("2017-10-15T01:54:32.281Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -32,7 +32,7 @@
}
}
},
"millis" : 1,
"millis" : 42,
"planSummary" : "IXSCAN { a: 1 }",
"execStats" : {
"stage" : "DELETE",
@@ -105,7 +105,7 @@
}
}
},
"ts" : ISODate("2017-10-15T01:54:42.820Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"appName" : "MongoDB Shell",
"allUsers" : [ ],

View File

@@ -35,12 +35,12 @@
}
}
},
"millis" : 1,
"millis" : 42,
"planSummary" : "IXSCAN { a: 1 }",
"execStats" : {
"stage" : "DELETE",
"nReturned" : 0,
"executionTimeMillisEstimate" : 10,
"executionTimeMillisEstimate" : 0,
"works" : 9,
"advanced" : 0,
"needTime" : 8,
@@ -108,7 +108,7 @@
}
}
},
"ts" : ISODate("2017-10-15T01:54:53.615Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"appName" : "MongoDB Shell",
"allUsers" : [ ],

View File

@@ -14,20 +14,20 @@
"numYield" : 0,
"lockStats" : {
"timeLockedMicros" : {
"r" : NumberLong(362),
"w" : NumberLong(0)
"r" : NumberLong(1234),
"w" : NumberLong(4321)
},
"timeAcquiringMicros" : {
"r" : NumberLong(6),
"w" : NumberLong(9341)
"r" : NumberLong(9876),
"w" : NumberLong(6789)
}
},
"responseLength" : 199,
"millis" : 0,
"millis" : 42,
"execStats" : {
},
"ts" : ISODate("2017-10-15T01:54:09.687Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -36,11 +36,11 @@
}
},
"responseLength" : 206,
"millis" : 0,
"millis" : 42,
"execStats" : {
},
"ts" : ISODate("2017-10-15T01:54:19.380Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -32,11 +32,11 @@
},
"responseLength" : 209,
"protocol" : "op_command",
"millis" : 0,
"millis" : 42,
"execStats" : {
},
"ts" : ISODate("2017-10-15T01:54:32.523Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -32,7 +32,7 @@
},
"responseLength" : 90,
"protocol" : "op_command",
"millis" : 0,
"millis" : 42,
"planSummary" : "IXSCAN { b: 1 }",
"execStats" : {
"stage" : "FETCH",
@@ -85,7 +85,7 @@
"seenInvalidated" : 0
}
},
"ts" : ISODate("2017-10-15T01:54:43.048Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"appName" : "MongoDB Shell",
"allUsers" : [ ],

View File

@@ -33,7 +33,7 @@
},
"responseLength" : 90,
"protocol" : "op_msg",
"millis" : 0,
"millis" : 42,
"planSummary" : "IXSCAN { b: 1 }",
"execStats" : {
"stage" : "FETCH",
@@ -86,7 +86,7 @@
"seenInvalidated" : 0
}
},
"ts" : ISODate("2017-10-15T01:54:53.874Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"appName" : "MongoDB Shell",
"allUsers" : [ ],

View File

@@ -8,22 +8,22 @@
"numYield" : 0,
"lockStats" : {
"timeLockedMicros" : {
"R" : NumberLong(0),
"W" : NumberLong(42972)
"R" : NumberLong(1234),
"W" : NumberLong(4321)
},
"timeAcquiringMicros" : {
"R" : NumberLong(0),
"W" : NumberLong(8),
"r" : NumberLong(0),
"w" : NumberLong(6)
"R" : NumberLong(9876),
"W" : NumberLong(6789),
"r" : NumberLong(9876),
"w" : NumberLong(6789)
}
},
"responseLength" : 53,
"millis" : 43,
"millis" : 42,
"execStats" : {
},
"ts" : ISODate("2017-10-15T01:54:09.890Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -31,11 +31,11 @@
}
},
"responseLength" : 53,
"millis" : 37,
"millis" : 42,
"execStats" : {
},
"ts" : ISODate("2017-10-15T01:54:19.572Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -27,11 +27,11 @@
},
"responseLength" : 38,
"protocol" : "op_command",
"millis" : 56,
"millis" : 42,
"execStats" : {
},
"ts" : ISODate("2017-10-15T01:54:32.759Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -25,8 +25,8 @@
},
"responseLength" : 38,
"protocol" : "op_command",
"millis" : 48,
"ts" : ISODate("2017-10-15T01:54:43.273Z"),
"millis" : 42,
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"appName" : "MongoDB Shell",
"allUsers" : [ ],

View File

@@ -26,8 +26,8 @@
},
"responseLength" : 38,
"protocol" : "op_msg",
"millis" : 40,
"ts" : ISODate("2017-10-15T01:54:54.085Z"),
"millis" : 42,
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"appName" : "MongoDB Shell",
"allUsers" : [ ],

View File

@@ -15,17 +15,17 @@
"numYield" : 0,
"lockStats" : {
"timeLockedMicros" : {
"r" : NumberLong(101),
"w" : NumberLong(0)
"r" : NumberLong(1234),
"w" : NumberLong(4321)
},
"timeAcquiringMicros" : {
"r" : NumberLong(6),
"w" : NumberLong(11)
"r" : NumberLong(9876),
"w" : NumberLong(6789)
}
},
"nreturned" : 1,
"responseLength" : 583,
"millis" : 0,
"millis" : 42,
"execStats" : {
"type" : "COLLSCAN",
"works" : 12,
@@ -39,7 +39,7 @@
"docsTested" : 10,
"children" : [ ]
},
"ts" : ISODate("2017-10-15T01:54:10.058Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -39,11 +39,11 @@
}
},
"responseLength" : 379,
"millis" : 0,
"millis" : 42,
"execStats" : {
},
"ts" : ISODate("2017-10-15T01:54:19.722Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -32,11 +32,11 @@
},
"responseLength" : 364,
"protocol" : "op_command",
"millis" : 0,
"millis" : 42,
"execStats" : {
},
"ts" : ISODate("2017-10-15T01:54:32.931Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -28,10 +28,10 @@
}
}
},
"responseLength" : 328,
"responseLength" : 329,
"protocol" : "op_command",
"millis" : 0,
"ts" : ISODate("2017-10-15T01:54:43.427Z"),
"millis" : 42,
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"appName" : "MongoDB Shell",
"allUsers" : [ ],

View File

@@ -29,10 +29,10 @@
}
}
},
"responseLength" : 329,
"responseLength" : 328,
"protocol" : "op_msg",
"millis" : 0,
"ts" : ISODate("2017-10-15T01:54:54.257Z"),
"millis" : 42,
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"appName" : "MongoDB Shell",
"allUsers" : [ ],

View File

@@ -12,17 +12,17 @@
"numYield" : 0,
"lockStats" : {
"timeLockedMicros" : {
"r" : NumberLong(213),
"w" : NumberLong(0)
"r" : NumberLong(1234),
"w" : NumberLong(4321)
},
"timeAcquiringMicros" : {
"r" : NumberLong(38),
"w" : NumberLong(3)
"r" : NumberLong(9876),
"w" : NumberLong(6789)
}
},
"nreturned" : 2,
"responseLength" : 86,
"millis" : 0,
"millis" : 42,
"execStats" : {
"type" : "FETCH",
"works" : 3,
@@ -60,7 +60,7 @@
}
]
},
"ts" : ISODate("2017-10-15T01:54:10.277Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -35,7 +35,7 @@
},
"nreturned" : 2,
"responseLength" : 86,
"millis" : 0,
"millis" : 42,
"execStats" : {
"stage" : "FETCH",
"nReturned" : 2,
@@ -80,7 +80,7 @@
"matchTested" : 0
}
},
"ts" : ISODate("2017-10-15T01:54:19.953Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -33,7 +33,7 @@
"nreturned" : 2,
"responseLength" : 172,
"protocol" : "op_command",
"millis" : 1,
"millis" : 42,
"execStats" : {
"stage" : "FETCH",
"nReturned" : 2,
@@ -81,7 +81,7 @@
"seenInvalidated" : 0
}
},
"ts" : ISODate("2017-10-15T01:54:33.179Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -31,7 +31,7 @@
"nreturned" : 2,
"responseLength" : 154,
"protocol" : "op_command",
"millis" : 0,
"millis" : 42,
"planSummary" : "IXSCAN { k: 1 }",
"execStats" : {
"stage" : "FETCH",
@@ -84,7 +84,7 @@
"seenInvalidated" : 0
}
},
"ts" : ISODate("2017-10-15T01:54:43.713Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"appName" : "MongoDB Shell",
"allUsers" : [ ],

View File

@@ -32,7 +32,7 @@
"nreturned" : 2,
"responseLength" : 154,
"protocol" : "op_msg",
"millis" : 0,
"millis" : 42,
"planSummary" : "IXSCAN { k: 1 }",
"execStats" : {
"stage" : "FETCH",
@@ -85,7 +85,7 @@
"seenInvalidated" : 0
}
},
"ts" : ISODate("2017-10-15T01:54:54.507Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"appName" : "MongoDB Shell",
"allUsers" : [ ],

View File

@@ -52,21 +52,21 @@
"numYield" : 0,
"lockStats" : {
"timeLockedMicros" : {
"r" : NumberLong(298),
"w" : NumberLong(0)
"r" : NumberLong(1234),
"w" : NumberLong(4321)
},
"timeAcquiringMicros" : {
"r" : NumberLong(5),
"w" : NumberLong(50)
"r" : NumberLong(9876),
"w" : NumberLong(6789)
}
},
"nreturned" : 0,
"responseLength" : 20,
"millis" : 0,
"millis" : 42,
"execStats" : {
},
"ts" : ISODate("2017-10-15T01:54:10.474Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -75,7 +75,7 @@
},
"nreturned" : 0,
"responseLength" : 20,
"millis" : 0,
"millis" : 42,
"execStats" : {
"stage" : "EOF",
"nReturned" : 0,
@@ -89,7 +89,7 @@
"isEOF" : 1,
"invalidates" : 0
},
"ts" : ISODate("2017-10-15T01:54:20.111Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -73,7 +73,7 @@
"nreturned" : 0,
"responseLength" : 100,
"protocol" : "op_command",
"millis" : 0,
"millis" : 42,
"execStats" : {
"stage" : "EOF",
"nReturned" : 0,
@@ -87,7 +87,7 @@
"isEOF" : 1,
"invalidates" : 0
},
"ts" : ISODate("2017-10-15T01:54:33.358Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -71,7 +71,7 @@
"nreturned" : 0,
"responseLength" : 82,
"protocol" : "op_command",
"millis" : 0,
"millis" : 42,
"planSummary" : "EOF",
"execStats" : {
"stage" : "EOF",
@@ -86,7 +86,7 @@
"isEOF" : 1,
"invalidates" : 0
},
"ts" : ISODate("2017-10-15T01:54:43.922Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"appName" : "MongoDB Shell",
"allUsers" : [ ],

View File

@@ -72,7 +72,7 @@
"nreturned" : 0,
"responseLength" : 82,
"protocol" : "op_msg",
"millis" : 0,
"millis" : 42,
"planSummary" : "EOF",
"execStats" : {
"stage" : "EOF",
@@ -87,7 +87,7 @@
"isEOF" : 1,
"invalidates" : 0
},
"ts" : ISODate("2017-10-15T01:54:54.693Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"appName" : "MongoDB Shell",
"allUsers" : [ ],

View File

@@ -12,21 +12,21 @@
"numYield" : 0,
"lockStats" : {
"timeLockedMicros" : {
"r" : NumberLong(189),
"w" : NumberLong(0)
"r" : NumberLong(1234),
"w" : NumberLong(4321)
},
"timeAcquiringMicros" : {
"r" : NumberLong(14),
"w" : NumberLong(9)
"r" : NumberLong(9876),
"w" : NumberLong(6789)
}
},
"nreturned" : 0,
"responseLength" : 20,
"millis" : 0,
"millis" : 42,
"execStats" : {
},
"ts" : ISODate("2017-10-15T01:54:10.630Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -35,7 +35,7 @@
},
"nreturned" : 0,
"responseLength" : 20,
"millis" : 0,
"millis" : 42,
"execStats" : {
"stage" : "EOF",
"nReturned" : 0,
@@ -49,7 +49,7 @@
"isEOF" : 1,
"invalidates" : 0
},
"ts" : ISODate("2017-10-15T01:54:20.246Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -33,7 +33,7 @@
"nreturned" : 0,
"responseLength" : 100,
"protocol" : "op_command",
"millis" : 0,
"millis" : 42,
"execStats" : {
"stage" : "EOF",
"nReturned" : 0,
@@ -47,7 +47,7 @@
"isEOF" : 1,
"invalidates" : 0
},
"ts" : ISODate("2017-10-15T01:54:33.530Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -31,7 +31,7 @@
"nreturned" : 0,
"responseLength" : 82,
"protocol" : "op_command",
"millis" : 0,
"millis" : 42,
"planSummary" : "EOF",
"execStats" : {
"stage" : "EOF",
@@ -46,7 +46,7 @@
"isEOF" : 1,
"invalidates" : 0
},
"ts" : ISODate("2017-10-15T01:54:44.129Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"appName" : "MongoDB Shell",
"allUsers" : [ ],

View File

@@ -32,7 +32,7 @@
"nreturned" : 0,
"responseLength" : 82,
"protocol" : "op_msg",
"millis" : 0,
"millis" : 42,
"planSummary" : "EOF",
"execStats" : {
"stage" : "EOF",
@@ -47,7 +47,7 @@
"isEOF" : 1,
"invalidates" : 0
},
"ts" : ISODate("2017-10-15T01:54:54.870Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"appName" : "MongoDB Shell",
"allUsers" : [ ],

View File

@@ -18,17 +18,17 @@
"numYield" : 0,
"lockStats" : {
"timeLockedMicros" : {
"r" : NumberLong(508),
"w" : NumberLong(0)
"r" : NumberLong(1234),
"w" : NumberLong(4321)
},
"timeAcquiringMicros" : {
"r" : NumberLong(19),
"w" : NumberLong(38)
"r" : NumberLong(9876),
"w" : NumberLong(6789)
}
},
"nreturned" : 2,
"responseLength" : 108,
"millis" : 0,
"millis" : 42,
"execStats" : {
"type" : "SORT",
"works" : 7,
@@ -95,7 +95,7 @@
}
]
},
"ts" : ISODate("2017-10-15T01:54:10.817Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -41,7 +41,7 @@
},
"nreturned" : 2,
"responseLength" : 108,
"millis" : 0,
"millis" : 42,
"execStats" : {
"stage" : "SORT",
"nReturned" : 2,
@@ -117,7 +117,7 @@
}
}
},
"ts" : ISODate("2017-10-15T01:54:20.410Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -37,7 +37,7 @@
"nreturned" : 2,
"responseLength" : 194,
"protocol" : "op_command",
"millis" : 0,
"millis" : 42,
"execStats" : {
"stage" : "SORT",
"nReturned" : 2,
@@ -116,7 +116,7 @@
}
}
},
"ts" : ISODate("2017-10-15T01:54:33.762Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -35,7 +35,7 @@
"nreturned" : 2,
"responseLength" : 176,
"protocol" : "op_command",
"millis" : 0,
"millis" : 42,
"planSummary" : "IXSCAN { c: 1 }",
"execStats" : {
"stage" : "SORT",
@@ -119,7 +119,7 @@
}
}
},
"ts" : ISODate("2017-10-15T01:54:44.423Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"appName" : "MongoDB Shell",
"allUsers" : [ ],

View File

@@ -36,7 +36,7 @@
"nreturned" : 2,
"responseLength" : 176,
"protocol" : "op_msg",
"millis" : 0,
"millis" : 42,
"planSummary" : "IXSCAN { c: 1 }",
"execStats" : {
"stage" : "SORT",
@@ -120,7 +120,7 @@
}
}
},
"ts" : ISODate("2017-10-15T01:54:55.111Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"appName" : "MongoDB Shell",
"allUsers" : [ ],

View File

@@ -25,20 +25,20 @@
"numYield" : 0,
"lockStats" : {
"timeLockedMicros" : {
"r" : NumberLong(0),
"w" : NumberLong(465)
"r" : NumberLong(1234),
"w" : NumberLong(4321)
},
"timeAcquiringMicros" : {
"r" : NumberLong(0),
"w" : NumberLong(18)
"r" : NumberLong(9876),
"w" : NumberLong(6789)
}
},
"responseLength" : 131,
"millis" : 6,
"millis" : 42,
"execStats" : {
},
"ts" : ISODate("2017-10-15T01:54:11.011Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -48,11 +48,11 @@
}
},
"responseLength" : 131,
"millis" : 0,
"millis" : 42,
"execStats" : {
},
"ts" : ISODate("2017-10-15T01:54:20.581Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -44,11 +44,11 @@
},
"responseLength" : 116,
"protocol" : "op_command",
"millis" : 1,
"millis" : 42,
"execStats" : {
},
"ts" : ISODate("2017-10-15T01:54:34.011Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -44,7 +44,7 @@
},
"responseLength" : 116,
"protocol" : "op_command",
"millis" : 1,
"millis" : 42,
"planSummary" : "COLLSCAN",
"execStats" : {
"stage" : "UPDATE",
@@ -84,7 +84,7 @@
"docsExamined" : 3
}
},
"ts" : ISODate("2017-10-15T01:54:44.656Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"appName" : "MongoDB Shell",
"allUsers" : [ ],

View File

@@ -40,7 +40,7 @@
},
"responseLength" : 116,
"protocol" : "op_msg",
"millis" : 1,
"millis" : 42,
"planSummary" : "COLLSCAN",
"execStats" : {
"stage" : "UPDATE",
@@ -80,7 +80,7 @@
"docsExamined" : 3
}
},
"ts" : ISODate("2017-10-15T01:54:55.391Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"appName" : "MongoDB Shell",
"allUsers" : [ ],

View File

@@ -16,20 +16,20 @@
"numYield" : 0,
"lockStats" : {
"timeLockedMicros" : {
"r" : NumberLong(1945),
"w" : NumberLong(0)
"r" : NumberLong(1234),
"w" : NumberLong(4321)
},
"timeAcquiringMicros" : {
"r" : NumberLong(10),
"w" : NumberLong(10)
"r" : NumberLong(9876),
"w" : NumberLong(6789)
}
},
"responseLength" : 1406,
"millis" : 1,
"millis" : 42,
"execStats" : {
},
"ts" : ISODate("2017-10-15T01:54:11.181Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -38,11 +38,11 @@
}
},
"responseLength" : 1398,
"millis" : 2,
"millis" : 42,
"execStats" : {
},
"ts" : ISODate("2017-10-15T01:54:20.751Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -34,11 +34,11 @@
},
"responseLength" : 1401,
"protocol" : "op_command",
"millis" : 10,
"millis" : 42,
"execStats" : {
},
"ts" : ISODate("2017-10-15T01:54:34.270Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"allUsers" : [ ],
"user" : ""

View File

@@ -34,7 +34,7 @@
},
"responseLength" : 1383,
"protocol" : "op_command",
"millis" : 13,
"millis" : 42,
"planSummary" : "GEO_NEAR_2DSPHERE { loc: \"2dsphere\" }",
"execStats" : {
"stage" : "LIMIT",
@@ -2088,7 +2088,7 @@
{
"stage" : "FETCH",
"nReturned" : 0,
"executionTimeMillisEstimate" : 0,
"executionTimeMillisEstimate" : 10,
"works" : 5,
"advanced" : 0,
"needTime" : 4,
@@ -2102,7 +2102,7 @@
"inputStage" : {
"stage" : "IXSCAN",
"nReturned" : 0,
"executionTimeMillisEstimate" : 0,
"executionTimeMillisEstimate" : 10,
"works" : 5,
"advanced" : 0,
"needTime" : 4,
@@ -3557,7 +3557,7 @@
}
}
},
"ts" : ISODate("2017-10-15T01:54:44.873Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"appName" : "MongoDB Shell",
"allUsers" : [ ],

View File

@@ -35,12 +35,12 @@
},
"responseLength" : 1383,
"protocol" : "op_msg",
"millis" : 11,
"millis" : 42,
"planSummary" : "GEO_NEAR_2DSPHERE { loc: \"2dsphere\" }",
"execStats" : {
"stage" : "LIMIT",
"nReturned" : 10,
"executionTimeMillisEstimate" : 10,
"executionTimeMillisEstimate" : 0,
"works" : 139,
"advanced" : 10,
"needTime" : 128,
@@ -53,7 +53,7 @@
"inputStage" : {
"stage" : "PROJECTION",
"nReturned" : 10,
"executionTimeMillisEstimate" : 10,
"executionTimeMillisEstimate" : 0,
"works" : 139,
"advanced" : 10,
"needTime" : 128,
@@ -3558,7 +3558,7 @@
}
}
},
"ts" : ISODate("2017-10-15T01:54:55.701Z"),
"ts" : ISODate("2020-01-01T00:00:00Z"),
"client" : "127.0.0.1",
"appName" : "MongoDB Shell",
"allUsers" : [ ],

Some files were not shown because too many files have changed in this diff Show More