mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
Merge with base 5.2
This commit is contained in:
commit
eaed26053d
35 changed files with 286 additions and 130 deletions
|
@ -1030,7 +1030,8 @@ static COMMANDS commands[] = {
|
|||
{ (char *)NULL, 0, 0, 0, ""}
|
||||
};
|
||||
|
||||
static const char *load_default_groups[]= { "mysql","client",0 };
|
||||
static const char *load_default_groups[]=
|
||||
{ "mysql", "client", "client-server", "client-mariadb", 0 };
|
||||
|
||||
static int embedded_server_arg_count= 0;
|
||||
static char *embedded_server_args[MAX_SERVER_ARGS];
|
||||
|
|
|
@ -816,8 +816,10 @@ static int run_sql_fix_privilege_tables(void)
|
|||
|
||||
static const char *load_default_groups[]=
|
||||
{
|
||||
"client", /* Read settings how to connect to server */
|
||||
"mysql_upgrade", /* Read special settings for mysql_upgrade*/
|
||||
"client", /* Read settings how to connect to server */
|
||||
"mysql_upgrade", /* Read special settings for mysql_upgrade */
|
||||
"client-server", /* Reads settings common between client & server */
|
||||
"client-mariadb", /* Read mariadb unique client settings */
|
||||
0
|
||||
};
|
||||
|
||||
|
|
|
@ -223,7 +223,8 @@ static struct my_option my_long_options[] =
|
|||
};
|
||||
|
||||
|
||||
static const char *load_default_groups[]= { "mysqladmin","client",0 };
|
||||
static const char *load_default_groups[]=
|
||||
{ "mysqladmin", "client", "client-server", "client-mariadb", 0 };
|
||||
|
||||
my_bool
|
||||
get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
|
|
|
@ -65,7 +65,8 @@ static FILE *result_file;
|
|||
#ifndef DBUG_OFF
|
||||
static const char* default_dbug_option = "d:t:o,/tmp/mysqlbinlog.trace";
|
||||
#endif
|
||||
static const char *load_default_groups[]= { "mysqlbinlog","client",0 };
|
||||
static const char *load_default_groups[]=
|
||||
{ "mysqlbinlog", "client", "client-server", "client-mariadb", 0 };
|
||||
|
||||
static void error(const char *format, ...) ATTRIBUTE_FORMAT(printf, 1, 2);
|
||||
static void warning(const char *format, ...) ATTRIBUTE_FORMAT(printf, 1, 2);
|
||||
|
|
|
@ -187,7 +187,8 @@ static struct my_option my_long_options[] =
|
|||
{0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
|
||||
};
|
||||
|
||||
static const char *load_default_groups[] = { "mysqlcheck", "client", 0 };
|
||||
static const char *load_default_groups[]=
|
||||
{ "mysqlcheck", "client", "client-server", "client-mariadb", 0 };
|
||||
|
||||
|
||||
static void print_version(void);
|
||||
|
|
|
@ -480,7 +480,8 @@ static struct my_option my_long_options[] =
|
|||
{0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
|
||||
};
|
||||
|
||||
static const char *load_default_groups[]= { "mysqldump","client",0 };
|
||||
static const char *load_default_groups[]=
|
||||
{ "mysqldump", "client", "client-server", "client-mariadb", 0 };
|
||||
|
||||
static void maybe_exit(int error);
|
||||
static void die(int error, const char* reason, ...);
|
||||
|
|
|
@ -183,7 +183,8 @@ static struct my_option my_long_options[] =
|
|||
};
|
||||
|
||||
|
||||
static const char *load_default_groups[]= { "mysqlimport","client",0 };
|
||||
static const char *load_default_groups[]=
|
||||
{ "mysqlimport","client", "client-server", "client-mariadb", 0 };
|
||||
|
||||
#include <help_start.h>
|
||||
|
||||
|
|
|
@ -53,7 +53,8 @@ static void print_res_header(MYSQL_RES *result);
|
|||
static void print_res_top(MYSQL_RES *result);
|
||||
static void print_res_row(MYSQL_RES *result,MYSQL_ROW cur);
|
||||
|
||||
static const char *load_default_groups[]= { "mysqlshow","client",0 };
|
||||
static const char *load_default_groups[]=
|
||||
{ "mysqlshow","client", "client-server", "client-mariadb", 0 };
|
||||
static char * opt_mysql_unix_port=0;
|
||||
|
||||
int main(int argc, char **argv)
|
||||
|
|
|
@ -178,7 +178,8 @@ static uint opt_protocol= 0;
|
|||
static int get_options(int *argc,char ***argv);
|
||||
static uint opt_mysql_port= 0;
|
||||
|
||||
static const char *load_default_groups[]= { "mysqlslap","client",0 };
|
||||
static const char *load_default_groups[]=
|
||||
{ "mysqlslap", "client", "client-server", "client-mariadb", 0 };
|
||||
|
||||
typedef struct statement statement;
|
||||
|
||||
|
|
|
@ -118,7 +118,8 @@ static my_bool abort_on_error= 1;
|
|||
static my_bool server_initialized= 0;
|
||||
static my_bool is_windows= 0;
|
||||
static char **default_argv;
|
||||
static const char *load_default_groups[]= { "mysqltest", "client", 0 };
|
||||
static const char *load_default_groups[]=
|
||||
{ "mysqltest", "client", "client-server", "client-mariadb", 0 };
|
||||
static char line_buffer[MAX_DELIMITER_LENGTH], *line_buffer_pos= line_buffer;
|
||||
|
||||
static uint start_lineno= 0; /* Start line of current command */
|
||||
|
|
|
@ -104,7 +104,7 @@ static void usage(my_bool version)
|
|||
my_print_help(my_long_options);
|
||||
my_print_default_files(config_file);
|
||||
my_print_variables(my_long_options);
|
||||
printf("\nExample usage:\n%s --defaults-file=example.cnf client mysql\n", my_progname);
|
||||
printf("\nExample usage:\n%s --defaults-file=example.cnf client client-server mysql\n", my_progname);
|
||||
}
|
||||
|
||||
#include <help_end.h>
|
||||
|
|
|
@ -88,7 +88,7 @@ TEST_DIRS = t r include std_data std_data/parts collections \
|
|||
suite/federated \
|
||||
suite/pbxt/t suite/pbxt/r suite/pbxt \
|
||||
suite/vcol suite/vcol/t suite/vcol/r suite/vcol/inc \
|
||||
suite/oqgraph suite/oqgraph/t suite/oqgraph/r suite/oqgraph/include \
|
||||
suite/oqgraph suite/oqgraph/t suite/oqgraph/r \
|
||||
suite/percona suite/sphinx \
|
||||
suite/funcs_1 suite/funcs_1/bitdata \
|
||||
suite/funcs_1/include suite/funcs_1/lib suite/funcs_1/r \
|
||||
|
|
|
@ -209,6 +209,7 @@ my @mysqld_rules=
|
|||
(
|
||||
{ 'basedir' => sub { return shift->{ARGS}->{basedir}; } },
|
||||
{ 'tmpdir' => \&fix_tmpdir },
|
||||
{ 'log-basename' => sub { return "mysqld" } },
|
||||
{ 'character-sets-dir' => \&fix_charset_dir },
|
||||
{ 'language' => \&fix_language },
|
||||
{ 'datadir' => \&fix_datadir },
|
||||
|
@ -217,6 +218,7 @@ my @mysqld_rules=
|
|||
{ 'port' => \&fix_port },
|
||||
{ '#extra-port' => \&fix_port },
|
||||
{ 'socket' => \&fix_socket },
|
||||
{ 'log-error' => \&fix_log_error },
|
||||
{ '#log-error' => \&fix_log_error },
|
||||
{ 'general-log' => sub { return 1; } },
|
||||
{ 'general-log-file' => \&fix_log },
|
||||
|
@ -225,6 +227,7 @@ my @mysqld_rules=
|
|||
{ '#user' => sub { return shift->{ARGS}->{user} || ""; } },
|
||||
{ '#password' => sub { return shift->{ARGS}->{password} || ""; } },
|
||||
{ 'server-id' => \&fix_server_id, },
|
||||
{ 'sync-sys' => sub { return 1; } },
|
||||
# By default, prevent the started mysqld to access files outside of vardir
|
||||
{ 'secure-file-priv' => sub { return shift->{ARGS}->{vardir}; } },
|
||||
{ 'ssl-ca' => \&fix_ssl_ca },
|
||||
|
|
|
@ -33,12 +33,12 @@ ERROR HY000: Variable 'log_slave_updates' is a read only variable
|
|||
#
|
||||
SHOW VARIABLES like 'relay_log';
|
||||
Variable_name Value
|
||||
relay_log
|
||||
relay_log mysqld-relay-bin
|
||||
SELECT @@session.relay_log;
|
||||
ERROR HY000: Variable 'relay_log' is a GLOBAL variable
|
||||
SELECT @@global.relay_log;
|
||||
@@global.relay_log
|
||||
NULL
|
||||
mysqld-relay-bin
|
||||
SET @@session.relay_log= 'x';
|
||||
ERROR HY000: Variable 'relay_log' is a read only variable
|
||||
SET @@global.relay_log= 'x';
|
||||
|
@ -46,12 +46,12 @@ ERROR HY000: Variable 'relay_log' is a read only variable
|
|||
#
|
||||
SHOW VARIABLES like 'relay_log_index';
|
||||
Variable_name Value
|
||||
relay_log_index
|
||||
relay_log_index mysqld-relay-bin.index
|
||||
SELECT @@session.relay_log_index;
|
||||
ERROR HY000: Variable 'relay_log_index' is a GLOBAL variable
|
||||
SELECT @@global.relay_log_index;
|
||||
@@global.relay_log_index
|
||||
NULL
|
||||
mysqld-relay-bin.index
|
||||
SET @@session.relay_log_index= 'x';
|
||||
ERROR HY000: Variable 'relay_log_index' is a read only variable
|
||||
SET @@global.relay_log_index= 'x';
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
--log-bin=master-bin --log-bin-index=master-bin
|
|
@ -1 +1 @@
|
|||
--force-restart --skip-stack-trace --test-expect-abort --log-warnings=0
|
||||
--force-restart --skip-stack-trace --test-expect-abort --log-warnings=0 --log-bin=master-bin --log-bin-index=master-bin
|
||||
|
|
|
@ -1 +1 @@
|
|||
--binlog-ignore-db=b42851 --log-error
|
||||
--binlog-ignore-db=b42851 --log-error --log-bin=master-bin --log-bin-index=master-bin
|
||||
|
|
|
@ -101,6 +101,7 @@ if(!`select LENGTH('$log_error_')`)
|
|||
# does not know the location of its .err log, use default location
|
||||
let $log_error_ = $MYSQLTEST_VARDIR/log/mysqld.1.err;
|
||||
}
|
||||
|
||||
# Assign env variable LOG_ERROR
|
||||
let LOG_ERROR=$log_error_;
|
||||
|
||||
|
@ -109,8 +110,9 @@ let LOG_ERROR=$log_error_;
|
|||
|
||||
perl;
|
||||
use strict;
|
||||
use Cwd;
|
||||
my $log_error= $ENV{'LOG_ERROR'} or die "LOG_ERROR not set";
|
||||
open(FILE, "$log_error") or die("Unable to open $log_error: $!\n");
|
||||
open(FILE, "$log_error") or die("Unable to open '$log_error' from directory " . cwd() . "\n");
|
||||
my $count = () = grep(/Bug#46265/g,<FILE>);
|
||||
print "Occurrences: $count\n";
|
||||
close(FILE);
|
||||
|
|
|
@ -2,7 +2,7 @@ include/rpl_init.inc [topology=1->2->1]
|
|||
show variables like 'relay_log%';
|
||||
Variable_name Value
|
||||
relay_log master-relay-bin
|
||||
relay_log_index
|
||||
relay_log_index master-relay-bin.index
|
||||
relay_log_info_file relay-log.info
|
||||
relay_log_purge ON
|
||||
relay_log_space_limit 0
|
||||
|
|
|
@ -6,8 +6,9 @@
|
|||
# Run the master.sh script before starting this process
|
||||
#!run-master-sh
|
||||
|
||||
log-bin= master-bin
|
||||
relay-log= master-relay-bin
|
||||
log-basename= master
|
||||
# log-bin= master-bin
|
||||
# relay-log= master-relay-bin
|
||||
|
||||
[mysqld.2]
|
||||
# Run the slave.sh script before starting this process
|
||||
|
@ -17,7 +18,8 @@ relay-log= master-relay-bin
|
|||
# starting the mysqld
|
||||
#!use-slave-opt
|
||||
|
||||
relay-log= slave-relay-bin
|
||||
log-basename= slave
|
||||
# relay-log= slave-relay-bin
|
||||
|
||||
init-rpl-role= slave
|
||||
log-slave-updates
|
||||
|
|
|
@ -103,7 +103,7 @@ do
|
|||
fi
|
||||
done
|
||||
|
||||
parse_arguments `$print_defaults $defaults mysql_install_db mysql_fix_privilege_tables`
|
||||
parse_arguments `$print_defaults $defaults mysql_install_db client client-server client-mariadb mysql_fix_privilege_tables`
|
||||
parse_arguments PICK-ARGS-FROM-ARGV "$@"
|
||||
|
||||
if test -z "$password"
|
||||
|
|
|
@ -116,7 +116,7 @@ sub parse_arguments
|
|||
"basedir=s",
|
||||
"builddir=s", # FIXME not documented
|
||||
"srcdir=s",
|
||||
"ldata|datadir=s",
|
||||
"ldata|datadir|data=s",
|
||||
|
||||
# Note that the user will be passed to mysqld so that it runs
|
||||
# as 'user' (crucial e.g. if log-bin=/some_other_path/
|
||||
|
@ -274,7 +274,7 @@ else
|
|||
|
||||
my @default_options;
|
||||
my $cmd = quote_options($print_defaults,$opt->{'defaults-file'},
|
||||
"mysqld","mysql_install_db");
|
||||
"mysqld","mariadb","mysql_install_db","server","client-server");
|
||||
open(PIPE, "$cmd |") or error($opt,"can't run $cmd: $!");
|
||||
while ( <PIPE> )
|
||||
{
|
||||
|
|
|
@ -50,6 +50,8 @@ Usage: $0 [OPTIONS]
|
|||
use hostnames will use IP addresses.
|
||||
--ldata=path The path to the MariaDB data directory. Same as
|
||||
--datadir.
|
||||
--no-defaults Don't read any configuration files (my.cnf).
|
||||
--defaults-file=path Read only this configuration file.
|
||||
--rpm For internal use. This option is used by RPM files
|
||||
during the MariaDB installation process.
|
||||
--skip-name-resolve Use IP addresses rather than hostnames when creating
|
||||
|
@ -79,6 +81,13 @@ s_echo()
|
|||
fi
|
||||
}
|
||||
|
||||
link_to_help()
|
||||
{
|
||||
echo
|
||||
echo "The latest information about mysql_install_db is available at"
|
||||
echo "http://kb.askmonty.org/v/installing-system-tables-mysql_install_db."
|
||||
}
|
||||
|
||||
parse_arg()
|
||||
{
|
||||
echo "$1" | sed -e 's/^[^=]*=//'
|
||||
|
@ -103,7 +112,7 @@ parse_arguments()
|
|||
--basedir=*) basedir=`parse_arg "$arg"` ;;
|
||||
--builddir=*) builddir=`parse_arg "$arg"` ;;
|
||||
--srcdir=*) srcdir=`parse_arg "$arg"` ;;
|
||||
--ldata=*|--datadir=*) ldata=`parse_arg "$arg"` ;;
|
||||
--ldata=*|--datadir=*|--data=*) ldata=`parse_arg "$arg"` ;;
|
||||
--user=*)
|
||||
# Note that the user will be passed to mysqld so that it runs
|
||||
# as 'user' (crucial e.g. if log-bin=/some_other_path/
|
||||
|
@ -194,7 +203,7 @@ cannot_find_file()
|
|||
echo "If you are using a binary release, you must either be at the top"
|
||||
echo "level of the extracted archive, or pass the --basedir option"
|
||||
echo "pointing to that location."
|
||||
echo
|
||||
link_to_help
|
||||
}
|
||||
|
||||
# Ok, let's go. We first need to parse arguments which are required by
|
||||
|
@ -213,6 +222,7 @@ parse_arguments PICK-ARGS-FROM-ARGV "$@"
|
|||
if test -n "$srcdir" && test -n "$basedir"
|
||||
then
|
||||
echo "ERROR: Specify either --basedir or --srcdir, not both."
|
||||
link_to_help
|
||||
exit 1
|
||||
fi
|
||||
if test -n "$srcdir"
|
||||
|
@ -242,7 +252,7 @@ fi
|
|||
|
||||
# Now we can get arguments from the groups [mysqld] and [mysql_install_db]
|
||||
# in the my.cfg file, then re-run to merge with command line arguments.
|
||||
parse_arguments `$print_defaults $defaults mysqld mysql_install_db`
|
||||
parse_arguments `$print_defaults $defaults mysqld mariadb mysql_install_db client-server`
|
||||
parse_arguments PICK-ARGS-FROM-ARGV "$@"
|
||||
|
||||
# Configure paths to support files
|
||||
|
@ -335,6 +345,7 @@ then
|
|||
echo "hostname."
|
||||
echo "If you want to solve this at a later stage, restart this script"
|
||||
echo "with the --force option"
|
||||
link_to_help
|
||||
exit 1
|
||||
fi
|
||||
echo "WARNING: The host '$hostname' could not be looked up with resolveip."
|
||||
|
@ -356,7 +367,12 @@ for dir in $ldata $ldata/mysql $ldata/test
|
|||
do
|
||||
if test ! -d $dir
|
||||
then
|
||||
mkdir -p $dir
|
||||
if ! `mkdir -p $dir`
|
||||
then
|
||||
echo "Fatal error Can't create database directory '$dir'"
|
||||
link_to_help
|
||||
exit 1
|
||||
fi
|
||||
chmod 700 $dir
|
||||
fi
|
||||
if test -w / -a ! -z "$user"
|
||||
|
@ -384,12 +400,12 @@ fi
|
|||
mysqld_bootstrap="${MYSQLD_BOOTSTRAP-$mysqld}"
|
||||
mysqld_install_cmd_line="$mysqld_bootstrap $defaults $mysqld_opt --bootstrap \
|
||||
--basedir=$basedir --datadir=$ldata --log-warnings=0 --loose-skip-innodb \
|
||||
--loose-skip-ndbcluster $args --max_allowed_packet=8M \
|
||||
--loose-skip-ndbcluster --loose-skip-pbxt $args --max_allowed_packet=8M \
|
||||
--default-storage-engine=myisam \
|
||||
--net_buffer_length=16K"
|
||||
|
||||
# Create the system and help tables by passing them to "mysqld --bootstrap"
|
||||
s_echo "Installing MariaDB/MySQL system tables..."
|
||||
s_echo "Installing MariaDB/MySQL system tables in '$ldata' ..."
|
||||
if { echo "use mysql;"; cat $create_system_tables $fill_system_tables; } | eval "$filter_cmd_line" | $mysqld_install_cmd_line > /dev/null
|
||||
then
|
||||
s_echo "OK"
|
||||
|
@ -410,9 +426,7 @@ else
|
|||
echo
|
||||
echo "Try 'mysqld --help' if you have problems with paths. Using"
|
||||
echo "--general-log gives you a log in $ldata that may be helpful."
|
||||
echo
|
||||
echo "The latest information about mysql_install_db is available at"
|
||||
echo "http://kb.askmonty.org/v/installing-system-tables-mysql_install_db."
|
||||
link_to_help
|
||||
echo "MariaDB is hosted on launchpad; You can find the latest source and"
|
||||
echo "email lists at http://launchpad.net/maria"
|
||||
echo
|
||||
|
@ -454,13 +468,13 @@ then
|
|||
echo "databases and anonymous user created by default. This is"
|
||||
echo "strongly recommended for production servers."
|
||||
echo
|
||||
echo "See the MySQL manual for more instructions."
|
||||
echo "See the MariaDB knowledge or the MySQL manual for more instructions."
|
||||
|
||||
if test "$in_rpm" -eq 0
|
||||
then
|
||||
echo
|
||||
echo "You can start the MariaDB daemon with:"
|
||||
echo "cd $basedir ; $bindir/mysqld_safe &"
|
||||
echo "cd $basedir ; $bindir/mysqld_safe --datadir=$ldata"
|
||||
echo
|
||||
echo "You can test the MariaDB daemon with mysql-test-run.pl"
|
||||
echo "cd $basedir/mysql-test ; perl mysql-test-run.pl"
|
||||
|
|
|
@ -165,9 +165,9 @@ then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
# Now we can get arguments from the group [client]
|
||||
# Now we can get arguments from the group [client] and [client-server]
|
||||
# in the my.cfg file, then re-run to merge with command line arguments.
|
||||
parse_arguments `$print_defaults $defaults client`
|
||||
parse_arguments `$print_defaults $defaults client client-server client-mariadb`
|
||||
parse_arguments PICK-ARGS-FROM-ARGV "$@"
|
||||
|
||||
# Configure paths to support files
|
||||
|
|
|
@ -200,7 +200,7 @@ sub defaults_for_group
|
|||
|
||||
sub init_log
|
||||
{
|
||||
foreach my $opt (defaults_for_group('mysqld'))
|
||||
foreach my $opt (defaults_for_group('mysqld mariadb'))
|
||||
{
|
||||
if ($opt =~ m/^--datadir=(.*)/ && -d "$1" && -w "$1")
|
||||
{
|
||||
|
|
|
@ -159,9 +159,13 @@ parse_arguments() {
|
|||
case "$arg" in
|
||||
# these get passed explicitly to mysqld
|
||||
--basedir=*) MY_BASEDIR_VERSION="$val" ;;
|
||||
--datadir=*) DATADIR="$val" ;;
|
||||
--datadir=*|--data=*) DATADIR="$val" ;;
|
||||
--pid-file=*) pid_file="$val" ;;
|
||||
--user=*) user="$val"; SET_USER=1 ;;
|
||||
--log-basename=*|--hostname=*|--loose-log-basename=*)
|
||||
pid_file="$val.pid";
|
||||
err_log="$val.err";
|
||||
;;
|
||||
|
||||
# these might have been set in a [mysqld_safe] section of my.cnf
|
||||
# they are added to mysqld command line to override settings from my.cnf
|
||||
|
@ -313,7 +317,7 @@ append_arg_to_args () {
|
|||
args=
|
||||
|
||||
SET_USER=2
|
||||
parse_arguments `$print_defaults $defaults --loose-verbose mysqld server`
|
||||
parse_arguments `$print_defaults $defaults --loose-verbose mysqld mariadb server client-server`
|
||||
if test $SET_USER -eq 2
|
||||
then
|
||||
SET_USER=0
|
||||
|
@ -411,7 +415,11 @@ safe_mysql_unix_port=${mysql_unix_port:-${MYSQL_UNIX_PORT:-@MYSQL_UNIX_ADDR@}}
|
|||
mysql_unix_port_dir=`dirname $safe_mysql_unix_port`
|
||||
if [ ! -d $mysql_unix_port_dir ]
|
||||
then
|
||||
mkdir $mysql_unix_port_dir
|
||||
if ! `mkdir -p $mysql_unix_port_dir`
|
||||
then
|
||||
echo "Fatal error Can't create database directory '$mysql_unix_port'"
|
||||
exit 1
|
||||
fi
|
||||
chown $user $mysql_unix_port_dir
|
||||
chmod 755 $mysql_unix_port_dir
|
||||
fi
|
||||
|
@ -434,14 +442,14 @@ fi
|
|||
|
||||
if test -z "$pid_file"
|
||||
then
|
||||
pid_file="$DATADIR/`@HOSTNAME@`.pid"
|
||||
else
|
||||
case "$pid_file" in
|
||||
/* ) ;;
|
||||
* ) pid_file="$DATADIR/$pid_file" ;;
|
||||
esac
|
||||
pid_file="`@HOSTNAME@`.pid"
|
||||
fi
|
||||
# MariaDB wants pid file without datadir
|
||||
append_arg_to_args "--pid-file=$pid_file"
|
||||
case "$pid_file" in
|
||||
/* ) ;;
|
||||
* ) pid_file="$DATADIR/$pid_file" ;;
|
||||
esac
|
||||
|
||||
if test -n "$mysql_unix_port"
|
||||
then
|
||||
|
|
|
@ -20,13 +20,13 @@ GetOptions(\%opt,
|
|||
'v|verbose+',# verbose
|
||||
'help+', # write usage info
|
||||
'd|debug+', # debug
|
||||
's=s', # what to sort by (al, at, ar, c, t, l, r)
|
||||
's=s', # what to sort by (al, at, ar, ae, c, t, l, r, e)
|
||||
'r!', # reverse the sort order (largest last instead of first)
|
||||
't=i', # just show the top n queries
|
||||
'a!', # don't abstract all numbers to N and strings to 'S'
|
||||
'n=i', # abstract numbers with at least n digits within names
|
||||
'g=s', # grep: only consider stmts that include this string
|
||||
'h=s', # hostname of db server for *-slow.log filename (can be wildcard)
|
||||
'h=s', # hostname/basename of db server for *-slow.log filename (can be wildcard)
|
||||
'i=s', # name of server instance (if using mysql.server startup script)
|
||||
'l!', # don't subtract lock time from total time
|
||||
) or usage("bad option");
|
||||
|
@ -34,34 +34,42 @@ GetOptions(\%opt,
|
|||
$opt{'help'} and usage();
|
||||
|
||||
unless (@ARGV) {
|
||||
my $defaults = `my_print_defaults mysqld`;
|
||||
my $basedir = ($defaults =~ m/--basedir=(.*)/)[0]
|
||||
or die "Can't determine basedir from 'my_print_defaults mysqld' output: $defaults";
|
||||
warn "basedir=$basedir\n" if $opt{v};
|
||||
my $defaults = `my_print_defaults mysqld mariadb`;
|
||||
|
||||
my $datadir = ($defaults =~ m/--datadir=(.*)/)[0];
|
||||
my $slowlog = ($defaults =~ m/--log-slow-queries=(.*)/)[0];
|
||||
my $datadir = ($defaults =~ m/--datadir=(.*)/g)[-1];
|
||||
if (!$datadir or $opt{i}) {
|
||||
# determine the datadir from the instances section of /etc/my.cnf, if any
|
||||
my $instances = `my_print_defaults instances`;
|
||||
die "Can't determine datadir from 'my_print_defaults mysqld' output: $defaults"
|
||||
die "Can't determine datadir from 'my_print_defaults instances' output: $defaults"
|
||||
unless $instances;
|
||||
my @instances = ($instances =~ m/^--(\w+)-/mg);
|
||||
die "No -i 'instance_name' specified to select among known instances: @instances.\n"
|
||||
unless $opt{i};
|
||||
die "Instance '$opt{i}' is unknown (known instances: @instances)\n"
|
||||
unless grep { $_ eq $opt{i} } @instances;
|
||||
$datadir = ($instances =~ m/--$opt{i}-datadir=(.*)/)[0]
|
||||
$datadir = ($instances =~ m/--$opt{i}-datadir=(.*)/g)[-1]
|
||||
or die "Can't determine --$opt{i}-datadir from 'my_print_defaults instances' output: $instances";
|
||||
warn "datadir=$datadir\n" if $opt{v};
|
||||
}
|
||||
|
||||
if ( -f $slowlog ) {
|
||||
my $slowlog = ($defaults =~ m/--log[-_]slow[-_]queries=(.*)/g)[-1];
|
||||
if (!$slowlog)
|
||||
{
|
||||
$slowlog = ($defaults =~ m/--slow[-_]query[-_]log[-_]file=(.*)/g)[-1];
|
||||
}
|
||||
if ( $slowlog )
|
||||
{
|
||||
@ARGV = ($slowlog);
|
||||
die "Can't find '$slowlog'\n" unless @ARGV;
|
||||
} else {
|
||||
@ARGV = <$datadir/$opt{h}-slow.log>;
|
||||
die "Can't find '$datadir/$opt{h}-slow.log'\n" unless @ARGV;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!$opt{h})
|
||||
{
|
||||
$opt{h}= ($defaults =~ m/--log[-_]basename=(.*)/g)[-1];
|
||||
}
|
||||
@ARGV = <$datadir/$opt{h}-slow.log>;
|
||||
die "Can't find '$datadir/$opt{h}-slow.log'\n" unless @ARGV;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -83,8 +91,10 @@ while ( defined($_ = shift @pending) or defined($_ = <>) ) {
|
|||
s/^#? Time: \d{6}\s+\d+:\d+:\d+.*\n//;
|
||||
my ($user,$host) = s/^#? User\@Host:\s+(\S+)\s+\@\s+(\S+).*\n// ? ($1,$2) : ('','');
|
||||
|
||||
s/^# Query_time: ([0-9.]+)\s+Lock_time: ([0-9.]+)\s+Rows_sent: ([0-9.]+).*\n//;
|
||||
my ($t, $l, $r) = ($1, $2, $3);
|
||||
s/^# Thread_id: [0-9]+\s+Schema: [^\n]+\n//;
|
||||
s/^# Query_time: ([0-9.]+)\s+Lock_time: ([0-9.]+)\s+Rows_sent: ([0-9.]+)\s+Rows_examined: ([0-9.]+).*\n//;
|
||||
my ($t, $l, $r, $e) = ($1, $2, $3, $4);
|
||||
|
||||
$t -= $l unless $opt{l};
|
||||
|
||||
# remove fluff that mysqld writes to log when it (re)starts:
|
||||
|
@ -92,6 +102,11 @@ while ( defined($_ = shift @pending) or defined($_ = <>) ) {
|
|||
s!^Tcp port: \d+ Unix socket: \S+\n!!mg;
|
||||
s!^Time.*Id.*Command.*Argument.*\n!!mg;
|
||||
|
||||
# Remove optimizer info
|
||||
s!^# QC_Hit: \S+\s+Full_scan: \S+\s+Full_join: \S+\s+Tmp_table: \S+\s+Tmp_table_on_disk: \S+[^\n]+\n!!mg;
|
||||
s!^# Filesort: \S+\s+Filesort_on_disk: \S+[^\n]+\n!!mg;
|
||||
s!^# Full_scan: \S+\s+Full_join: \S+[^\n]+\n!!mg;
|
||||
|
||||
s/^use \w+;\n//; # not consistently added
|
||||
s/^SET timestamp=\d+;\n//;
|
||||
|
||||
|
@ -121,6 +136,7 @@ while ( defined($_ = shift @pending) or defined($_ = <>) ) {
|
|||
$s->{t} += $t;
|
||||
$s->{l} += $l;
|
||||
$s->{r} += $r;
|
||||
$s->{e} += $e;
|
||||
$s->{users}->{$user}++ if $user;
|
||||
$s->{hosts}->{$host}++ if $host;
|
||||
|
||||
|
@ -129,10 +145,11 @@ while ( defined($_ = shift @pending) or defined($_ = <>) ) {
|
|||
|
||||
foreach (keys %stmt) {
|
||||
my $v = $stmt{$_} || die;
|
||||
my ($c, $t, $l, $r) = @{ $v }{qw(c t l r)};
|
||||
my ($c, $t, $l, $r, $e) = @{ $v }{qw(c t l r e)};
|
||||
$v->{at} = $t / $c;
|
||||
$v->{al} = $l / $c;
|
||||
$v->{ar} = $r / $c;
|
||||
$v->{ae} = $e / $c;
|
||||
}
|
||||
|
||||
my @sorted = sort { $stmt{$b}->{$opt{s}} <=> $stmt{$a}->{$opt{s}} } keys %stmt;
|
||||
|
@ -141,13 +158,13 @@ my @sorted = sort { $stmt{$b}->{$opt{s}} <=> $stmt{$a}->{$opt{s}} } keys %stmt;
|
|||
|
||||
foreach (@sorted) {
|
||||
my $v = $stmt{$_} || die;
|
||||
my ($c, $t,$at, $l,$al, $r,$ar) = @{ $v }{qw(c t at l al r ar)};
|
||||
my ($c, $t,$at, $l,$al, $r,$ar,$e, $ae) = @{ $v }{qw(c t at l al r ar e ae)};
|
||||
my @users = keys %{$v->{users}};
|
||||
my $user = (@users==1) ? $users[0] : sprintf "%dusers",scalar @users;
|
||||
my @hosts = keys %{$v->{hosts}};
|
||||
my $host = (@hosts==1) ? $hosts[0] : sprintf "%dhosts",scalar @hosts;
|
||||
printf "Count: %d Time=%.2fs (%ds) Lock=%.2fs (%ds) Rows=%.1f (%d), $user\@$host\n%s\n\n",
|
||||
$c, $at,$t, $al,$l, $ar,$r, $_;
|
||||
printf "Count: %d Time=%.2fs (%ds) Lock=%.2fs (%ds) Rows_sent=%.1f (%d), Rows_examined=%.1f (%d), $user\@$host\n%s\n\n",
|
||||
$c, $at,$t, $al,$l, $ar,$r, $ae, $e, $_;
|
||||
}
|
||||
|
||||
sub usage {
|
||||
|
@ -163,7 +180,7 @@ Parse and summarize the MySQL slow query log. Options are
|
|||
|
||||
-v verbose
|
||||
-d debug
|
||||
-s ORDER what to sort by (al, at, ar, c, l, r, t), 'at' is default
|
||||
-s ORDER what to sort by (al, at, ar, ae, c, l, r, e, t), 'at' is default
|
||||
al: average lock time
|
||||
ar: average rows sent
|
||||
at: average query time
|
||||
|
|
|
@ -1064,12 +1064,16 @@ void mysql_read_default_options(struct st_mysql_options *options,
|
|||
{
|
||||
int argc;
|
||||
char *argv_buff[1],**argv;
|
||||
const char *groups[3];
|
||||
const char *groups[5];
|
||||
DBUG_ENTER("mysql_read_default_options");
|
||||
DBUG_PRINT("enter",("file: %s group: %s",filename,group ? group :"NULL"));
|
||||
|
||||
argc=1; argv=argv_buff; argv_buff[0]= (char*) "client";
|
||||
groups[0]= (char*) "client"; groups[1]= (char*) group; groups[2]=0;
|
||||
groups[0]= (char*) "client";
|
||||
groups[1]= (char*) "client-server";
|
||||
groups[2]= (char*) "client-mariadb";
|
||||
groups[3]= (char*) group;
|
||||
groups[4]=0;
|
||||
|
||||
my_load_defaults(filename, groups, &argc, &argv, NULL);
|
||||
if (argc != 1) /* If some default option */
|
||||
|
|
21
sql/log.cc
21
sql/log.cc
|
@ -112,6 +112,27 @@ char *make_default_log_name(char *buff,const char* log_ext)
|
|||
MYF(MY_UNPACK_FILENAME|MY_REPLACE_EXT));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Create a filename from a base with a given suffix.
|
||||
The name is allocated trough my_once_alloc(), so one should only
|
||||
use this for startup options that can all be freed at once.
|
||||
*/
|
||||
|
||||
char *make_once_alloced_filename(const char *basename, const char *ext)
|
||||
{
|
||||
char buff[FN_REFLEN+10], *end, *res;
|
||||
size_t length;
|
||||
strmake(buff, basename, sizeof(buff)-10);
|
||||
end= strmov(fn_ext(buff), ext);
|
||||
length= (size_t) (end - buff) + 1;
|
||||
|
||||
if ((res= (char*) my_once_alloc(length, MYF(MY_WME))))
|
||||
memcpy(res, buff, length);
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Helper class to hold a mutex for the duration of the
|
||||
block.
|
||||
|
|
|
@ -1625,6 +1625,7 @@ void remove_db_from_cache(const char *db);
|
|||
void flush_tables();
|
||||
bool is_equal(const LEX_STRING *a, const LEX_STRING *b);
|
||||
char *make_default_log_name(char *buff,const char* log_ext);
|
||||
char *make_once_alloced_filename(const char *basename, const char *ext);
|
||||
|
||||
#ifdef WITH_PARTITION_STORAGE_ENGINE
|
||||
uint fast_alter_partition_table(THD *thd, TABLE *table,
|
||||
|
@ -1966,7 +1967,7 @@ extern MYSQL_PLUGIN_IMPORT uint reg_ext_length;
|
|||
#ifdef MYSQL_SERVER
|
||||
extern char glob_hostname[FN_REFLEN], mysql_home[FN_REFLEN];
|
||||
extern char pidfile_name[FN_REFLEN], system_time_zone[30], *opt_init_file;
|
||||
extern char log_error_file[FN_REFLEN], *opt_tc_log_file;
|
||||
extern char log_error_file[FN_REFLEN], *opt_tc_log_file, *opt_log_basename;
|
||||
extern ulonglong log_10_int[20];
|
||||
extern ulonglong keybuff_size;
|
||||
extern ulonglong thd_startup_options;
|
||||
|
|
173
sql/mysqld.cc
173
sql/mysqld.cc
|
@ -1,6 +1,6 @@
|
|||
/* Copyright (C) 2000-2008 MySQL AB, 2008-2009 Sun Microsystems, Inc.
|
||||
2010 Oracle and/or its affiliates
|
||||
2009-2010 Monty Program Ab
|
||||
2009-2011 Monty Program Ab
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -626,7 +626,7 @@ time_t server_start_time, flush_status_time;
|
|||
|
||||
char mysql_home[FN_REFLEN], pidfile_name[FN_REFLEN], system_time_zone[30];
|
||||
char *default_tz_name;
|
||||
char log_error_file[FN_REFLEN], glob_hostname[FN_REFLEN];
|
||||
char log_error_file[FN_REFLEN], glob_hostname[FN_REFLEN], *opt_log_basename;
|
||||
char mysql_real_data_home[FN_REFLEN],
|
||||
language[FN_REFLEN], reg_ext[FN_EXTLEN], mysql_charsets_dir[FN_REFLEN],
|
||||
*opt_init_file, *opt_tc_log_file,
|
||||
|
@ -1407,8 +1407,6 @@ void clean_up(bool print_message)
|
|||
#ifdef HAVE_REPLICATION
|
||||
my_free(slave_load_tmpdir,MYF(MY_ALLOW_ZERO_PTR));
|
||||
#endif
|
||||
x_free(opt_bin_logname);
|
||||
x_free(opt_relay_logname);
|
||||
x_free(opt_secure_file_priv);
|
||||
bitmap_free(&temp_pool);
|
||||
free_max_user_conn();
|
||||
|
@ -3447,15 +3445,21 @@ static int init_common_variables(const char *conf_file_name, int argc,
|
|||
*/
|
||||
mysql_bin_log.init_pthread_objects();
|
||||
|
||||
if (gethostname(glob_hostname,sizeof(glob_hostname)) < 0)
|
||||
{
|
||||
strmake(glob_hostname, STRING_WITH_LEN("localhost"));
|
||||
sql_print_warning("gethostname failed, using '%s' as hostname",
|
||||
glob_hostname);
|
||||
strmake(pidfile_name, STRING_WITH_LEN("mysql"));
|
||||
/*
|
||||
Get hostname of computer (used by 'show variables') and as default
|
||||
basename for the pid file if --log-basename is not given.
|
||||
*/
|
||||
const char *basename= glob_hostname;
|
||||
if (gethostname(glob_hostname,sizeof(glob_hostname)) < 0)
|
||||
{
|
||||
strmake(glob_hostname, STRING_WITH_LEN("localhost"));
|
||||
sql_print_warning("gethostname failed, using '%s' as hostname",
|
||||
glob_hostname);
|
||||
basename= "mysql";
|
||||
}
|
||||
strmake(pidfile_name, basename, sizeof(pidfile_name)-5);
|
||||
}
|
||||
else
|
||||
strmake(pidfile_name, glob_hostname, sizeof(pidfile_name)-5);
|
||||
strmov(fn_ext(pidfile_name),".pid"); // Add proper extension
|
||||
|
||||
/*
|
||||
|
@ -4060,7 +4064,7 @@ version 5.0 and above. It is replaced by the binary log.");
|
|||
if (opt_update_logname)
|
||||
{
|
||||
/* as opt_bin_log==0, no need to free opt_bin_logname */
|
||||
if (!(opt_bin_logname= my_strdup(opt_update_logname, MYF(MY_WME))))
|
||||
if (!(opt_bin_logname= my_once_strdup(opt_update_logname, MYF(MY_WME))))
|
||||
{
|
||||
sql_print_error("Out of memory");
|
||||
return EXIT_OUT_OF_MEMORY;
|
||||
|
@ -4160,8 +4164,7 @@ a file name for --log-bin-index option", opt_binlog_index_name);
|
|||
}
|
||||
if (ln == buf)
|
||||
{
|
||||
my_free(opt_bin_logname, MYF(MY_ALLOW_ZERO_PTR));
|
||||
opt_bin_logname=my_strdup(buf, MYF(0));
|
||||
opt_bin_logname= my_once_strdup(buf, MYF(MY_WME));
|
||||
}
|
||||
if (mysql_bin_log.open_index_file(opt_binlog_index_name, ln, TRUE))
|
||||
{
|
||||
|
@ -5993,7 +5996,7 @@ enum options_mysqld
|
|||
OPT_PROFILING,
|
||||
OPT_KEEP_FILES_ON_CREATE,
|
||||
OPT_GENERAL_LOG,
|
||||
OPT_SLOW_LOG,
|
||||
OPT_SLOW_LOG, OPT_LOG_BASENAME,
|
||||
OPT_THREAD_HANDLING,
|
||||
OPT_INNODB_ROLLBACK_ON_TIMEOUT,
|
||||
OPT_SECURE_FILE_PRIV,
|
||||
|
@ -6260,8 +6263,8 @@ struct my_option my_long_options[] =
|
|||
&opt_debugging, &opt_debugging,
|
||||
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"general_log", OPT_GENERAL_LOG,
|
||||
"Enable/disable general log.", &opt_log,
|
||||
&opt_log, 0, GET_BOOL, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
"Enable/disable general log. Filename can be specified with --general-log-file or --log-basename. Is 'hostname.err' by default.",
|
||||
&opt_log, &opt_log, 0, GET_BOOL, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#ifdef HAVE_LARGE_PAGES
|
||||
{"large-pages", OPT_ENABLE_LARGE_PAGES, "Enable support for large pages. "
|
||||
"Disable with --skip-large-pages.", &opt_large_pages, &opt_large_pages,
|
||||
|
@ -6301,16 +6304,32 @@ each time the SQL thread starts.",
|
|||
"--general_log/--general_log_file instead).", &opt_logname,
|
||||
&opt_logname, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"general_log_file", OPT_GENERAL_LOG_FILE,
|
||||
"Log connections and queries to given file.", &opt_logname,
|
||||
&opt_logname, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
"Log connections and queries to given file. Defaults to "
|
||||
"'datadir'/'log-basename'.log or 'datadir'/'hostname'.log if not "
|
||||
"specified.",
|
||||
&opt_logname, &opt_logname, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"log-basename", OPT_LOG_BASENAME,
|
||||
"Basename for all log files and the .pid file. This sets all log file "
|
||||
"names at once (in 'datadir') and is normally the only option you need "
|
||||
"for specifying log files. This is especially recommend to be set if you "
|
||||
"are using replication as it ensures that your log file names are not "
|
||||
"depending on your host name. Sets names for --log-bin, --log-bin-index, "
|
||||
"--relay-log, --relay-log-index, --general-log-file, "
|
||||
"--log-slow-query-log-file, --log-error-file and --pid-file",
|
||||
&opt_log_basename, &opt_log_basename, 0, GET_STR, REQUIRED_ARG,
|
||||
0, 0, 0, 0, 0, 0},
|
||||
{"log-bin", OPT_BIN_LOG,
|
||||
"Log update queries in binary format. Optional (but strongly recommended "
|
||||
"to avoid replication problems if server's hostname changes) argument "
|
||||
"should be the chosen location for the binary log files.",
|
||||
&opt_bin_logname, &opt_bin_logname, 0, GET_STR_ALLOC,
|
||||
"Log update queries in binary format. Optional argument should be name for "
|
||||
"binary log. If not given "
|
||||
"datadir/'log-basename'-bin or 'datadir'/mysql-bin will be used (the later if "
|
||||
"--log-basename is not specified). We strongly recommend you to use either "
|
||||
"--log-basename or specify a filename to ensure that replication doesn't "
|
||||
"stop if the real hostname of the computer changes'.",
|
||||
&opt_bin_logname, &opt_bin_logname, 0, GET_STR,
|
||||
OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"log-bin-index", OPT_BIN_LOG_INDEX,
|
||||
"File that holds the names for last binary log files.",
|
||||
"File that holds the names for last binary log files. If not specified, "
|
||||
"defaults to 'datadir/log-basename'-bin.index or 'datadir/mysql-bin.index'",
|
||||
&opt_binlog_index_name, &opt_binlog_index_name, 0, GET_STR,
|
||||
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#ifndef TO_BE_REMOVED_IN_5_1_OR_6_0
|
||||
|
@ -6339,7 +6358,10 @@ each time the SQL thread starts.",
|
|||
"break, so you can safely set this to 1."
|
||||
,&trust_function_creators, &trust_function_creators, 0,
|
||||
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"log-error", OPT_ERROR_LOG_FILE, "Error log file.",
|
||||
{"log-error", OPT_ERROR_LOG_FILE,
|
||||
"Log errors to file (instead of stdout). If file name is not specified "
|
||||
"then 'datadir'/'log-basename'.err or the pid-file path with extension "
|
||||
".err is used.",
|
||||
&log_error_file_ptr, &log_error_file_ptr, 0, GET_STR,
|
||||
OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"log-isam", OPT_ISAM_LOG, "Log all MyISAM changes to file.",
|
||||
|
@ -6377,15 +6399,20 @@ each time the SQL thread starts.",
|
|||
&opt_log_slow_slave_statements,
|
||||
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"log-slow-queries", OPT_SLOW_QUERY_LOG,
|
||||
"Log slow queries to a table or log file. Defaults logging to table "
|
||||
"mysql.slow_log or hostname-slow.log if --log-output=file is used. "
|
||||
"Must be enabled to activate other slow log options. "
|
||||
"(deprecated option, use --slow_query_log/--slow_query_log_file instead)",
|
||||
"Enable logging of slow queries (longer than --log-slow-time) to log file "
|
||||
"or table. Optional argument is file name for slow log. If not given, "
|
||||
"'log-basename'-slow.log will be used. Use --log-output=TABLE if you want "
|
||||
"to have the log in the table 'mysql.slow_log'",
|
||||
&opt_slow_logname, &opt_slow_logname, 0, GET_STR, OPT_ARG,
|
||||
0, 0, 0, 0, 0, 0},
|
||||
{"slow_query_log_file", OPT_SLOW_QUERY_LOG_FILE,
|
||||
"Log slow queries to given log file. Defaults logging to hostname-slow.log. "
|
||||
"Must be enabled to activate other slow log options.",
|
||||
"Specify name for slow query log. Defaults to 'log-basename'-slow.log if "
|
||||
"not given",
|
||||
&opt_slow_logname, &opt_slow_logname, 0, GET_STR,
|
||||
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"log-slow-file", OPT_SLOW_QUERY_LOG_FILE,
|
||||
"Specify name for slow query log. Defaults to 'log-basename'-slow.log if "
|
||||
"not given",
|
||||
&opt_slow_logname, &opt_slow_logname, 0, GET_STR,
|
||||
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"log-tc", OPT_LOG_TC,
|
||||
|
@ -6404,7 +6431,8 @@ each time the SQL thread starts.",
|
|||
"log and this option just turns on --log-bin instead.",
|
||||
&opt_update_logname, &opt_update_logname, 0, GET_STR,
|
||||
OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"log-warnings", 'W', "Log some not critical warnings to the log file.",
|
||||
{"log-warnings", 'W', "Log some not critical warnings to the general log "
|
||||
"file.",
|
||||
&global_system_variables.log_warnings,
|
||||
&max_system_variables.log_warnings, 0, GET_ULONG, OPT_ARG, 1, 0, 0,
|
||||
0, 0, 0},
|
||||
|
@ -6427,7 +6455,8 @@ each time the SQL thread starts.",
|
|||
0, 0, 0, 0},
|
||||
{"master-info-file", OPT_MASTER_INFO_FILE,
|
||||
"The location and name of the file that remembers the master and where "
|
||||
"the I/O replication thread is in the master's binlogs.",
|
||||
"the I/O replication thread is in the master's binlogs. Defaults to "
|
||||
"master.info. Is not affected by --log-basename.",
|
||||
&master_info_file, &master_info_file, 0, GET_STR,
|
||||
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"master-password", OPT_MASTER_PASSWORD,
|
||||
|
@ -6629,7 +6658,9 @@ each time the SQL thread starts.",
|
|||
"per each user+host vs. per account).",
|
||||
&opt_old_style_user_limits, &opt_old_style_user_limits,
|
||||
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"pid-file", OPT_PID_FILE, "Pid file used by safe_mysqld.",
|
||||
{"pid-file", OPT_PID_FILE,
|
||||
"Pid file used by safe_mysqld. If not set, defaults to "
|
||||
"'datadir'/'log-basename'.pid or 'datadir'/'hostname'.pid'.",
|
||||
&pidfile_name_ptr, &pidfile_name_ptr, 0, GET_STR,
|
||||
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"port", 'P', "Port number to use for connection or 0 for default to, in "
|
||||
|
@ -6651,17 +6682,19 @@ each time the SQL thread starts.",
|
|||
0, GET_ULONG, REQUIRED_ARG, 15, 0, 100, 0, 0, 0},
|
||||
#endif
|
||||
{"relay-log", OPT_RELAY_LOG,
|
||||
"The location and name to use for relay logs.",
|
||||
"The location and name to use for relay logs. If not specified "
|
||||
"'datadir'/'log-basename' will be used.",
|
||||
&opt_relay_logname, &opt_relay_logname, 0,
|
||||
GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"relay-log-index", OPT_RELAY_LOG_INDEX,
|
||||
"The location and name to use for the file that keeps a list of the last \
|
||||
relay logs.",
|
||||
"The location and name to use for the file that keeps a list of the last "
|
||||
"relay logs. If not specified 'datadir'/'log-basename' will be used.",
|
||||
&opt_relaylog_index_name, &opt_relaylog_index_name, 0,
|
||||
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"relay-log-info-file", OPT_RELAY_LOG_INFO_FILE,
|
||||
"The location and name of the file that remembers where the SQL replication \
|
||||
thread is in the relay logs.",
|
||||
"The location and name of the file that remembers where the SQL "
|
||||
"replication thread is in the relay logs. Defaults to relay-log.info. "
|
||||
"Is not affected by '--log-basename'.",
|
||||
&relay_log_info_file, &relay_log_info_file, 0, GET_STR,
|
||||
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"replicate-do-db", OPT_REPLICATE_DO_DB,
|
||||
|
@ -6841,7 +6874,8 @@ thread is in the relay logs.",
|
|||
&slave_exec_mode_str, &slave_exec_mode_str, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#endif
|
||||
{"slow-query-log", OPT_SLOW_LOG,
|
||||
"Enable/disable slow query log.", &opt_slow_log,
|
||||
"Enable/disable slow query log. See also '--log-slow-queries'",
|
||||
&opt_slow_log,
|
||||
&opt_slow_log, 0, GET_BOOL, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"socket", OPT_SOCKET, "Socket file to use for connection.",
|
||||
&mysqld_unix_port, &mysqld_unix_port, 0, GET_STR,
|
||||
|
@ -7099,19 +7133,16 @@ thread is in the relay logs.",
|
|||
"Choose how verbose the messages to your slow log will be. Multiple flags "
|
||||
"allowed in a comma-separated string. [query_plan, innodb]",
|
||||
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
|
||||
{"log-slow-file", OPT_SLOW_QUERY_LOG_FILE,
|
||||
"Log slow queries to given log file. Defaults logging to hostname-slow.log",
|
||||
&opt_slow_logname, &opt_slow_logname, 0, GET_STR,
|
||||
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"long_query_time", OPT_LONG_QUERY_TIME,
|
||||
"Log all queries that have taken more than long_query_time seconds to "
|
||||
"execute. The argument will be treated as a decimal value with "
|
||||
"microsecond precision.",
|
||||
{"log-slow-time", OPT_LONG_QUERY_TIME,
|
||||
"Log all queries that have taken more than log-slow-time seconds to "
|
||||
"execute to file. The argument will be treated as a decimal value with "
|
||||
"microsecond precission. Same as --log-query-time.",
|
||||
&long_query_time, &long_query_time, 0, GET_DOUBLE,
|
||||
REQUIRED_ARG, 10, 0, LONG_TIMEOUT, 0, 0, 0},
|
||||
{"log-slow-time", OPT_LONG_QUERY_TIME,
|
||||
"Log all queries that have taken more than long_query_time seconds to execute to file. "
|
||||
"The argument will be treated as a decimal value with microsecond precission.",
|
||||
{"long_query_time", OPT_LONG_QUERY_TIME,
|
||||
"Log all queries that have taken more than long-query-time seconds to "
|
||||
"execute to file. The argument will be treated as a decimal value with "
|
||||
"microsecond precission. Same as --log-slow-time.",
|
||||
&long_query_time, &long_query_time, 0, GET_DOUBLE,
|
||||
REQUIRED_ARG, 10, 0, LONG_TIMEOUT, 0, 0, 0},
|
||||
{"lower_case_table_names", OPT_LOWER_CASE_TABLE_NAMES,
|
||||
|
@ -8214,6 +8245,7 @@ static int mysql_init_variables(void)
|
|||
opt_skip_name_resolve= 0;
|
||||
opt_ignore_builtin_innodb= 0;
|
||||
opt_logname= opt_update_logname= opt_binlog_index_name= opt_slow_logname= 0;
|
||||
opt_log_basename= 0;
|
||||
opt_tc_log_file= (char *)"tc.log"; // no hostname in tc_log file name !
|
||||
opt_secure_auth= 0;
|
||||
opt_secure_file_priv= 0;
|
||||
|
@ -8622,6 +8654,42 @@ mysqld_get_one_option(int optid,
|
|||
case (int) OPT_BIN_LOG:
|
||||
opt_bin_log= test(argument != disabled_my_option);
|
||||
break;
|
||||
case (int) OPT_LOG_BASENAME:
|
||||
{
|
||||
if (opt_log_basename[0] == 0 || strchr(opt_log_basename, FN_EXTCHAR) ||
|
||||
strchr(opt_log_basename,FN_LIBCHAR))
|
||||
{
|
||||
sql_print_error("Wrong argument for --log-basename. It can't be empty or contain '.' or '" FN_DIRSEP "'");
|
||||
return 1;
|
||||
}
|
||||
log_error_file_ptr= argument;
|
||||
|
||||
/*
|
||||
The following file named needs explicite extensions (should be fixed in
|
||||
future by having the creating code do this).
|
||||
*/
|
||||
opt_logname= make_once_alloced_filename(argument, ".log");
|
||||
opt_slow_logname= make_once_alloced_filename(argument, "-slow.log");
|
||||
opt_bin_logname= make_once_alloced_filename(argument, "-bin");
|
||||
opt_binlog_index_name= make_once_alloced_filename(argument, "-bin.index");
|
||||
opt_relay_logname= make_once_alloced_filename(argument, "-relay-bin");
|
||||
opt_relaylog_index_name=make_once_alloced_filename(argument,
|
||||
"-relay-bin.index");
|
||||
|
||||
pidfile_name_ptr= pidfile_name;
|
||||
strmake(pidfile_name, argument, sizeof(pidfile_name)-5);
|
||||
strmov(fn_ext(pidfile_name),".pid");
|
||||
|
||||
/* The following is depricated so don't set it by default */
|
||||
if (opt_update_logname)
|
||||
opt_update_logname= argument;
|
||||
|
||||
/* check for errors */
|
||||
if (!opt_bin_logname || !opt_relaylog_index_name || ! opt_logname ||
|
||||
! opt_slow_logname)
|
||||
return 1; // out of memory error
|
||||
break;
|
||||
}
|
||||
case (int) OPT_ERROR_LOG_FILE:
|
||||
opt_error_log= 1;
|
||||
break;
|
||||
|
@ -8738,7 +8806,6 @@ mysqld_get_one_option(int optid,
|
|||
}
|
||||
#endif /* HAVE_REPLICATION */
|
||||
case (int) OPT_SLOW_QUERY_LOG:
|
||||
WARN_DEPRECATED(NULL, "7.0", "--log_slow_queries", "'--slow_query_log'/'--log-slow-file'");
|
||||
opt_slow_log= 1;
|
||||
break;
|
||||
case OPT_LOG_OUTPUT:
|
||||
|
|
|
@ -170,7 +170,8 @@ a file name for --relay-log-index option", opt_relaylog_index_name);
|
|||
" so replication "
|
||||
"may break when this MySQL server acts as a "
|
||||
"slave and has his hostname changed!! Please "
|
||||
"use '--relay-log=%s' to avoid this problem.", ln);
|
||||
"use '--log-basename=%' or '--relay-log=%s' to avoid "
|
||||
"this problem.", ln);
|
||||
name_warning_sent= 1;
|
||||
}
|
||||
/*
|
||||
|
|
|
@ -895,6 +895,8 @@ static sys_var_thd_set sys_log_slow_verbosity(&vars,
|
|||
|
||||
/* Global read-only variable containing hostname */
|
||||
static sys_var_const_str sys_hostname(&vars, "hostname", glob_hostname);
|
||||
static sys_var_const_str_ptr sys_log_basename(&vars, "log_basename",
|
||||
&opt_log_basename);
|
||||
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
static sys_var_const_str_ptr sys_repl_report_host(&vars, "report_host", &report_host);
|
||||
|
|
|
@ -18446,7 +18446,8 @@ static void test_bug47485()
|
|||
Read and parse arguments and MySQL options from my.cnf
|
||||
*/
|
||||
|
||||
static const char *client_test_load_default_groups[]= { "client", 0 };
|
||||
static const char *client_test_load_default_groups[]=
|
||||
{ "client", "client-server", "client-mariadb", 0 };
|
||||
static char **defaults_argv;
|
||||
|
||||
static struct my_option client_test_long_options[] =
|
||||
|
|
|
@ -123,7 +123,8 @@ static struct my_option my_long_options[] =
|
|||
};
|
||||
|
||||
|
||||
static const char *load_default_groups[]= { "client",0 };
|
||||
static const char *load_default_groups[]=
|
||||
{ "client", "client-server", "client-mariadb", 0 };
|
||||
|
||||
static void usage()
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue