mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
3dac17511b
scripts/make_binary_distribution.sh: Change mode to -rw-rw-r-- scripts/mysql_convert_table_format.sh: Change mode to -rw-rw-r-- scripts/mysql_find_rows.sh: Change mode to -rw-rw-r-- scripts/mysql_setpermission.sh: Change mode to -rw-rw-r-- scripts/mysql_zap.sh: Change mode to -rw-rw-r-- scripts/mysqlaccess.sh: Change mode to -rw-rw-r-- scripts/mysqlbug.sh: Change mode to -rw-rw-r-- scripts/mysqlhotcopy.sh: Change mode to -rw-rw-r-- scripts/safe_mysqld-watch.sh: Change mode to -rw-rw-r-- scripts/safe_mysqld.sh: Change mode to -rw-rw-r-- scripts/mysqlaccess.conf: Change mode to -rw-rw-r-- support-files/binary-configure.sh: Change mode to -rw-rw-r-- Docs/Makefile.am: Remove manual.ps when doing make distclean Docs/manual.texi: Fix Makefile.am: Fix that my_config.h is properly created and removed include/Makefile.am: Fix that my_config.h is properly created and removed libmysql/Makefile.shared: Add some distclean targets scripts/Makefile.am: Add some distclean targets support-files/Makefile.am: Add some distclean targets
148 lines
2.6 KiB
Bash
148 lines
2.6 KiB
Bash
#!@PERL@
|
|
|
|
$version="1.02";
|
|
|
|
use Getopt::Long;
|
|
|
|
$opt_help=$opt_Information=$opt_skip_use_db=0;
|
|
$opt_regexp=$opt_dbregexp=".*";
|
|
$opt_start_row=1; $opt_rows=9999999999;
|
|
|
|
GetOptions("Information","help","regexp=s","start_row=i","rows=i",
|
|
"dbregexp=s", "skip-use-db")
|
|
|| usage();
|
|
usage() if ($opt_help || $opt_Information);
|
|
|
|
$query=$search=$database=$set=""; $eoq=0;
|
|
while (<>)
|
|
{
|
|
next if (length($query) == 0 && /^\#/); # Skipp comments
|
|
$query.=search($_);
|
|
if ($eoq)
|
|
{
|
|
if ($query =~ /^use /i || $query =~ /^SET / ||
|
|
($query =~ /$opt_regexp/o && $database =~ /$opt_dbregexp/o))
|
|
{
|
|
if ($opt_skip_use_db && $query =~ /^use /i)
|
|
{
|
|
$query="";
|
|
next;
|
|
}
|
|
if ($opt_start_row <= 1)
|
|
{
|
|
if ($database)
|
|
{
|
|
print $database, $set;
|
|
$database=$set="";
|
|
}
|
|
print $query;
|
|
last if (--$opt_rows == 0);
|
|
}
|
|
else
|
|
{
|
|
$opt_start_row--;
|
|
if ($query =~ /^use /)
|
|
{
|
|
$database=$query;
|
|
$set="";
|
|
}
|
|
elsif ($query =~ /^SET/)
|
|
{
|
|
$set=$query;
|
|
}
|
|
else
|
|
{
|
|
$set="";
|
|
}
|
|
}
|
|
}
|
|
$query=""; $search=""; $eoq=0;
|
|
}
|
|
}
|
|
|
|
exit 0;
|
|
|
|
sub search
|
|
{
|
|
my($row)=shift;
|
|
my($i);
|
|
|
|
for ($i=0 ; $i < length($row) ; $i++)
|
|
{
|
|
if (length($search))
|
|
{
|
|
if (length($search) > 1)
|
|
{ # Comment
|
|
next if (substr($row,$i,length($search)) ne $search);
|
|
$i+=length($search)-1;
|
|
$search="";
|
|
}
|
|
elsif (substr($row,$i,1) eq '\\') # Escaped char in string
|
|
{
|
|
$i++;
|
|
}
|
|
elsif (substr($row,$i,1) eq $search)
|
|
{
|
|
if (substr($row,$i+1,1) eq $search) # Double " or '
|
|
{
|
|
$i++;
|
|
}
|
|
else
|
|
{
|
|
$search="";
|
|
}
|
|
}
|
|
next;
|
|
}
|
|
if (substr($row,$i,2) eq '/*') # Comment
|
|
{
|
|
$search="*/";
|
|
$i++;
|
|
}
|
|
elsif (substr($row,$i,1) eq "'" || substr($row,$i,1) eq '"')
|
|
{
|
|
$search=substr($row,$i,1);
|
|
}
|
|
}
|
|
$eoq=1 if (!length($search) && $row =~ /;\s*$/);
|
|
return $row;
|
|
}
|
|
|
|
|
|
sub usage
|
|
{
|
|
print <<EOF;
|
|
$0 Ver $version
|
|
|
|
TCX Datakonsult AB, by Monty.
|
|
This software comes with NO WARRANTY: see the file PUBLIC for details.
|
|
|
|
Prints all SQL queries that matches a regexp or contains a 'use
|
|
database' or 'set ..' command to stdout. A SQL query may contain
|
|
newlines. This is useful to find things in a MySQL update log.
|
|
|
|
$0 takes the following options:
|
|
|
|
--help or --Information
|
|
Shows this help
|
|
|
|
--regexp=#
|
|
Print queries that matches this.
|
|
|
|
--start_row=#
|
|
Start output from this row (first row = 1)
|
|
|
|
--skip-use-db
|
|
Don\'t include \'use database\' commands in the output.
|
|
|
|
--rows=#
|
|
Quit after this many rows.
|
|
|
|
Example:
|
|
|
|
$0 --regexp "problem_table" < update.log
|
|
|
|
$0 --regexp "problem_table" update-log.1 update-log.2
|
|
EOF
|
|
exit(0);
|
|
}
|