Commit 6131d708 authored by Michael Widenius's avatar Michael Widenius

Added feature request from lp:956585 "Feature request - prevent truncating query in mytop"

Added feature request 'reading of my.cnf files' to mytop
Thanks to Jean Weisbuch for the patch/suggestion.


scripts/mytop.sh:
  Added feature request from lp:956585 "Feature request - prevent truncating query in mytop"
  Added feature request 'reading of my.cnf files'
parent 84a53543
......@@ -18,8 +18,10 @@ use DBI;
use Getopt::Long;
use Socket;
use List::Util qw(min max);
use File::Basename;
$main::VERSION = "1.9a";
my $path_for_script= dirname($0);
$|=1;
$0 = 'mytop';
......@@ -95,7 +97,8 @@ my %config = (
slow => 10, # slow query time
socket => '',
sort => 0, # default or reverse sort ("s")
user => 'root'
user => 'root',
fullqueries => 0
);
my %qcache = (); ## The query cache--used for full query info support.
......@@ -112,6 +115,17 @@ my $CLEAR = $WIN ? '': `clear`;
my $RM_RESET = 0;
my $RM_NOBLKRD = 3; ## using 4 traps Ctrl-C :-(
# Add options from .my.cnf first
my $my_print_defaults;
if (!defined($my_print_defaults=my_which("my_print_defaults")))
{
print "Warning: Can't find my_print_defaults. Please add it to your PATH!\n";
exit(1);
}
unshift @ARGV, split "\n", `$my_print_defaults client mytop`;
## Read the user's config file, if it exists.
my $config = "$ENV{HOME}/.mytop";
......@@ -160,7 +174,8 @@ GetOptions(
"long_nums!" => \$config{long_nums},
"mode|m=s" => \$config{mode},
"slow=i" => \$config{slow},
"sort=s" => \$config{sort}
"sort=s" => \$config{sort},
"fullqueries|L!" => \$config{fullqueries}
);
## User may have put the port with the host.
......@@ -744,6 +759,25 @@ while (1)
{
$config{mode} = 'status';
}
## L - full queries toggle
if ($key eq 'L')
{
if ($config{fullqueries})
{
$config{fullqueries} = 0;
print RED(), "-- full queries OFF --", RESET();
sleep 1;
}
else
{
$config{fullqueries} = 1;
print RED(), "-- full queries ON --", RESET();
sleep 1;
}
}
}
ReadMode($RM_RESET) unless $config{batchmode};
......@@ -1115,7 +1149,13 @@ sub GetData()
my $state= $width <= 80 ? 6 : int(min(6+($width-80)/3, 15));
my $free = $width - $used - ($state - 6);
my $format= "%9s %8s %15s %9s %6s %5s %6s %${state}s %-.${free}s\n";
my $format2= "%9d %8.8s %15.15s %9.9s %6d %5.1f %6.6s %${state}.${state}s %-${free}.${free}s\n";
my $format2;
if ($config{fullqueries})
{
$format2 = "%9d %8.8s %15.15s %9.9s %6d %5.1f %6.6s %${state}.${state}s %-${free}s\n";
} else {
$format2 = "%9d %8.8s %15.15s %9.9s %6d %5.1f %6.6s %${state}.${state}s %-${free}.${free}s\n";
}
print BOLD() if ($HAS_COLOR);
printf $format,
......@@ -1244,8 +1284,13 @@ sub GetData()
if ($thread->{Info})
{
if ($config{fullqueries})
{
$smInfo = $thread->{Info};
} else {
$smInfo = substr $thread->{Info}, 0, $free;
}
}
# if ($thread->{State})
# {
# $smInfo = substr $thread->{State}, 0, $free;
......@@ -1690,6 +1735,7 @@ Origional work by Jeremy D. Zawodny <${YELLOW}Jeremy\@Zawodny.com${RESET}>
u - show only a specific user
V - show variablesi
: - enter a command (not yet implemented)
L - show full queries (do not strip to terminal width)
Base version from ${GREEN}http://www.mysqlfanboy.com/mytop${RESET}
This version comes as part of the ${GREEN}MariaDB${RESET} distribution.
......@@ -1789,6 +1835,35 @@ sub FindProg($)
return $found;
}
####
#### my_which is used, because we can't assume that every system has the
#### which -command. my_which can take only one argument at a time.
#### Return values: requested system command with the first found path,
#### or undefined, if not found.
####
sub my_which
{
my ($command) = @_;
my (@paths, $path);
return $command if (-f $command && -x $command);
# Check first if this is a source distribution, then if this binary
# distribution and last in the path
push @paths, "./extra";
push @paths, $path_for_script;
push @paths, split(':', $ENV{'PATH'});
foreach $path (@paths)
{
$path .= "/$command";
return $path if (-f $path && -x $path);
}
return undef();
}
=pod
=head1 SYNOPSIS
......@@ -2056,11 +2131,15 @@ command-line arguments are applied.
=head2 Config File
Instead of always using bulky command-line parameters, you can also
use a config file in your home directory (C<~/.mytop>). If present,
B<mytop> will read it automatically. It is read I<before> any of your
use a config files for the default value of your options.
mytop will first read the [client] and [mytop] sections from your
my.cnf files. After that it will read the (C<~/.mytop>) file from your
home directory (if present). These are read I<before> any of your
command-line arguments are processed, so your command-line arguments
will override directives in the config file.
Here is a sample config file C<~/.mytop> which implements the defaults
described above.
......@@ -2275,6 +2354,10 @@ Many thanks go to these fine folks:
=over
=Item Jean Weisbuch
Added --fullqueries and reading of .my.cnf
=item Sami Ahlroos (sami@avis-net.de)
Suggested the idle/noidle stuff.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment