1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-27 18:02:13 +03:00

Merge tag 'mariadb-10.0.23' into 10.0-galera

This commit is contained in:
Nirbhay Choubey
2015-12-19 14:24:38 -05:00
3579 changed files with 644330 additions and 222421 deletions

51
.gitignore vendored
View File

@ -166,31 +166,32 @@ storage/myisam/myisamlog
storage/myisam/myisampack storage/myisam/myisampack
storage/myisam/rt_test storage/myisam/rt_test
storage/myisam/sp_test storage/myisam/sp_test
storage/tokudb/ft-index/buildheader/db.h storage/tokudb/PerconaFT/buildheader/db.h
storage/tokudb/ft-index/buildheader/make_tdb storage/tokudb/PerconaFT/buildheader/make_tdb
storage/tokudb/ft-index/buildheader/runcat.sh storage/tokudb/PerconaFT/buildheader/runcat.sh
storage/tokudb/ft-index/ft/log_code.cc storage/tokudb/PerconaFT/ft/log_code.cc
storage/tokudb/ft-index/ft/log_header.h storage/tokudb/PerconaFT/ft/log_header.h
storage/tokudb/ft-index/ft/log_print.cc storage/tokudb/PerconaFT/ft/log_print.cc
storage/tokudb/ft-index/ft/logformat storage/tokudb/PerconaFT/ft/logformat
storage/tokudb/ft-index/ft/ftverify storage/tokudb/PerconaFT/ft/ftverify
storage/tokudb/ft-index/ft/tdb-recover storage/tokudb/PerconaFT/ft/tdb-recover
storage/tokudb/ft-index/ft/tokuftdump storage/tokudb/PerconaFT/ft/tokuftdump
storage/tokudb/ft-index/portability/merge_archives_tokuportability_static.cmake storage/tokudb/PerconaFT/portability/merge_archives_tokuportability_static.cmake
storage/tokudb/ft-index/portability/toku_config.h storage/tokudb/PerconaFT/portability/toku_config.h
storage/tokudb/ft-index/portability/tokuportability_static_depends.cc storage/tokudb/PerconaFT/portability/tokuportability_static_depends.cc
storage/tokudb/ft-index/src/merge_archives_tokufractaltree_static.cmake storage/tokudb/PerconaFT/snappy/
storage/tokudb/ft-index/src/tokufractaltree_static_depends.cc storage/tokudb/PerconaFT/src/merge_archives_tokufractaltree_static.cmake
storage/tokudb/ft-index/toku_include/toku_config.h storage/tokudb/PerconaFT/src/tokufractaltree_static_depends.cc
storage/tokudb/ft-index/tools/ba_replay storage/tokudb/PerconaFT/toku_include/toku_config.h
storage/tokudb/ft-index/tools/ftverify storage/tokudb/PerconaFT/tools/ba_replay
storage/tokudb/ft-index/tools/tdb-recover storage/tokudb/PerconaFT/tools/ftverify
storage/tokudb/ft-index/tools/tokudb_dump storage/tokudb/PerconaFT/tools/tdb-recover
storage/tokudb/ft-index/tools/tokudb_gen storage/tokudb/PerconaFT/tools/tokudb_dump
storage/tokudb/ft-index/tools/tokudb_load storage/tokudb/PerconaFT/tools/tokudb_gen
storage/tokudb/ft-index/tools/tokuftdump storage/tokudb/PerconaFT/tools/tokudb_load
storage/tokudb/ft-index/tools/tokuft_logprint storage/tokudb/PerconaFT/tools/tokuftdump
storage/tokudb/ft-index/xz/ storage/tokudb/PerconaFT/tools/tokuft_logprint
storage/tokudb/PerconaFT/xz/
support-files/MySQL-shared-compat.spec support-files/MySQL-shared-compat.spec
support-files/binary-configure support-files/binary-configure
support-files/config.huge.ini support-files/config.huge.ini

View File

@ -1,3 +1,3 @@
MYSQL_VERSION_MAJOR=10 MYSQL_VERSION_MAJOR=10
MYSQL_VERSION_MINOR=0 MYSQL_VERSION_MINOR=0
MYSQL_VERSION_PATCH=22 MYSQL_VERSION_PATCH=23

View File

@ -1108,7 +1108,7 @@ inline int get_command_index(char cmd_char)
All client-specific commands are in the first part of commands array All client-specific commands are in the first part of commands array
and have a function to implement it. and have a function to implement it.
*/ */
for (uint i= 0; *commands[i].func; i++) for (uint i= 0; commands[i].func; i++)
if (commands[i].cmd_char == cmd_char) if (commands[i].cmd_char == cmd_char)
return i; return i;
return -1; return -1;

View File

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -404,7 +404,7 @@ exit:
static void usage(void) static void usage(void)
{ {
PRINT_VERSION; PRINT_VERSION;
puts("Copyright (c) 2011, Oracle and/or its affiliates. " puts("Copyright (c) 2011, 2015, Oracle and/or its affiliates. "
"All rights reserved.\n"); "All rights reserved.\n");
puts("Enable or disable plugins."); puts("Enable or disable plugins.");
printf("\nUsage: %s [options] <plugin> ENABLE|DISABLE\n\nOptions:\n", printf("\nUsage: %s [options] <plugin> ENABLE|DISABLE\n\nOptions:\n",
@ -755,6 +755,11 @@ static int check_options(int argc, char **argv, char *operation)
/* read the plugin config file and check for match against argument */ /* read the plugin config file and check for match against argument */
else else
{ {
if (strlen(argv[i]) + 4 + 1 > FN_REFLEN)
{
fprintf(stderr, "ERROR: argument is too long.\n");
return 1;
}
strcpy(plugin_name, argv[i]); strcpy(plugin_name, argv[i]);
strcpy(config_file, argv[i]); strcpy(config_file, argv[i]);
strcat(config_file, ".ini"); strcat(config_file, ".ini");
@ -846,6 +851,7 @@ static int process_options(int argc, char *argv[], char *operation)
if (opt_basedir[i-1] != FN_LIBCHAR || opt_basedir[i-1] != FN_LIBCHAR2) if (opt_basedir[i-1] != FN_LIBCHAR || opt_basedir[i-1] != FN_LIBCHAR2)
{ {
char buff[FN_REFLEN]; char buff[FN_REFLEN];
memset(buff, 0, sizeof(buff));
strncpy(buff, opt_basedir, sizeof(buff) - 1); strncpy(buff, opt_basedir, sizeof(buff) - 1);
#ifdef __WIN__ #ifdef __WIN__

View File

@ -55,6 +55,8 @@ static DYNAMIC_STRING conn_args;
static char *opt_password= 0; static char *opt_password= 0;
static char *opt_plugin_dir= 0, *opt_default_auth= 0; static char *opt_plugin_dir= 0, *opt_default_auth= 0;
static char *cnf_file_path= 0, defaults_file[FN_REFLEN + 32];
static my_bool tty_password= 0; static my_bool tty_password= 0;
static char opt_tmpdir[FN_REFLEN] = ""; static char opt_tmpdir[FN_REFLEN] = "";
@ -111,6 +113,7 @@ static struct my_option my_long_options[]=
&opt_force, &opt_force, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, &opt_force, &opt_force, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"host", 'h', "Connect to host.", 0, {"host", 'h', "Connect to host.", 0,
0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#define PASSWORD_OPT 12
{"password", 'p', {"password", 'p',
"Password to use when connecting to server. If password is not given," "Password to use when connecting to server. If password is not given,"
" it's solicited on the tty.", &opt_password,&opt_password, " it's solicited on the tty.", &opt_password,&opt_password,
@ -147,6 +150,7 @@ static struct my_option my_long_options[]=
{"upgrade-system-tables", 's', "Only upgrade the system tables in the mysql database. Tables in other databases are not checked or touched.", {"upgrade-system-tables", 's', "Only upgrade the system tables in the mysql database. Tables in other databases are not checked or touched.",
&opt_systables_only, &opt_systables_only, 0, &opt_systables_only, &opt_systables_only, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
#define USER_OPT (array_elements(my_long_options) - 6)
{"user", 'u', "User for login if not current user.", &opt_user, {"user", 'u', "User for login if not current user.", &opt_user,
&opt_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, &opt_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"verbose", 'v', "Display more output about the process; Using it twice will print connection argument; Using it 3 times will print out all CHECK, RENAME and ALTER TABLE during the check phase.", {"verbose", 'v', "Display more output about the process; Using it twice will print connection argument; Using it 3 times will print out all CHECK, RENAME and ALTER TABLE during the check phase.",
@ -184,6 +188,8 @@ static void free_used_memory(void)
dynstr_free(&ds_args); dynstr_free(&ds_args);
dynstr_free(&conn_args); dynstr_free(&conn_args);
if (cnf_file_path)
my_delete(cnf_file_path, MYF(MY_WME));
} }
@ -235,31 +241,32 @@ static void verbose(const char *fmt, ...)
this way we pass the same arguments on to mysql and mysql_check this way we pass the same arguments on to mysql and mysql_check
*/ */
static void add_one_option(DYNAMIC_STRING* ds, static void add_one_option_cmd_line(DYNAMIC_STRING *ds,
const struct my_option *opt, const struct my_option *opt,
const char* argument) const char* arg)
{ {
const char* eq= NullS; dynstr_append(ds, "--");
const char* arg= NullS; dynstr_append(ds, opt->name);
if (opt->arg_type != NO_ARG) if (arg)
{ {
eq= "="; dynstr_append(ds, "=");
switch (opt->var_type & GET_TYPE_MASK) { dynstr_append_os_quoted(ds, arg, NullS);
case GET_STR:
arg= argument;
break;
case GET_BOOL:
arg= (*(my_bool *)opt->value) ? "1" : "0";
break;
default:
die("internal error at %s: %d",__FILE__, __LINE__);
}
} }
dynstr_append_os_quoted(ds, "--", opt->name, eq, arg, NullS);
dynstr_append(ds, " "); dynstr_append(ds, " ");
} }
static void add_one_option_cnf_file(DYNAMIC_STRING *ds,
const struct my_option *opt,
const char* arg)
{
dynstr_append(ds, opt->name);
if (arg)
{
dynstr_append(ds, "=");
dynstr_append_os_quoted(ds, arg, NullS);
}
dynstr_append(ds, "\n");
}
static my_bool static my_bool
get_one_option(int optid, const struct my_option *opt, get_one_option(int optid, const struct my_option *opt,
@ -290,16 +297,17 @@ get_one_option(int optid, const struct my_option *opt,
case 'p': case 'p':
if (argument == disabled_my_option) if (argument == disabled_my_option)
argument= (char*) ""; /* Don't require password */ argument= (char*) ""; /* Don't require password */
tty_password= 1;
add_option= FALSE; add_option= FALSE;
if (argument) if (argument)
{ {
/* Add password to ds_args before overwriting the arg with x's */ /* Add password to ds_args before overwriting the arg with x's */
add_one_option(&ds_args, opt, argument); add_one_option_cnf_file(&ds_args, opt, argument);
while (*argument) while (*argument)
*argument++= 'x'; /* Destroy argument */ *argument++= 'x'; /* Destroy argument */
tty_password= 0; tty_password= 0;
} }
else
tty_password= 1;
break; break;
case 't': case 't':
@ -346,18 +354,18 @@ get_one_option(int optid, const struct my_option *opt,
case OPT_SHARED_MEMORY_BASE_NAME: /* --shared-memory-base-name */ case OPT_SHARED_MEMORY_BASE_NAME: /* --shared-memory-base-name */
case OPT_PLUGIN_DIR: /* --plugin-dir */ case OPT_PLUGIN_DIR: /* --plugin-dir */
case OPT_DEFAULT_AUTH: /* --default-auth */ case OPT_DEFAULT_AUTH: /* --default-auth */
add_one_option(&conn_args, opt, argument); add_one_option_cmd_line(&conn_args, opt, argument);
break; break;
} }
if (add_option) if (add_option)
{ {
/* /*
This is an option that is accpted by mysql_upgrade just so This is an option that is accepted by mysql_upgrade just so
it can be passed on to "mysql" and "mysqlcheck" it can be passed on to "mysql" and "mysqlcheck"
Save it in the ds_args string Save it in the ds_args string
*/ */
add_one_option(&ds_args, opt, argument); add_one_option_cnf_file(&ds_args, opt, argument);
} }
return 0; return 0;
} }
@ -420,11 +428,8 @@ static int run_tool(char *tool_path, DYNAMIC_STRING *ds_res, ...)
while ((arg= va_arg(args, char *))) while ((arg= va_arg(args, char *)))
{ {
/* Options should be os quoted */ /* Options should already be os quoted */
if (strncmp(arg, "--", 2) == 0) dynstr_append(&ds_cmdline, arg);
dynstr_append_os_quoted(&ds_cmdline, arg, NullS);
else
dynstr_append(&ds_cmdline, arg);
dynstr_append(&ds_cmdline, " "); dynstr_append(&ds_cmdline, " ");
} }
@ -571,8 +576,7 @@ static int run_query(const char *query, DYNAMIC_STRING *ds_res,
ret= run_tool(mysql_path, ret= run_tool(mysql_path,
ds_res, ds_res,
"--no-defaults", defaults_file,
ds_args.str,
"--database=mysql", "--database=mysql",
"--batch", /* Turns off pager etc. */ "--batch", /* Turns off pager etc. */
force ? "--force": "--skip-force", force ? "--force": "--skip-force",
@ -764,8 +768,7 @@ static int run_mysqlcheck_upgrade(my_bool mysql_db_only)
print_conn_args("mysqlcheck"); print_conn_args("mysqlcheck");
retch= run_tool(mysqlcheck_path, retch= run_tool(mysqlcheck_path,
NULL, /* Send output from mysqlcheck directly to screen */ NULL, /* Send output from mysqlcheck directly to screen */
"--no-defaults", defaults_file,
ds_args.str,
"--check-upgrade", "--check-upgrade",
"--auto-repair", "--auto-repair",
!opt_silent || opt_verbose >= 1 ? "--verbose" : "", !opt_silent || opt_verbose >= 1 ? "--verbose" : "",
@ -825,8 +828,7 @@ static int run_mysqlcheck_views(void)
print_conn_args("mysqlcheck"); print_conn_args("mysqlcheck");
return run_tool(mysqlcheck_path, return run_tool(mysqlcheck_path,
NULL, /* Send output from mysqlcheck directly to screen */ NULL, /* Send output from mysqlcheck directly to screen */
"--no-defaults", defaults_file,
ds_args.str,
"--all-databases", "--repair", "--all-databases", "--repair",
upgrade_views, upgrade_views,
"--skip-process-tables", "--skip-process-tables",
@ -850,8 +852,7 @@ static int run_mysqlcheck_fixnames(void)
print_conn_args("mysqlcheck"); print_conn_args("mysqlcheck");
return run_tool(mysqlcheck_path, return run_tool(mysqlcheck_path,
NULL, /* Send output from mysqlcheck directly to screen */ NULL, /* Send output from mysqlcheck directly to screen */
"--no-defaults", defaults_file,
ds_args.str,
"--all-databases", "--all-databases",
"--fix-db-names", "--fix-db-names",
"--fix-table-names", "--fix-table-names",
@ -1075,12 +1076,21 @@ int main(int argc, char **argv)
{ {
opt_password= get_tty_password(NullS); opt_password= get_tty_password(NullS);
/* add password to defaults file */ /* add password to defaults file */
dynstr_append_os_quoted(&ds_args, "--password=", opt_password, NullS); add_one_option_cnf_file(&ds_args, &my_long_options[PASSWORD_OPT], opt_password);
dynstr_append(&ds_args, " "); DBUG_ASSERT(strcmp(my_long_options[PASSWORD_OPT].name, "password") == 0);
} }
/* add user to defaults file */ /* add user to defaults file */
dynstr_append_os_quoted(&ds_args, "--user=", opt_user, NullS); add_one_option_cnf_file(&ds_args, &my_long_options[USER_OPT], opt_user);
dynstr_append(&ds_args, " "); DBUG_ASSERT(strcmp(my_long_options[USER_OPT].name, "user") == 0);
cnf_file_path= strmov(defaults_file, "--defaults-file=");
{
int fd= create_temp_file(cnf_file_path, opt_tmpdir[0] ? opt_tmpdir : NULL,
"mysql_upgrade-", O_CREAT | O_WRONLY, MYF(MY_FAE));
my_write(fd, USTRING_WITH_LEN( "[client]\n"), MYF(MY_FAE));
my_write(fd, (uchar*)ds_args.str, ds_args.length, MYF(MY_FAE));
my_close(fd, MYF(0));
}
/* Find mysql */ /* Find mysql */
find_tool(mysql_path, IF_WIN("mysql.exe", "mysql"), self_name); find_tool(mysql_path, IF_WIN("mysql.exe", "mysql"), self_name);

View File

@ -1533,6 +1533,8 @@ static void cleanup()
my_free(host); my_free(host);
my_free(user); my_free(user);
my_free(const_cast<char*>(dirname_for_local_load)); my_free(const_cast<char*>(dirname_for_local_load));
my_free(start_datetime_str);
my_free(stop_datetime_str);
delete binlog_filter; delete binlog_filter;
delete glob_description_event; delete glob_description_event;
@ -1719,7 +1721,7 @@ static int parse_args(int *argc, char*** argv)
exit(ho_error); exit(ho_error);
if (debug_info_flag) if (debug_info_flag)
my_end_arg= MY_CHECK_ERROR | MY_GIVE_INFO; my_end_arg= MY_CHECK_ERROR | MY_GIVE_INFO;
if (debug_check_flag) else if (debug_check_flag)
my_end_arg= MY_CHECK_ERROR; my_end_arg= MY_CHECK_ERROR;
return 0; return 0;
} }
@ -2044,6 +2046,7 @@ static Exit_status dump_remote_log_entries(PRINT_EVENT_INFO *print_event_info,
if ((rev->ident_len != logname_len) || if ((rev->ident_len != logname_len) ||
memcmp(rev->new_log_ident, logname, logname_len)) memcmp(rev->new_log_ident, logname, logname_len))
{ {
delete ev;
DBUG_RETURN(OK_CONTINUE); DBUG_RETURN(OK_CONTINUE);
} }
/* /*
@ -2052,6 +2055,7 @@ static Exit_status dump_remote_log_entries(PRINT_EVENT_INFO *print_event_info,
log. If we are running with to_last_remote_log, we print it, log. If we are running with to_last_remote_log, we print it,
because it serves as a useful marker between binlogs then. because it serves as a useful marker between binlogs then.
*/ */
delete ev;
continue; continue;
} }
len= 1; // fake Rotate, so don't increment old_off len= 1; // fake Rotate, so don't increment old_off
@ -2082,7 +2086,9 @@ static Exit_status dump_remote_log_entries(PRINT_EVENT_INFO *print_event_info,
Exit_status retval; Exit_status retval;
if ((file= load_processor.prepare_new_file_for_old_format(le,fname)) < 0) if ((file= load_processor.prepare_new_file_for_old_format(le,fname)) < 0)
{
DBUG_RETURN(ERROR_STOP); DBUG_RETURN(ERROR_STOP);
}
retval= process_event(print_event_info, ev, old_off, logname); retval= process_event(print_event_info, ev, old_off, logname);
if (retval != OK_CONTINUE) if (retval != OK_CONTINUE)
@ -2450,23 +2456,23 @@ int main(int argc, char** argv)
if (load_defaults("my", load_groups, &argc, &argv)) if (load_defaults("my", load_groups, &argc, &argv))
exit(1); exit(1);
defaults_argv= argv;
if (!(binlog_filter= new Rpl_filter)) if (!(binlog_filter= new Rpl_filter))
{ {
error("Failed to create Rpl_filter"); error("Failed to create Rpl_filter");
exit(1); goto err;
} }
defaults_argv= argv;
parse_args(&argc, (char***)&argv); parse_args(&argc, (char***)&argv);
if (!argc || opt_version) if (!argc || opt_version)
{ {
if (!argc) if (!argc)
usage(); usage();
cleanup(); if (!opt_version)
free_defaults(defaults_argv); retval= ERROR_STOP;
my_end(my_end_arg); goto err;
exit(!opt_version);
} }
if (opt_base64_output_mode == BASE64_OUTPUT_UNSPEC) if (opt_base64_output_mode == BASE64_OUTPUT_UNSPEC)
@ -2486,12 +2492,18 @@ int main(int argc, char** argv)
if (!dirname_for_local_load) if (!dirname_for_local_load)
{ {
if (init_tmpdir(&tmpdir, 0)) if (init_tmpdir(&tmpdir, 0))
exit(1); {
retval= ERROR_STOP;
goto err;
}
dirname_for_local_load= my_strdup(my_tmpdir(&tmpdir), MY_WME); dirname_for_local_load= my_strdup(my_tmpdir(&tmpdir), MY_WME);
} }
if (load_processor.init()) if (load_processor.init())
exit(1); {
retval= ERROR_STOP;
goto err;
}
if (dirname_for_local_load) if (dirname_for_local_load)
load_processor.init_by_dir_name(dirname_for_local_load); load_processor.init_by_dir_name(dirname_for_local_load);
else else
@ -2561,12 +2573,20 @@ int main(int argc, char** argv)
free_defaults(defaults_argv); free_defaults(defaults_argv);
my_free_open_file_info(); my_free_open_file_info();
load_processor.destroy(); load_processor.destroy();
mysql_server_end();
/* We cannot free DBUG, it is used in global destructors after exit(). */ /* We cannot free DBUG, it is used in global destructors after exit(). */
my_end(my_end_arg | MY_DONT_FREE_DBUG); my_end(my_end_arg | MY_DONT_FREE_DBUG);
exit(retval == ERROR_STOP ? 1 : 0); exit(retval == ERROR_STOP ? 1 : 0);
/* Keep compilers happy. */ /* Keep compilers happy. */
DBUG_RETURN(retval == ERROR_STOP ? 1 : 0); DBUG_RETURN(retval == ERROR_STOP ? 1 : 0);
err:
cleanup();
free_defaults(defaults_argv);
my_end(my_end_arg);
exit(retval == ERROR_STOP ? 1 : 0);
DBUG_RETURN(retval == ERROR_STOP ? 1 : 0);
} }

View File

@ -1,6 +1,6 @@
/* /*
Copyright (c) 2000, 2013, Oracle and/or its affiliates. Copyright (c) 2000, 2013, Oracle and/or its affiliates.
Copyright (c) 2010, 2013, Monty Program Ab. Copyright (c) 2010, 2015, Monty Program Ab.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -148,6 +148,12 @@ static int first_error=0;
*/ */
static uint multi_source= 0; static uint multi_source= 0;
static DYNAMIC_STRING extended_row; static DYNAMIC_STRING extended_row;
static DYNAMIC_STRING dynamic_where;
static MYSQL_RES *get_table_name_result= NULL;
static MEM_ROOT glob_root;
static MYSQL_RES *routine_res, *routine_list_res;
#include <sslopt-vars.h> #include <sslopt-vars.h>
FILE *md_result_file= 0; FILE *md_result_file= 0;
FILE *stderror_file=0; FILE *stderror_file=0;
@ -1138,16 +1144,14 @@ static int fetch_db_collation(const char *db_name,
int db_cl_size) int db_cl_size)
{ {
my_bool err_status= FALSE; my_bool err_status= FALSE;
char query[QUERY_LENGTH];
MYSQL_RES *db_cl_res; MYSQL_RES *db_cl_res;
MYSQL_ROW db_cl_row; MYSQL_ROW db_cl_row;
char quoted_database_buf[NAME_LEN*2+3];
char *qdatabase= quote_name(db_name, quoted_database_buf, 1);
my_snprintf(query, sizeof (query), "use %s", qdatabase); if (mysql_select_db(mysql, db_name))
{
if (mysql_query_with_error_report(mysql, NULL, query)) DB_error(mysql, "when selecting the database");
return 1; return 1; /* If --force */
}
if (mysql_query_with_error_report(mysql, &db_cl_res, if (mysql_query_with_error_report(mysql, &db_cl_res,
"select @@collation_database")) "select @@collation_database"))
@ -1585,14 +1589,26 @@ static void free_resources()
{ {
if (md_result_file && md_result_file != stdout) if (md_result_file && md_result_file != stdout)
my_fclose(md_result_file, MYF(0)); my_fclose(md_result_file, MYF(0));
if (get_table_name_result)
mysql_free_result(get_table_name_result);
if (routine_res)
mysql_free_result(routine_res);
if (routine_list_res)
mysql_free_result(routine_list_res);
if (mysql)
{
mysql_close(mysql);
mysql= 0;
}
my_free(order_by);
my_free(opt_password); my_free(opt_password);
my_free(current_host); my_free(current_host);
free_root(&glob_root, MYF(0));
if (my_hash_inited(&ignore_table)) if (my_hash_inited(&ignore_table))
my_hash_free(&ignore_table); my_hash_free(&ignore_table);
if (extended_insert) dynstr_free(&extended_row);
dynstr_free(&extended_row); dynstr_free(&dynamic_where);
if (insert_pat_inited) dynstr_free(&insert_pat);
dynstr_free(&insert_pat);
if (defaults_argv) if (defaults_argv)
free_defaults(defaults_argv); free_defaults(defaults_argv);
mysql_library_end(); mysql_library_end();
@ -1609,8 +1625,6 @@ static void maybe_exit(int error)
ignore_errors= 1; /* don't want to recurse, if something fails below */ ignore_errors= 1; /* don't want to recurse, if something fails below */
if (opt_slave_data) if (opt_slave_data)
do_start_slave_sql(mysql); do_start_slave_sql(mysql);
if (mysql)
mysql_close(mysql);
free_resources(); free_resources();
exit(error); exit(error);
} }
@ -1703,6 +1717,7 @@ static void dbDisconnect(char *host)
{ {
verbose_msg("-- Disconnecting from %s...\n", host ? host : "localhost"); verbose_msg("-- Disconnecting from %s...\n", host ? host : "localhost");
mysql_close(mysql); mysql_close(mysql);
mysql= 0;
} /* dbDisconnect */ } /* dbDisconnect */
@ -2324,6 +2339,8 @@ static uint dump_events_for_db(char *db)
(const char *) (query_str != NULL ? query_str : row[3]), (const char *) (query_str != NULL ? query_str : row[3]),
(const char *) delimiter); (const char *) delimiter);
my_free(query_str);
restore_time_zone(sql_file, delimiter); restore_time_zone(sql_file, delimiter);
restore_sql_mode(sql_file, delimiter); restore_sql_mode(sql_file, delimiter);
@ -2408,7 +2425,6 @@ static uint dump_routines_for_db(char *db)
char *routine_name; char *routine_name;
int i; int i;
FILE *sql_file= md_result_file; FILE *sql_file= md_result_file;
MYSQL_RES *routine_res, *routine_list_res;
MYSQL_ROW row, routine_list_row; MYSQL_ROW row, routine_list_row;
char db_cl_name[MY_CS_NAME_SIZE]; char db_cl_name[MY_CS_NAME_SIZE];
@ -2432,7 +2448,7 @@ static uint dump_routines_for_db(char *db)
/* Get database collation. */ /* Get database collation. */
if (fetch_db_collation(db_name_buff, db_cl_name, sizeof (db_cl_name))) if (fetch_db_collation(db, db_cl_name, sizeof (db_cl_name)))
DBUG_RETURN(1); DBUG_RETURN(1);
if (switch_character_set_results(mysql, "binary")) if (switch_character_set_results(mysql, "binary"))
@ -2463,7 +2479,11 @@ static uint dump_routines_for_db(char *db)
routine_type[i], routine_name); routine_type[i], routine_name);
if (mysql_query_with_error_report(mysql, &routine_res, query_buff)) if (mysql_query_with_error_report(mysql, &routine_res, query_buff))
{
mysql_free_result(routine_list_res);
routine_list_res= 0;
DBUG_RETURN(1); DBUG_RETURN(1);
}
while ((row= mysql_fetch_row(routine_res))) while ((row= mysql_fetch_row(routine_res)))
{ {
@ -2481,7 +2501,8 @@ static uint dump_routines_for_db(char *db)
print_comment(sql_file, 1, print_comment(sql_file, 1,
"-- does %s have permissions on mysql.proc?\n\n", "-- does %s have permissions on mysql.proc?\n\n",
current_user); current_user);
maybe_die(EX_MYSQLERR,"%s has insufficent privileges to %s!", current_user, query_buff); maybe_die(EX_MYSQLERR,"%s has insufficent privileges to %s!",
current_user, query_buff);
} }
else if (strlen(row[2])) else if (strlen(row[2]))
{ {
@ -2501,9 +2522,12 @@ static uint dump_routines_for_db(char *db)
if (mysql_num_fields(routine_res) >= 6) if (mysql_num_fields(routine_res) >= 6)
{ {
if (switch_db_collation(sql_file, db_name_buff, ";", if (switch_db_collation(sql_file, db, ";",
db_cl_name, row[5], &db_cl_altered)) db_cl_name, row[5], &db_cl_altered))
{ {
mysql_free_result(routine_res);
mysql_free_result(routine_list_res);
routine_res= routine_list_res= 0;
DBUG_RETURN(1); DBUG_RETURN(1);
} }
@ -2548,18 +2572,25 @@ static uint dump_routines_for_db(char *db)
if (db_cl_altered) if (db_cl_altered)
{ {
if (restore_db_collation(sql_file, db_name_buff, ";", db_cl_name)) if (restore_db_collation(sql_file, db, ";", db_cl_name))
{
mysql_free_result(routine_res);
mysql_free_result(routine_list_res);
routine_res= routine_list_res= 0;
DBUG_RETURN(1); DBUG_RETURN(1);
}
} }
} }
} }
} /* end of routine printing */ } /* end of routine printing */
mysql_free_result(routine_res); mysql_free_result(routine_res);
routine_res= 0;
} /* end of list of routines */ } /* end of list of routines */
} }
mysql_free_result(routine_list_res); mysql_free_result(routine_list_res);
routine_list_res= 0;
} /* end of for i (0 .. 1) */ } /* end of for i (0 .. 1) */
if (opt_xml) if (opt_xml)
@ -2681,13 +2712,20 @@ static uint get_table_structure(char *table, char *db, char *table_type,
if (switch_character_set_results(mysql, "binary") || if (switch_character_set_results(mysql, "binary") ||
mysql_query_with_error_report(mysql, &result, buff) || mysql_query_with_error_report(mysql, &result, buff) ||
switch_character_set_results(mysql, default_charset)) switch_character_set_results(mysql, default_charset))
{
my_free(order_by);
order_by= 0;
DBUG_RETURN(0); DBUG_RETURN(0);
}
if (path) if (path)
{ {
if (!(sql_file= open_sql_file_for_table(table, O_WRONLY))) if (!(sql_file= open_sql_file_for_table(table, O_WRONLY)))
{
my_free(order_by);
order_by= 0;
DBUG_RETURN(0); DBUG_RETURN(0);
}
write_header(sql_file, db); write_header(sql_file, db);
} }
@ -3257,10 +3295,6 @@ static int dump_trigger(FILE *sql_file, MYSQL_RES *show_create_trigger_rs,
continue; continue;
} }
query_str= cover_definer_clause(row[2], strlen(row[2]),
C_STRING_WITH_LEN("50017"),
C_STRING_WITH_LEN("50003"),
C_STRING_WITH_LEN(" TRIGGER"));
if (switch_db_collation(sql_file, db_name, ";", if (switch_db_collation(sql_file, db_name, ";",
db_cl_name, row[5], &db_cl_altered)) db_cl_name, row[5], &db_cl_altered))
DBUG_RETURN(TRUE); DBUG_RETURN(TRUE);
@ -3272,12 +3306,18 @@ static int dump_trigger(FILE *sql_file, MYSQL_RES *show_create_trigger_rs,
switch_sql_mode(sql_file, ";", row[1]); switch_sql_mode(sql_file, ";", row[1]);
query_str= cover_definer_clause(row[2], strlen(row[2]),
C_STRING_WITH_LEN("50017"),
C_STRING_WITH_LEN("50003"),
C_STRING_WITH_LEN(" TRIGGER"));
fprintf(sql_file, fprintf(sql_file,
"DELIMITER ;;\n" "DELIMITER ;;\n"
"/*!50003 %s */;;\n" "/*!50003 %s */;;\n"
"DELIMITER ;\n", "DELIMITER ;\n",
(const char *) (query_str != NULL ? query_str : row[2])); (const char *) (query_str != NULL ? query_str : row[2]));
my_free(query_str);
restore_sql_mode(sql_file, ";"); restore_sql_mode(sql_file, ";");
restore_cs_variables(sql_file, ";"); restore_cs_variables(sql_file, ";");
@ -3286,8 +3326,6 @@ static int dump_trigger(FILE *sql_file, MYSQL_RES *show_create_trigger_rs,
if (restore_db_collation(sql_file, db_name, ";", db_cl_name)) if (restore_db_collation(sql_file, db_name, ";", db_cl_name))
DBUG_RETURN(TRUE); DBUG_RETURN(TRUE);
} }
my_free(query_str);
} }
DBUG_RETURN(FALSE); DBUG_RETURN(FALSE);
@ -3378,13 +3416,14 @@ static int dump_triggers_for_table(char *table_name, char *db_name)
{ {
MYSQL_RES *show_create_trigger_rs= mysql_store_result(mysql); MYSQL_RES *show_create_trigger_rs= mysql_store_result(mysql);
if (!show_create_trigger_rs || int error= (!show_create_trigger_rs ||
dump_trigger(sql_file, show_create_trigger_rs, db_name, db_cl_name)) dump_trigger(sql_file, show_create_trigger_rs, db_name,
goto done; db_cl_name));
mysql_free_result(show_create_trigger_rs); mysql_free_result(show_create_trigger_rs);
if (error)
goto done;
} }
} }
if (opt_xml) if (opt_xml)
@ -3631,12 +3670,14 @@ static void dump_table(char *table, char *db)
{ {
dynstr_append_checked(&query_string, " ORDER BY "); dynstr_append_checked(&query_string, " ORDER BY ");
dynstr_append_checked(&query_string, order_by); dynstr_append_checked(&query_string, order_by);
my_free(order_by);
order_by= 0;
} }
if (mysql_real_query(mysql, query_string.str, query_string.length)) if (mysql_real_query(mysql, query_string.str, query_string.length))
{ {
DB_error(mysql, "when executing 'SELECT INTO OUTFILE'");
dynstr_free(&query_string); dynstr_free(&query_string);
DB_error(mysql, "when executing 'SELECT INTO OUTFILE'");
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
} }
@ -3662,6 +3703,8 @@ static void dump_table(char *table, char *db)
dynstr_append_checked(&query_string, " ORDER BY "); dynstr_append_checked(&query_string, " ORDER BY ");
dynstr_append_checked(&query_string, order_by); dynstr_append_checked(&query_string, order_by);
my_free(order_by);
order_by= 0;
} }
if (!opt_xml && !opt_compact) if (!opt_xml && !opt_compact)
@ -3671,6 +3714,7 @@ static void dump_table(char *table, char *db)
} }
if (mysql_query_with_error_report(mysql, 0, query_string.str)) if (mysql_query_with_error_report(mysql, 0, query_string.str))
{ {
dynstr_free(&query_string);
DB_error(mysql, "when retrieving data from server"); DB_error(mysql, "when retrieving data from server");
goto err; goto err;
} }
@ -3680,6 +3724,7 @@ static void dump_table(char *table, char *db)
res=mysql_store_result(mysql); res=mysql_store_result(mysql);
if (!res) if (!res)
{ {
dynstr_free(&query_string);
DB_error(mysql, "when retrieving data from server"); DB_error(mysql, "when retrieving data from server");
goto err; goto err;
} }
@ -3995,23 +4040,22 @@ err:
static char *getTableName(int reset) static char *getTableName(int reset)
{ {
static MYSQL_RES *res= NULL; MYSQL_ROW row;
MYSQL_ROW row;
if (!res) if (!get_table_name_result)
{ {
if (!(res= mysql_list_tables(mysql,NullS))) if (!(get_table_name_result= mysql_list_tables(mysql,NullS)))
return(NULL); return(NULL);
} }
if ((row= mysql_fetch_row(res))) if ((row= mysql_fetch_row(get_table_name_result)))
return((char*) row[0]); return((char*) row[0]);
if (reset) if (reset)
mysql_data_seek(res,0); /* We want to read again */ mysql_data_seek(get_table_name_result,0); /* We want to read again */
else else
{ {
mysql_free_result(res); mysql_free_result(get_table_name_result);
res= NULL; get_table_name_result= NULL;
} }
return(NULL); return(NULL);
} /* getTableName */ } /* getTableName */
@ -4028,46 +4072,44 @@ static int dump_all_tablespaces()
static int dump_tablespaces_for_tables(char *db, char **table_names, int tables) static int dump_tablespaces_for_tables(char *db, char **table_names, int tables)
{ {
DYNAMIC_STRING where;
int r; int r;
int i; int i;
char name_buff[NAME_LEN*2+3]; char name_buff[NAME_LEN*2+3];
mysql_real_escape_string(mysql, name_buff, db, strlen(db)); mysql_real_escape_string(mysql, name_buff, db, strlen(db));
init_dynamic_string_checked(&where, " AND TABLESPACE_NAME IN (" init_dynamic_string_checked(&dynamic_where, " AND TABLESPACE_NAME IN ("
"SELECT DISTINCT TABLESPACE_NAME FROM" "SELECT DISTINCT TABLESPACE_NAME FROM"
" INFORMATION_SCHEMA.PARTITIONS" " INFORMATION_SCHEMA.PARTITIONS"
" WHERE" " WHERE"
" TABLE_SCHEMA='", 256, 1024); " TABLE_SCHEMA='", 256, 1024);
dynstr_append_checked(&where, name_buff); dynstr_append_checked(&dynamic_where, name_buff);
dynstr_append_checked(&where, "' AND TABLE_NAME IN ("); dynstr_append_checked(&dynamic_where, "' AND TABLE_NAME IN (");
for (i=0 ; i<tables ; i++) for (i=0 ; i<tables ; i++)
{ {
mysql_real_escape_string(mysql, name_buff, mysql_real_escape_string(mysql, name_buff,
table_names[i], strlen(table_names[i])); table_names[i], strlen(table_names[i]));
dynstr_append_checked(&where, "'"); dynstr_append_checked(&dynamic_where, "'");
dynstr_append_checked(&where, name_buff); dynstr_append_checked(&dynamic_where, name_buff);
dynstr_append_checked(&where, "',"); dynstr_append_checked(&dynamic_where, "',");
} }
dynstr_trunc(&where, 1); dynstr_trunc(&dynamic_where, 1);
dynstr_append_checked(&where,"))"); dynstr_append_checked(&dynamic_where,"))");
DBUG_PRINT("info",("Dump TS for Tables where: %s",where.str)); DBUG_PRINT("info",("Dump TS for Tables where: %s",dynamic_where.str));
r= dump_tablespaces(where.str); r= dump_tablespaces(dynamic_where.str);
dynstr_free(&where); dynstr_free(&dynamic_where);
return r; return r;
} }
static int dump_tablespaces_for_databases(char** databases) static int dump_tablespaces_for_databases(char** databases)
{ {
DYNAMIC_STRING where;
int r; int r;
int i; int i;
init_dynamic_string_checked(&where, " AND TABLESPACE_NAME IN (" init_dynamic_string_checked(&dynamic_where, " AND TABLESPACE_NAME IN ("
"SELECT DISTINCT TABLESPACE_NAME FROM" "SELECT DISTINCT TABLESPACE_NAME FROM"
" INFORMATION_SCHEMA.PARTITIONS" " INFORMATION_SCHEMA.PARTITIONS"
" WHERE" " WHERE"
@ -4078,16 +4120,16 @@ static int dump_tablespaces_for_databases(char** databases)
char db_name_buff[NAME_LEN*2+3]; char db_name_buff[NAME_LEN*2+3];
mysql_real_escape_string(mysql, db_name_buff, mysql_real_escape_string(mysql, db_name_buff,
databases[i], strlen(databases[i])); databases[i], strlen(databases[i]));
dynstr_append_checked(&where, "'"); dynstr_append_checked(&dynamic_where, "'");
dynstr_append_checked(&where, db_name_buff); dynstr_append_checked(&dynamic_where, db_name_buff);
dynstr_append_checked(&where, "',"); dynstr_append_checked(&dynamic_where, "',");
} }
dynstr_trunc(&where, 1); dynstr_trunc(&dynamic_where, 1);
dynstr_append_checked(&where,"))"); dynstr_append_checked(&dynamic_where,"))");
DBUG_PRINT("info",("Dump TS for DBs where: %s",where.str)); DBUG_PRINT("info",("Dump TS for DBs where: %s",dynamic_where.str));
r= dump_tablespaces(where.str); r= dump_tablespaces(dynamic_where.str);
dynstr_free(&where); dynstr_free(&dynamic_where);
return r; return r;
} }
@ -4495,9 +4537,12 @@ static int dump_all_tables_in_db(char *database)
} }
} }
if (numrows && mysql_real_query(mysql, query.str, query.length-1)) if (numrows && mysql_real_query(mysql, query.str, query.length-1))
{
dynstr_free(&query);
DB_error(mysql, "when using LOCK TABLES"); DB_error(mysql, "when using LOCK TABLES");
/* We shall continue here, if --force was given */ /* We shall continue here, if --force was given */
dynstr_free(&query); }
dynstr_free(&query); /* Safe to call twice */
} }
if (flush_logs) if (flush_logs)
{ {
@ -4511,7 +4556,9 @@ static int dump_all_tables_in_db(char *database)
{ {
verbose_msg("-- Setting savepoint...\n"); verbose_msg("-- Setting savepoint...\n");
if (mysql_query_with_error_report(mysql, 0, "SAVEPOINT sp")) if (mysql_query_with_error_report(mysql, 0, "SAVEPOINT sp"))
{
DBUG_RETURN(1); DBUG_RETURN(1);
}
} }
while ((table= getTableName(0))) while ((table= getTableName(0)))
{ {
@ -4746,22 +4793,22 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
{ {
char table_buff[NAME_LEN*2+3]; char table_buff[NAME_LEN*2+3];
DYNAMIC_STRING lock_tables_query; DYNAMIC_STRING lock_tables_query;
MEM_ROOT root;
char **dump_tables, **pos, **end; char **dump_tables, **pos, **end;
DBUG_ENTER("dump_selected_tables"); DBUG_ENTER("dump_selected_tables");
if (init_dumping(db, init_dumping_tables)) if (init_dumping(db, init_dumping_tables))
DBUG_RETURN(1); DBUG_RETURN(1);
init_alloc_root(&root, 8192, 0, MYF(0)); init_alloc_root(&glob_root, 8192, 0, MYF(0));
if (!(dump_tables= pos= (char**) alloc_root(&root, tables * sizeof(char *)))) if (!(dump_tables= pos= (char**) alloc_root(&glob_root,
tables * sizeof(char *))))
die(EX_EOM, "alloc_root failure."); die(EX_EOM, "alloc_root failure.");
init_dynamic_string_checked(&lock_tables_query, "LOCK TABLES ", 256, 1024); init_dynamic_string_checked(&lock_tables_query, "LOCK TABLES ", 256, 1024);
for (; tables > 0 ; tables-- , table_names++) for (; tables > 0 ; tables-- , table_names++)
{ {
/* the table name passed on commandline may be wrong case */ /* the table name passed on commandline may be wrong case */
if ((*pos= get_actual_table_name(*table_names, &root))) if ((*pos= get_actual_table_name(*table_names, &glob_root)))
{ {
/* Add found table name to lock_tables_query */ /* Add found table name to lock_tables_query */
if (lock_tables) if (lock_tables)
@ -4776,7 +4823,7 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
if (!ignore_errors) if (!ignore_errors)
{ {
dynstr_free(&lock_tables_query); dynstr_free(&lock_tables_query);
free_root(&root, MYF(0)); free_root(&glob_root, MYF(0));
} }
maybe_die(EX_ILLEGAL_TABLE, "Couldn't find table: \"%s\"", *table_names); maybe_die(EX_ILLEGAL_TABLE, "Couldn't find table: \"%s\"", *table_names);
/* We shall countinue here, if --force was given */ /* We shall countinue here, if --force was given */
@ -4797,7 +4844,7 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
if (!ignore_errors) if (!ignore_errors)
{ {
dynstr_free(&lock_tables_query); dynstr_free(&lock_tables_query);
free_root(&root, MYF(0)); free_root(&glob_root, MYF(0));
} }
DB_error(mysql, "when doing LOCK TABLES"); DB_error(mysql, "when doing LOCK TABLES");
/* We shall countinue here, if --force was given */ /* We shall countinue here, if --force was given */
@ -4809,7 +4856,7 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
if (mysql_refresh(mysql, REFRESH_LOG)) if (mysql_refresh(mysql, REFRESH_LOG))
{ {
if (!ignore_errors) if (!ignore_errors)
free_root(&root, MYF(0)); free_root(&glob_root, MYF(0));
DB_error(mysql, "when doing refresh"); DB_error(mysql, "when doing refresh");
} }
/* We shall countinue here, if --force was given */ /* We shall countinue here, if --force was given */
@ -4823,7 +4870,10 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
{ {
verbose_msg("-- Setting savepoint...\n"); verbose_msg("-- Setting savepoint...\n");
if (mysql_query_with_error_report(mysql, 0, "SAVEPOINT sp")) if (mysql_query_with_error_report(mysql, 0, "SAVEPOINT sp"))
{
free_root(&glob_root, MYF(0));
DBUG_RETURN(1); DBUG_RETURN(1);
}
} }
/* Dump each selected table */ /* Dump each selected table */
@ -4838,6 +4888,8 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
{ {
if (path) if (path)
my_fclose(md_result_file, MYF(MY_WME)); my_fclose(md_result_file, MYF(MY_WME));
if (!ignore_errors)
free_root(&glob_root, MYF(0));
maybe_exit(EX_MYSQLERR); maybe_exit(EX_MYSQLERR);
} }
} }
@ -4856,7 +4908,11 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
{ {
verbose_msg("-- Rolling back to savepoint sp...\n"); verbose_msg("-- Rolling back to savepoint sp...\n");
if (mysql_query_with_error_report(mysql, 0, "ROLLBACK TO SAVEPOINT sp")) if (mysql_query_with_error_report(mysql, 0, "ROLLBACK TO SAVEPOINT sp"))
{
if (!ignore_errors)
free_root(&glob_root, MYF(0));
maybe_exit(EX_MYSQLERR); maybe_exit(EX_MYSQLERR);
}
} }
} }
@ -4864,8 +4920,10 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
{ {
verbose_msg("-- Releasing savepoint...\n"); verbose_msg("-- Releasing savepoint...\n");
if (mysql_query_with_error_report(mysql, 0, "RELEASE SAVEPOINT sp")) if (mysql_query_with_error_report(mysql, 0, "RELEASE SAVEPOINT sp"))
{
free_root(&glob_root, MYF(0));
DBUG_RETURN(1); DBUG_RETURN(1);
}
} }
/* Dump each selected view */ /* Dump each selected view */
@ -4885,9 +4943,7 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
DBUG_PRINT("info", ("Dumping routines for database %s", db)); DBUG_PRINT("info", ("Dumping routines for database %s", db));
dump_routines_for_db(db); dump_routines_for_db(db);
} }
free_root(&root, MYF(0)); free_root(&glob_root, MYF(0));
my_free(order_by);
order_by= 0;
if (opt_xml) if (opt_xml)
{ {
fputs("</database>\n", md_result_file); fputs("</database>\n", md_result_file);

View File

@ -1,6 +1,6 @@
/* /*
Copyright (c) 2000, 2012, Oracle and/or its affiliates. Copyright (c) 2000, 2015, Oracle and/or its affiliates.
Copyright (c) 2010, 2012, Monty Program Ab Copyright (c) 2010, 2015, MariaDB
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -68,10 +68,12 @@ int main(int argc, char **argv)
my_bool first_argument_uses_wildcards=0; my_bool first_argument_uses_wildcards=0;
char *wild; char *wild;
MYSQL mysql; MYSQL mysql;
static char **defaults_argv;
MY_INIT(argv[0]); MY_INIT(argv[0]);
sf_leaking_memory=1; /* don't report memory leaks on early exits */ sf_leaking_memory=1; /* don't report memory leaks on early exits */
if (load_defaults("my",load_default_groups,&argc,&argv)) if (load_defaults("my",load_default_groups,&argc,&argv))
exit(1); exit(1);
defaults_argv=argv;
get_options(&argc,&argv); get_options(&argc,&argv);
@ -150,7 +152,8 @@ int main(int argc, char **argv)
0))) 0)))
{ {
fprintf(stderr,"%s: %s\n",my_progname,mysql_error(&mysql)); fprintf(stderr,"%s: %s\n",my_progname,mysql_error(&mysql));
exit(1); error= 1;
goto error;
} }
mysql.reconnect= 1; mysql.reconnect= 1;
@ -169,11 +172,14 @@ int main(int argc, char **argv)
error=list_fields(&mysql,argv[0],argv[1],wild); error=list_fields(&mysql,argv[0],argv[1],wild);
break; break;
} }
error:
mysql_close(&mysql); /* Close & free connection */ mysql_close(&mysql); /* Close & free connection */
my_free(opt_password); my_free(opt_password);
mysql_server_end();
#ifdef HAVE_SMEM #ifdef HAVE_SMEM
my_free(shared_memory_base_name); my_free(shared_memory_base_name);
#endif #endif
free_defaults(defaults_argv);
my_end(my_end_arg); my_end(my_end_arg);
exit(error ? 1 : 0); exit(error ? 1 : 0);
return 0; /* No compiler warnings */ return 0; /* No compiler warnings */
@ -376,7 +382,7 @@ list_dbs(MYSQL *mysql,const char *wild)
uint length, counter = 0; uint length, counter = 0;
ulong rowcount = 0L; ulong rowcount = 0L;
char tables[NAME_LEN+1], rows[NAME_LEN+1]; char tables[NAME_LEN+1], rows[NAME_LEN+1];
char query[255]; char query[NAME_LEN + 100];
MYSQL_FIELD *field; MYSQL_FIELD *field;
MYSQL_RES *result; MYSQL_RES *result;
MYSQL_ROW row= NULL, rrow; MYSQL_ROW row= NULL, rrow;
@ -443,7 +449,8 @@ list_dbs(MYSQL *mysql,const char *wild)
MYSQL_ROW trow; MYSQL_ROW trow;
while ((trow = mysql_fetch_row(tresult))) while ((trow = mysql_fetch_row(tresult)))
{ {
sprintf(query,"SELECT COUNT(*) FROM `%s`",trow[0]); my_snprintf(query, sizeof(query),
"SELECT COUNT(*) FROM `%s`", trow[0]);
if (!(mysql_query(mysql,query))) if (!(mysql_query(mysql,query)))
{ {
MYSQL_RES *rresult; MYSQL_RES *rresult;
@ -499,7 +506,7 @@ list_tables(MYSQL *mysql,const char *db,const char *table)
{ {
const char *header; const char *header;
uint head_length, counter = 0; uint head_length, counter = 0;
char query[255], rows[NAME_LEN], fields[16]; char query[NAME_LEN + 100], rows[NAME_LEN], fields[16];
MYSQL_FIELD *field; MYSQL_FIELD *field;
MYSQL_RES *result; MYSQL_RES *result;
MYSQL_ROW row, rrow; MYSQL_ROW row, rrow;
@ -584,7 +591,8 @@ list_tables(MYSQL *mysql,const char *db,const char *table)
if (opt_verbose > 1) if (opt_verbose > 1)
{ {
/* Print the count of rows for each table */ /* Print the count of rows for each table */
sprintf(query,"SELECT COUNT(*) FROM `%s`",row[0]); my_snprintf(query, sizeof(query), "SELECT COUNT(*) FROM `%s`",
row[0]);
if (!(mysql_query(mysql,query))) if (!(mysql_query(mysql,query)))
{ {
if ((rresult = mysql_store_result(mysql))) if ((rresult = mysql_store_result(mysql)))
@ -644,13 +652,15 @@ list_tables(MYSQL *mysql,const char *db,const char *table)
static int static int
list_table_status(MYSQL *mysql,const char *db,const char *wild) list_table_status(MYSQL *mysql,const char *db,const char *wild)
{ {
char query[1024],*end; char query[NAME_LEN + 100];
int len;
MYSQL_RES *result; MYSQL_RES *result;
MYSQL_ROW row; MYSQL_ROW row;
end=strxmov(query,"show table status from `",db,"`",NullS); len= sizeof(query);
if (wild && wild[0]) len-= my_snprintf(query, len, "show table status from `%s`", db);
strxmov(end," like '",wild,"'",NullS); if (wild && wild[0] && len)
strxnmov(query + strlen(query), len, " like '", wild, "'", NullS);
if (mysql_query(mysql,query) || !(result=mysql_store_result(mysql))) if (mysql_query(mysql,query) || !(result=mysql_store_result(mysql)))
{ {
fprintf(stderr,"%s: Cannot get status for db: %s, table: %s: %s\n", fprintf(stderr,"%s: Cannot get status for db: %s, table: %s: %s\n",
@ -682,7 +692,8 @@ static int
list_fields(MYSQL *mysql,const char *db,const char *table, list_fields(MYSQL *mysql,const char *db,const char *table,
const char *wild) const char *wild)
{ {
char query[1024],*end; char query[NAME_LEN + 100];
int len;
MYSQL_RES *result; MYSQL_RES *result;
MYSQL_ROW row; MYSQL_ROW row;
ulong UNINIT_VAR(rows); ulong UNINIT_VAR(rows);
@ -696,7 +707,7 @@ list_fields(MYSQL *mysql,const char *db,const char *table,
if (opt_count) if (opt_count)
{ {
sprintf(query,"select count(*) from `%s`", table); my_snprintf(query, sizeof(query), "select count(*) from `%s`", table);
if (mysql_query(mysql,query) || !(result=mysql_store_result(mysql))) if (mysql_query(mysql,query) || !(result=mysql_store_result(mysql)))
{ {
fprintf(stderr,"%s: Cannot get record count for db: %s, table: %s: %s\n", fprintf(stderr,"%s: Cannot get record count for db: %s, table: %s: %s\n",
@ -708,9 +719,11 @@ list_fields(MYSQL *mysql,const char *db,const char *table,
mysql_free_result(result); mysql_free_result(result);
} }
end=strmov(strmov(strmov(query,"show /*!32332 FULL */ columns from `"),table),"`"); len= sizeof(query);
if (wild && wild[0]) len-= my_snprintf(query, len, "show /*!32332 FULL */ columns from `%s`",
strxmov(end," like '",wild,"'",NullS); table);
if (wild && wild[0] && len)
strxnmov(query + strlen(query), len, " like '", wild, "'", NullS);
if (mysql_query(mysql,query) || !(result=mysql_store_result(mysql))) if (mysql_query(mysql,query) || !(result=mysql_store_result(mysql)))
{ {
fprintf(stderr,"%s: Cannot list columns in db: %s, table: %s: %s\n", fprintf(stderr,"%s: Cannot list columns in db: %s, table: %s: %s\n",
@ -731,7 +744,7 @@ list_fields(MYSQL *mysql,const char *db,const char *table,
print_res_top(result); print_res_top(result);
if (opt_show_keys) if (opt_show_keys)
{ {
end=strmov(strmov(strmov(query,"show keys from `"),table),"`"); my_snprintf(query, sizeof(query), "show keys from `%s`", table);
if (mysql_query(mysql,query) || !(result=mysql_store_result(mysql))) if (mysql_query(mysql,query) || !(result=mysql_store_result(mysql)))
{ {
fprintf(stderr,"%s: Cannot list keys in db: %s, table: %s: %s\n", fprintf(stderr,"%s: Cannot list keys in db: %s, table: %s: %s\n",

View File

@ -168,6 +168,7 @@ static ulonglong auto_generate_sql_number;
const char *concurrency_str= NULL; const char *concurrency_str= NULL;
static char *create_string; static char *create_string;
uint *concurrency; uint *concurrency;
static char mysql_charsets_dir[FN_REFLEN+1];
const char *default_dbug_option="d:t:o,/tmp/mysqlslap.trace"; const char *default_dbug_option="d:t:o,/tmp/mysqlslap.trace";
const char *opt_csv_str; const char *opt_csv_str;
@ -372,6 +373,7 @@ int main(int argc, char **argv)
{ {
fprintf(stderr,"%s: Error when connecting to server: %s\n", fprintf(stderr,"%s: Error when connecting to server: %s\n",
my_progname,mysql_error(&mysql)); my_progname,mysql_error(&mysql));
mysql_close(&mysql);
free_defaults(defaults_argv); free_defaults(defaults_argv);
my_end(0); my_end(0);
exit(1); exit(1);
@ -417,8 +419,7 @@ int main(int argc, char **argv)
pthread_mutex_destroy(&sleeper_mutex); pthread_mutex_destroy(&sleeper_mutex);
pthread_cond_destroy(&sleep_threshhold); pthread_cond_destroy(&sleep_threshhold);
if (!opt_only_print) mysql_close(&mysql); /* Close & free connection */
mysql_close(&mysql); /* Close & free connection */
/* now free all the strings we created */ /* now free all the strings we created */
my_free(opt_password); my_free(opt_password);
@ -585,6 +586,9 @@ static struct my_option my_long_options[] =
"Number of row inserts to perform for each thread (default is 100).", "Number of row inserts to perform for each thread (default is 100).",
&auto_generate_sql_number, &auto_generate_sql_number, &auto_generate_sql_number, &auto_generate_sql_number,
0, GET_ULL, REQUIRED_ARG, 100, 0, 0, 0, 0, 0}, 0, GET_ULL, REQUIRED_ARG, 100, 0, 0, 0, 0, 0},
{"character-sets-dir", OPT_CHARSETS_DIR,
"Directory for character set files.", &charsets_dir,
&charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"commit", OPT_SLAP_COMMIT, "Commit records every X number of statements.", {"commit", OPT_SLAP_COMMIT, "Commit records every X number of statements.",
&commit_rate, &commit_rate, 0, GET_UINT, REQUIRED_ARG, &commit_rate, &commit_rate, 0, GET_UINT, REQUIRED_ARG,
0, 0, 0, 0, 0, 0}, 0, 0, 0, 0, 0, 0},
@ -782,6 +786,10 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
DBUG_PUSH(argument ? argument : default_dbug_option); DBUG_PUSH(argument ? argument : default_dbug_option);
debug_check_flag= 1; debug_check_flag= 1;
break; break;
case OPT_CHARSETS_DIR:
strmake_buf(mysql_charsets_dir, argument);
charsets_dir = mysql_charsets_dir;
break;
case OPT_SLAP_CSV: case OPT_SLAP_CSV:
if (!argument) if (!argument)
argument= (char *)"-"; /* use stdout */ argument= (char *)"-"; /* use stdout */
@ -1863,21 +1871,21 @@ pthread_handler_t run_task(void *p)
} }
pthread_mutex_unlock(&sleeper_mutex); pthread_mutex_unlock(&sleeper_mutex);
if (!(mysql= mysql_init(NULL)))
{
fprintf(stderr,"%s: mysql_init() failed ERROR : %s\n",
my_progname, mysql_error(mysql));
exit(0);
}
set_mysql_connect_options(mysql);
if (mysql_thread_init()) if (mysql_thread_init())
{ {
fprintf(stderr,"%s: mysql_thread_init() failed ERROR : %s\n", fprintf(stderr,"%s: mysql_thread_init() failed\n", my_progname);
my_progname, mysql_error(mysql));
exit(0); exit(0);
} }
if (!(mysql= mysql_init(NULL)))
{
fprintf(stderr,"%s: mysql_init() failed\n", my_progname);
mysql_thread_end();
exit(0);
}
set_mysql_connect_options(mysql);
DBUG_PRINT("info", ("trying to connect to host %s as user %s", host, user)); DBUG_PRINT("info", ("trying to connect to host %s as user %s", host, user));
if (!opt_only_print) if (!opt_only_print)
@ -1995,8 +2003,7 @@ end:
if (commit_rate) if (commit_rate)
run_query(mysql, "COMMIT", strlen("COMMIT")); run_query(mysql, "COMMIT", strlen("COMMIT"));
if (!opt_only_print) mysql_close(mysql);
mysql_close(mysql);
mysql_thread_end(); mysql_thread_end();

View File

@ -5246,7 +5246,7 @@ static st_error global_error_names[] =
#include <my_base.h> #include <my_base.h>
static st_error handler_error_names[] = static st_error handler_error_names[] =
{ {
{ "<No error>", -1U, "" }, { "<No error>", UINT_MAX, "" },
#include <handler_ername.h> #include <handler_ername.h>
{ 0, 0, 0 } { 0, 0, 0 }
}; };

View File

@ -29,7 +29,7 @@ SET(CPACK_RPM_PACKAGE_NAME "MariaDB-Galera")
SET(CPACK_PACKAGE_FILE_NAME "${CPACK_RPM_PACKAGE_NAME}-${VERSION}-${RPM}-${CMAKE_SYSTEM_PROCESSOR}") SET(CPACK_PACKAGE_FILE_NAME "${CPACK_RPM_PACKAGE_NAME}-${VERSION}-${RPM}-${CMAKE_SYSTEM_PROCESSOR}")
SET(CPACK_RPM_PACKAGE_RELEASE "1%{?dist}") SET(CPACK_RPM_PACKAGE_RELEASE "1%{?dist}")
SET(CPACK_RPM_PACKAGE_LICENSE "GPL") SET(CPACK_RPM_PACKAGE_LICENSE "GPLv2")
SET(CPACK_RPM_PACKAGE_RELOCATABLE FALSE) SET(CPACK_RPM_PACKAGE_RELOCATABLE FALSE)
SET(CPACK_PACKAGE_RELOCATABLE FALSE) SET(CPACK_PACKAGE_RELOCATABLE FALSE)
SET(CPACK_RPM_PACKAGE_GROUP "Applications/Databases") SET(CPACK_RPM_PACKAGE_GROUP "Applications/Databases")

View File

@ -96,8 +96,11 @@ IF(MSVC)
STRING(REGEX REPLACE "/STACK:([^ ]+)" "" CMAKE_${type}_LINKER_FLAGS "${CMAKE_${type}_LINKER_FLAGS}") STRING(REGEX REPLACE "/STACK:([^ ]+)" "" CMAKE_${type}_LINKER_FLAGS "${CMAKE_${type}_LINKER_FLAGS}")
STRING(REGEX REPLACE "/INCREMENTAL:([^ ]+)" "/INCREMENTAL:NO" CMAKE_${type}_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_${type}_LINKER_FLAGS_RELWITHDEBINFO}") STRING(REGEX REPLACE "/INCREMENTAL:([^ ]+)" "/INCREMENTAL:NO" CMAKE_${type}_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_${type}_LINKER_FLAGS_RELWITHDEBINFO}")
STRING(REGEX REPLACE "/INCREMENTAL$" "/INCREMENTAL:NO" CMAKE_${type}_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_${type}_LINKER_FLAGS_RELWITHDEBINFO}") STRING(REGEX REPLACE "/INCREMENTAL$" "/INCREMENTAL:NO" CMAKE_${type}_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_${type}_LINKER_FLAGS_RELWITHDEBINFO}")
STRING(REGEX REPLACE "/INCREMENTAL:([^ ]+)" "/INCREMENTAL:NO" CMAKE_${type}_LINKER_FLAGS_DEBUG "${CMAKE_${type}_LINKER_FLAGS_DEBUG}")
STRING(REGEX REPLACE "/INCREMENTAL$" "/INCREMENTAL:NO" CMAKE_${type}_LINKER_FLAGS_DEBUG "${CMAKE_${type}_LINKER_FLAGS_DEBUG}")
SET(CMAKE_${type}_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_${type}_LINKER_FLAGS_RELWITHDEBINFO} /OPT:REF /release") SET(CMAKE_${type}_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_${type}_LINKER_FLAGS_RELWITHDEBINFO} /OPT:REF /release")
ENDFOREACH() ENDFOREACH()
# Mark 32 bit executables large address aware so they can # Mark 32 bit executables large address aware so they can
# use > 2GB address space # use > 2GB address space
@ -113,7 +116,7 @@ IF(MSVC)
#TODO: update the code and remove the disabled warnings #TODO: update the code and remove the disabled warnings
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4800 /wd4805 /wd4996") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4800 /wd4805 /wd4996")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4800 /wd4805 /wd4996 /we4099") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4800 /wd4805 /wd4996 /wd4291 /we4099")
IF(CMAKE_SIZEOF_VOID_P MATCHES 8) IF(CMAKE_SIZEOF_VOID_P MATCHES 8)
# _WIN64 is defined by the compiler itself. # _WIN64 is defined by the compiler itself.
@ -181,14 +184,14 @@ CHECK_SYMBOL_REPLACEMENT(S_IROTH _S_IREAD sys/stat.h)
CHECK_SYMBOL_REPLACEMENT(S_IFIFO _S_IFIFO sys/stat.h) CHECK_SYMBOL_REPLACEMENT(S_IFIFO _S_IFIFO sys/stat.h)
CHECK_SYMBOL_REPLACEMENT(SIGQUIT SIGTERM signal.h) CHECK_SYMBOL_REPLACEMENT(SIGQUIT SIGTERM signal.h)
CHECK_SYMBOL_REPLACEMENT(SIGPIPE SIGINT signal.h) CHECK_SYMBOL_REPLACEMENT(SIGPIPE SIGINT signal.h)
CHECK_SYMBOL_REPLACEMENT(isnan _isnan float.h) CHECK_SYMBOL_REPLACEMENT(isnan _isnan "math.h;float.h")
CHECK_SYMBOL_REPLACEMENT(finite _finite float.h) CHECK_SYMBOL_REPLACEMENT(finite _finite "math;float.h")
CHECK_FUNCTION_REPLACEMENT(popen _popen) CHECK_FUNCTION_REPLACEMENT(popen _popen)
CHECK_FUNCTION_REPLACEMENT(pclose _pclose) CHECK_FUNCTION_REPLACEMENT(pclose _pclose)
CHECK_FUNCTION_REPLACEMENT(access _access) CHECK_FUNCTION_REPLACEMENT(access _access)
CHECK_FUNCTION_REPLACEMENT(strcasecmp _stricmp) CHECK_FUNCTION_REPLACEMENT(strcasecmp _stricmp)
CHECK_FUNCTION_REPLACEMENT(strncasecmp _strnicmp) CHECK_FUNCTION_REPLACEMENT(strncasecmp _strnicmp)
CHECK_FUNCTION_REPLACEMENT(snprintf _snprintf) CHECK_SYMBOL_REPLACEMENT(snprintf _snprintf stdio.h)
CHECK_FUNCTION_REPLACEMENT(strtok_r strtok_s) CHECK_FUNCTION_REPLACEMENT(strtok_r strtok_s)
CHECK_FUNCTION_REPLACEMENT(strtoll _strtoi64) CHECK_FUNCTION_REPLACEMENT(strtoll _strtoi64)
CHECK_FUNCTION_REPLACEMENT(strtoull _strtoui64) CHECK_FUNCTION_REPLACEMENT(strtoull _strtoui64)

View File

@ -102,7 +102,6 @@ SET(HAVE_IPPROTO_IPV6 CACHE INTERNAL "")
SET(HAVE_IPV6 TRUE CACHE INTERNAL "") SET(HAVE_IPV6 TRUE CACHE INTERNAL "")
SET(HAVE_IPV6_V6ONLY 1 CACHE INTERNAL "") SET(HAVE_IPV6_V6ONLY 1 CACHE INTERNAL "")
SET(HAVE_ISINF CACHE INTERNAL "") SET(HAVE_ISINF CACHE INTERNAL "")
SET(HAVE_ISNAN CACHE INTERNAL "")
SET(HAVE_ISSETUGID CACHE INTERNAL "") SET(HAVE_ISSETUGID CACHE INTERNAL "")
SET(HAVE_GETUID CACHE INTERNAL "") SET(HAVE_GETUID CACHE INTERNAL "")
SET(HAVE_GETEUID CACHE INTERNAL "") SET(HAVE_GETEUID CACHE INTERNAL "")
@ -232,7 +231,6 @@ SET(HAVE_SIZEOF_ULONG FALSE CACHE INTERNAL "")
SET(HAVE_SIZEOF_U_INT32_T FALSE CACHE INTERNAL "") SET(HAVE_SIZEOF_U_INT32_T FALSE CACHE INTERNAL "")
SET(HAVE_SIZE_OF_SSIZE_T FALSE CACHE INTERNAL "") SET(HAVE_SIZE_OF_SSIZE_T FALSE CACHE INTERNAL "")
SET(HAVE_SLEEP CACHE INTERNAL "") SET(HAVE_SLEEP CACHE INTERNAL "")
SET(HAVE_SNPRINTF CACHE INTERNAL "")
SET(HAVE_SOCKADDR_STORAGE_SS_FAMILY 1 CACHE INTERNAL "") SET(HAVE_SOCKADDR_STORAGE_SS_FAMILY 1 CACHE INTERNAL "")
SET(HAVE_SOLARIS_STYLE_GETHOST CACHE INTERNAL "") SET(HAVE_SOLARIS_STYLE_GETHOST CACHE INTERNAL "")
SET(STACK_DIRECTION -1 CACHE INTERNAL "") SET(STACK_DIRECTION -1 CACHE INTERNAL "")
@ -325,10 +323,8 @@ SET(WORDS_BIGENDIAN CACHE INTERNAL "")
SET(HAVE__S_IFIFO 1 CACHE INTERNAL "") SET(HAVE__S_IFIFO 1 CACHE INTERNAL "")
SET(HAVE__S_IREAD 1 CACHE INTERNAL "") SET(HAVE__S_IREAD 1 CACHE INTERNAL "")
SET(HAVE__finite 1 CACHE INTERNAL "") SET(HAVE__finite 1 CACHE INTERNAL "")
SET(HAVE__isnan 1 CACHE INTERNAL "")
SET(HAVE__pclose 1 CACHE INTERNAL "") SET(HAVE__pclose 1 CACHE INTERNAL "")
SET(HAVE__popen 1 CACHE INTERNAL "") SET(HAVE__popen 1 CACHE INTERNAL "")
SET(HAVE__snprintf 1 CACHE INTERNAL "")
SET(HAVE__stricmp 1 CACHE INTERNAL "") SET(HAVE__stricmp 1 CACHE INTERNAL "")
SET(HAVE__strnicmp 1 CACHE INTERNAL "") SET(HAVE__strnicmp 1 CACHE INTERNAL "")
SET(HAVE__strtoi64 1 CACHE INTERNAL "") SET(HAVE__strtoi64 1 CACHE INTERNAL "")

View File

@ -318,6 +318,8 @@
#cmakedefine HAVE_TIMESPEC_TS_SEC 1 #cmakedefine HAVE_TIMESPEC_TS_SEC 1
#cmakedefine STRUCT_DIRENT_HAS_D_INO 1 #cmakedefine STRUCT_DIRENT_HAS_D_INO 1
#cmakedefine STRUCT_DIRENT_HAS_D_NAMLEN 1 #cmakedefine STRUCT_DIRENT_HAS_D_NAMLEN 1
#cmakedefine STRUCT_TIMESPEC_HAS_TV_SEC 1
#cmakedefine STRUCT_TIMESPEC_HAS_TV_NSEC 1
#cmakedefine SPRINTF_RETURNS_INT 1 #cmakedefine SPRINTF_RETURNS_INT 1
#define USE_MB 1 #define USE_MB 1
@ -405,6 +407,7 @@
#cmakedefine SIGNAL_RETURN_TYPE_IS_VOID 1 #cmakedefine SIGNAL_RETURN_TYPE_IS_VOID 1
#cmakedefine RETSIGTYPE @RETSIGTYPE@ #cmakedefine RETSIGTYPE @RETSIGTYPE@
#cmakedefine VOID_SIGHANDLER 1 #cmakedefine VOID_SIGHANDLER 1
#cmakedefine HAVE_SIGHANDLER_T 1
#define STRUCT_RLIMIT struct rlimit #define STRUCT_RLIMIT struct rlimit
#ifdef __APPLE__ #ifdef __APPLE__
@ -490,6 +493,7 @@
#define SYSTEM_TYPE "@SYSTEM_TYPE@" #define SYSTEM_TYPE "@SYSTEM_TYPE@"
#define MACHINE_TYPE "@CMAKE_SYSTEM_PROCESSOR@" #define MACHINE_TYPE "@CMAKE_SYSTEM_PROCESSOR@"
#define DEFAULT_MACHINE "@DEFAULT_MACHINE@"
#cmakedefine HAVE_DTRACE 1 #cmakedefine HAVE_DTRACE 1
#cmakedefine SIGNAL_WITH_VIO_CLOSE 1 #cmakedefine SIGNAL_WITH_VIO_CLOSE 1
@ -515,6 +519,10 @@
#cmakedefine strtoll @strtoll@ #cmakedefine strtoll @strtoll@
#cmakedefine strtoull @strtoull@ #cmakedefine strtoull @strtoull@
#cmakedefine vsnprintf @vsnprintf@ #cmakedefine vsnprintf @vsnprintf@
#if (_MSC_VER > 1800)
#define tzname _tzname
#define P_tmpdir "C:\\TEMP"
#endif
#if (_MSC_VER > 1310) #if (_MSC_VER > 1310)
# define HAVE_SETENV # define HAVE_SETENV
#define setenv(a,b,c) _putenv_s(a,b) #define setenv(a,b,c) _putenv_s(a,b)
@ -523,7 +531,7 @@
/* We don't want the min/max macros */ /* We don't want the min/max macros */
#ifdef __WIN__ #ifdef __WIN__
#define NOMINMAX #define NOMINMAX 1
#endif #endif
/* /*

View File

@ -549,6 +549,7 @@ MY_CHECK_TYPE_SIZE(mode_t MODE_T)
IF(NOT SIZEOF_MODE_T) IF(NOT SIZEOF_MODE_T)
SET(mode_t int) SET(mode_t int)
ENDIF() ENDIF()
MY_CHECK_TYPE_SIZE(sighandler_t SIGHANDLER_T)
IF(HAVE_NETINET_IN_H) IF(HAVE_NETINET_IN_H)
SET(CMAKE_EXTRA_INCLUDE_FILES netinet/in.h) SET(CMAKE_EXTRA_INCLUDE_FILES netinet/in.h)
@ -1058,3 +1059,5 @@ CHECK_STRUCT_HAS_MEMBER("struct dirent" d_ino "dirent.h" STRUCT_DIRENT_HAS_D_IN
CHECK_STRUCT_HAS_MEMBER("struct dirent" d_namlen "dirent.h" STRUCT_DIRENT_HAS_D_NAMLEN) CHECK_STRUCT_HAS_MEMBER("struct dirent" d_namlen "dirent.h" STRUCT_DIRENT_HAS_D_NAMLEN)
SET(SPRINTF_RETURNS_INT 1) SET(SPRINTF_RETURNS_INT 1)
CHECK_INCLUDE_FILE(ucontext.h HAVE_UCONTEXT_H) CHECK_INCLUDE_FILE(ucontext.h HAVE_UCONTEXT_H)
CHECK_STRUCT_HAS_MEMBER("struct timespec" tv_sec "time.h" STRUCT_TIMESPEC_HAS_TV_SEC)
CHECK_STRUCT_HAS_MEMBER("struct timespec" tv_nsec "time.h" STRUCT_TIMESPEC_HAS_TV_NSEC)

View File

@ -39,11 +39,15 @@ case "${CODENAME}" in
*) LIBREADLINE_DEV=libreadline-gplv2-dev ;; *) LIBREADLINE_DEV=libreadline-gplv2-dev ;;
esac esac
sed -i -e "s/\\\${LIBREADLINE_DEV}/${LIBREADLINE_DEV}/g" debian/control
case "${CODENAME}" in case "${CODENAME}" in
etch|lenny|hardy|intrepid|jaunty|karmic) CMAKE_DEP='' ;; etch|lenny|hardy|intrepid|jaunty|karmic) CMAKE_DEP='' ;;
*) CMAKE_DEP='cmake (>= 2.7), ' ;; *) CMAKE_DEP='cmake (>= 2.7), ' ;;
esac esac
sed -i -e "s/\\\${CMAKE_DEP}/${CMAKE_DEP}/g" debian/control
# Clean up build file symlinks that are distro-specific. First remove all, then set # Clean up build file symlinks that are distro-specific. First remove all, then set
# new links. # new links.
DISTRODIRS="$(ls ./debian/dist)" DISTRODIRS="$(ls ./debian/dist)"
@ -60,9 +64,7 @@ echo "Copying distribution specific build files for ${DISTRO}"
DISTROFILES="$(ls ./debian/dist/${DISTRO})" DISTROFILES="$(ls ./debian/dist/${DISTRO})"
for distrofile in ${DISTROFILES}; do for distrofile in ${DISTROFILES}; do
rm -f "./debian/${distrofile}" rm -f "./debian/${distrofile}"
sed -e "s/\\\${LIBREADLINE_DEV}/${LIBREADLINE_DEV}/g" \ cat "./debian/dist/${DISTRO}/${distrofile}" > "./debian/${distrofile}"
-e "s/\\\${CMAKE_DEP}/${CMAKE_DEP}/g" \
< "./debian/dist/${DISTRO}/${distrofile}" > "./debian/${distrofile}"
chmod --reference="./debian/dist/${DISTRO}/${distrofile}" "./debian/${distrofile}" chmod --reference="./debian/dist/${DISTRO}/${distrofile}" "./debian/${distrofile}"
done; done;
@ -75,8 +77,9 @@ dch -b -D ${CODENAME} -v "${UPSTREAM}${PATCHLEVEL}-${RELEASE_NAME}${RELEASE_EXTR
echo "Creating package version ${UPSTREAM}${PATCHLEVEL}-${RELEASE_NAME}${RELEASE_EXTRA:+-${RELEASE_EXTRA}}1~${CODENAME} ... " echo "Creating package version ${UPSTREAM}${PATCHLEVEL}-${RELEASE_NAME}${RELEASE_EXTRA:+-${RELEASE_EXTRA}}1~${CODENAME} ... "
# Build the package. # Build the package.
# # Pass -I so that .git and other unnecessary temporary and source control files
fakeroot dpkg-buildpackage -us -uc # will be ignored by dpkg-source when createing the tar.gz source package
fakeroot dpkg-buildpackage -us -uc -I
[ -e debian/autorm-file ] && rm -vf `cat debian/autorm-file` [ -e debian/autorm-file ] && rm -vf `cat debian/autorm-file`

180
debian/control vendored Normal file
View File

@ -0,0 +1,180 @@
Source: mariadb-10.0
Section: misc
Priority: optional
Maintainer: MariaDB Developers <maria-developers@lists.launchpad.net>
XSBC-Original-Maintainer: Maria Developers <maria-developers@lists.launchpad.net>
Uploaders: MariaDB Developers <maria-developers@lists.launchpad.net>
Build-Depends: bison,
chrpath,
debhelper,
dpatch,
gawk,
hardening-wrapper,
libjemalloc-dev (>= 3.0.0),
libncurses5-dev (>= 5.0-6),
libpam0g-dev,
libssl-dev,
libwrap0-dev (>= 7.6-8.3),
lsb-release,
perl (>= 5.6.0),
po-debconf,
procps | hurd,
psmisc,
zlib1g-dev (>= 1:1.1.3-5),
${CMAKE_DEP}libaio-dev,
${LIBREADLINE_DEV}
Standards-Version: 3.8.3
Homepage: http://mariadb.org/
Vcs-Browser: http://bazaar.launchpad.net/~maria-captains/maria/10.0/files
Vcs-Bzr: bzr://lp:maria
Package: mariadb-galera-test-10.0
Section: database
Architecture: any
Depends: mariadb-galera-server-10.0 (= ${source:Version}),
mariadb-client-10.0 (>= ${source:Version})
Suggests: patch
Conflicts: mariadb-test,
mariadb-galera-test (<< ${source:Version}),
mariadb-test-5.1,
mariadb-test-5.2,
mariadb-test-5.3,
mariadb-test-5.5,
mariadb-test-10.0,
mariadb-server-5.5,
mariadb-galera-server-5.5,
mariadb-server-10.0
Replaces: mariadb-test (<< ${source:Version}),
mariadb-galera-test (<< ${source:Version}),
mariadb-test-5.1,
mariadb-test-5.2,
mariadb-test-5.3,
mariadb-test-5.5
Description: MariaDB database regression test suite
MariaDB is a fast, stable and true multi-user, multi-threaded SQL database
server. SQL (Structured Query Language) is the most popular database query
language in the world. The main goals of MariaDB are speed, robustness and
ease of use.
.
This package includes the regression test suite.
Package: mariadb-galera-server-10.0
Architecture: any
Suggests: mailx, mariadb-galera-test, tinyca, netcat-openbsd, socat
Recommends: libhtml-template-perl
Pre-Depends: mariadb-common, adduser (>= 3.40), debconf
Depends: bsdutils,
libdbi-perl,
lsb-base (>= 3.0-10),
mariadb-client-10.0 (>= ${source:Version}),
passwd,
perl (>= 5.6),
psmisc,
${misc:Depends},
${shlibs:Depends},
libmariadbclient18 (>= ${binary:Version}),
coreutils,
findutils,
galera-3 (>=25.3),
gawk,
grep,
iproute,
lsof,
rsync,
tar
Provides: mariadb-server,
mariadb-galera-server,
mysql-server,
virtual-mysql-server,
mysql-server-core,
mysql-server-core-5.1,
mysql-server-core-5.5,
mysql-server-core-10.0
Conflicts: mariadb-galera-server (<< ${source:Version}),
mariadb-server,
mariadb-server-5.1,
mariadb-server-5.2,
mariadb-server-5.3,
mariadb-server-5.5,
mariadb-tokudb-engine-10.0,
mariadb-tokudb-engine-5.5,
mysql-server (<< ${source:Version}),
mysql-server-4.1,
mysql-server-5.0,
mysql-server-5.1,
mysql-server-5.5,
mysql-server-5.6,
mariadb-server-core-5.1,
mariadb-server-core-5.2,
mariadb-server-core-5.5,
mariadb-server-core-10.0,
mysql-server-core-5.0,
mysql-server-core-5.1,
mysql-server-core-5.5,
mysql-server-core-5.6
Replaces: libmariadbclient-dev (<< 5.5.0),
libmariadbclient16 (<< 5.3.4),
mariadb-galera-server (<< ${source:Version}),
mariadb-server,
mariadb-server-5.1,
mariadb-server-5.2,
mariadb-server-5.3,
mariadb-server-5.5,
mariadb-tokudb-engine-10.0,
mariadb-tokudb-engine-5.5,
mysql-server,
mysql-server-4.1,
mysql-server-5.0,
mysql-server-5.1,
mysql-server-5.5,
mysql-server-5.6,
mariadb-server-core-5.1,
mariadb-server-core-5.2,
mariadb-server-core-5.5,
mariadb-server-core-10.0,
mysql-server-core-5.0,
mysql-server-core-5.1,
mysql-server-core-5.5,
mysql-server-core-5.6
Description: MariaDB database server with Galera cluster binaries
MariaDB is a fast, stable and true multi-user, multi-threaded SQL database
server. SQL (Structured Query Language) is the most popular database query
language in the world. The main goals of MariaDB are speed, robustness and
ease of use.
.
This package includes the server binaries.
Package: mariadb-galera-server
Section: database
Architecture: all
Depends: mariadb-galera-server-10.0 (= ${source:Version}), ${misc:Depends}
Description: MariaDB database server with Galera cluster (metapackage depending on the latest version)
This is an empty package that depends on the current "best" version of
mariadb-galera-server (currently mariadb-galera-server-10.0), as determined by the MariaDB
maintainers. Install this package if in doubt about which MariaDB-Galera
version you need. That will install the version recommended by the
package maintainers.
.
MariaDB is a fast, stable and true multi-user, multi-threaded SQL database
server. SQL (Structured Query Language) is the most popular database query
language in the world. The main goals of MariaDB are speed, robustness and
ease of use.
Package: mariadb-client
Section: database
Architecture: all
Depends: mariadb-client-10.0 (= ${source:Version}), ${misc:Depends}
Description: MariaDB database client (metapackage depending on the latest version)
This is an empty package that depends on the current "best" version of
mariadb-client (currently mariadb-client-10.0), as determined by the MariaDB
maintainers. Install this package if in doubt about which MariaDB version
you want, as this is the one we consider to be in the best shape.
Package: mariadb-galera-test
Section: database
Architecture: all
Depends: mariadb-galera-test-10.0 (= ${source:Version})
Description: MariaDB database regression test suite (metapackage depending on the latest version)
This is an empty package that depends on the current "best" version of
mariadb-galera-test (currently mariadb-galera-test-10.0), as determined by the MariaDB
maintainers.

16
debian/copyright vendored
View File

@ -2,7 +2,7 @@
== MariaDB == == MariaDB ==
The Debian package of MySQL was first debianzed on 1997-04-12 by Christian The Debian package of MySQL was first debianzed on 1997-04-12 by Christian
Schwarz <schwarz@debian.org> and ist maintained since 1999-04-20 by Schwarz <schwarz@debian.org> and ist maintained since 1999-04-20 by
Christian Hammers <ch@debian.org>. Christian Hammers <ch@debian.org>.
The MariaDB packages were initally made by http://ourdelta.org/, and The MariaDB packages were initally made by http://ourdelta.org/, and
@ -17,22 +17,22 @@ According to the file "COPYING" all parts of this package are licenced
under the terms of the GNU GPL Version 2 of which a copy is available under the terms of the GNU GPL Version 2 of which a copy is available
in /usr/share/common-licenses. in /usr/share/common-licenses.
To allow free software with other licences than the GPL to link against the To allow free software with other licences than the GPL to link against the
shared library, special terms for "derived works" are granted in the README file of MySQL 5.5, as follows: shared library, special terms for "derived works" are granted in the README file of MySQL 5.5, as follows:
> MySQL FOSS License Exception > MySQL FOSS License Exception
> We want free and open source software applications under certain > We want free and open source software applications under certain
> licenses to be able to use specified GPL-licensed MySQL client > licenses to be able to use specified GPL-licensed MySQL client
> libraries despite the fact that not all such FOSS licenses are > libraries despite the fact that not all such FOSS licenses are
> compatible with version 2 of the GNU General Public License. > compatible with version 2 of the GNU General Public License.
> Therefore there are special exceptions to the terms and conditions > Therefore there are special exceptions to the terms and conditions
> of the GPLv2 as applied to these client libraries, which are > of the GPLv2 as applied to these client libraries, which are
> identified and described in more detail in the FOSS License > identified and described in more detail in the FOSS License
> Exception at > Exception at
> <http://www.mysql.com/about/legal/licensing/foss-exception.html>. > <http://www.mysql.com/about/legal/licensing/foss-exception.html>.
The manual had to be removed as it is not free in the sense of the The manual had to be removed as it is not free in the sense of the
Debian Free Software Guidelines (DFSG). Debian Free Software Guidelines (DFSG).
== innotop == == innotop ==

View File

@ -1,118 +0,0 @@
Source: mariadb-10.0
Section: misc
Priority: optional
Maintainer: MariaDB Developers <maria-developers@lists.launchpad.net>
XSBC-Original-Maintainer: Maria Developers <maria-developers@lists.launchpad.net>
Uploaders: MariaDB Developers <maria-developers@lists.launchpad.net>
Build-Depends: procps | hurd, debhelper, libncurses5-dev (>= 5.0-6),
perl (>= 5.6.0), libwrap0-dev (>= 7.6-8.3),
zlib1g-dev (>= 1:1.1.3-5), ${LIBREADLINE_DEV},
libssl-dev, libpam0g-dev, psmisc, po-debconf, chrpath,
dpatch, gawk, bison, lsb-release, hardening-wrapper,
${CMAKE_DEP}libaio-dev, libjemalloc-dev (>= 3.0.0)
Standards-Version: 3.8.3
Homepage: http://mariadb.org/
Vcs-Browser: http://bazaar.launchpad.net/~maria-captains/maria/10.0/files
Vcs-Bzr: bzr://lp:maria
Package: mariadb-galera-test-10.0
Section: database
Architecture: any
Depends: mariadb-galera-server-10.0 (= ${source:Version}), mariadb-client-10.0 (>= ${source:Version})
Suggests: patch
Conflicts: mariadb-test, mariadb-galera-test (<< ${source:Version}),
mariadb-test-5.1, mariadb-test-5.2, mariadb-test-5.3,
mariadb-test-5.5, mariadb-test-10.0,
mariadb-server-5.5, mariadb-galera-server-5.5,
mariadb-server-10.0
Replaces: mariadb-test (<< ${source:Version}), mariadb-galera-test (<< ${source:Version}),
mariadb-test-5.1, mariadb-test-5.2, mariadb-test-5.3,
mariadb-test-5.5
Description: MariaDB database regression test suite
MariaDB is a fast, stable and true multi-user, multi-threaded SQL database
server. SQL (Structured Query Language) is the most popular database query
language in the world. The main goals of MariaDB are speed, robustness and
ease of use.
.
This package includes the regression test suite.
Package: mariadb-galera-server-10.0
Architecture: any
Suggests: tinyca, mailx, mariadb-galera-test, netcat-openbsd, socat
Recommends: libhtml-template-perl
Pre-Depends: mariadb-common, adduser (>= 3.40), debconf
Depends: mariadb-client-10.0 (>= ${source:Version}), libdbi-perl,
perl (>= 5.6), ${shlibs:Depends}, ${misc:Depends}, psmisc,
passwd, lsb-base (>= 3.0-10), bsdutils,
libmariadbclient18 (>= ${binary:Version}), galera-3 (>=25.3),
rsync, lsof, grep, gawk, iproute, coreutils, findutils, tar
Provides: mysql-server-core, mysql-server-core-5.1, mysql-server-core-5.5,
mysql-server-core-10.0, mariadb-server, mysql-server,
virtual-mysql-server, mariadb-galera-server
Conflicts: mariadb-server, mysql-server, mariadb-galera-server (<< ${source:Version}),
mysql-server-4.1, mysql-server-5.0,
mariadb-server-5.1, mysql-server-5.1,
mariadb-server-5.2,
mariadb-server-5.3,
mariadb-server-5.5, mysql-server-5.5,
mysql-server-core-5.0,
mariadb-server-core-5.1, mysql-server-core-5.1,
mariadb-server-core-5.2,
mariadb-server-core-5.5, mysql-server-core-5.5,
mariadb-server-core-10.0,
mariadb-tokudb-engine-5.5, mariadb-tokudb-engine-10.0
Replaces: mariadb-server, mysql-server, mariadb-galera-server (<< ${source:Version}),
mysql-server-4.1, mysql-server-5.0,
mariadb-server-5.1, mysql-server-5.1,
mariadb-server-5.2,
mariadb-server-5.3,
mariadb-server-5.5, mysql-server-5.5,
libmariadbclient16 (<< 5.3.4), libmariadbclient-dev (<< 5.5.0),
mysql-server-core-5.0,
mariadb-server-core-5.1, mysql-server-core-5.1,
mariadb-server-core-5.2,
mariadb-server-core-5.5, mysql-server-core-5.5,
mariadb-server-core-10.0,
mariadb-tokudb-engine-5.5, mariadb-tokudb-engine-10.0
Description: MariaDB database server with Galera cluster binaries
MariaDB is a fast, stable and true multi-user, multi-threaded SQL database
server. SQL (Structured Query Language) is the most popular database query
language in the world. The main goals of MariaDB are speed, robustness and
ease of use.
.
This package includes the server binaries.
Package: mariadb-galera-server
Section: database
Architecture: all
Depends: mariadb-galera-server-10.0 (= ${source:Version}), ${misc:Depends}
Description: MariaDB database server with Galera cluster (metapackage depending on the latest version)
This is an empty package that depends on the current "best" version of
mariadb-galera-server (currently mariadb-galera-server-10.0), as determined by the MariaDB
maintainers. Install this package if in doubt about which MariaDB-Galera
version you need. That will install the version recommended by the
package maintainers.
.
MariaDB is a fast, stable and true multi-user, multi-threaded SQL database
server. SQL (Structured Query Language) is the most popular database query
language in the world. The main goals of MariaDB are speed, robustness and
ease of use.
Package: mariadb-client
Section: database
Architecture: all
Depends: mariadb-client-10.0 (= ${source:Version}), ${misc:Depends}
Description: MariaDB database client (metapackage depending on the latest version)
This is an empty package that depends on the current "best" version of
mariadb-client (currently mariadb-client-10.0), as determined by the MariaDB
maintainers. Install this package if in doubt about which MariaDB version
you want, as this is the one we consider to be in the best shape.
Package: mariadb-galera-test
Section: database
Architecture: all
Depends: mariadb-galera-test-10.0 (= ${source:Version})
Description: MariaDB database regression test suite (metapackage depending on the latest version)
This is an empty package that depends on the current "best" version of
mariadb-galera-test (currently mariadb-galera-test-10.0), as determined by the MariaDB
maintainers.

View File

@ -1,118 +0,0 @@
Source: mariadb-10.0
Section: misc
Priority: optional
Maintainer: MariaDB Developers <maria-developers@lists.launchpad.net>
XSBC-Original-Maintainer: Maria Developers <maria-developers@lists.launchpad.net>
Uploaders: MariaDB Developers <maria-developers@lists.launchpad.net>
Build-Depends: procps | hurd, debhelper, libncurses5-dev (>= 5.0-6),
perl (>= 5.6.0), libwrap0-dev (>= 7.6-8.3),
zlib1g-dev (>= 1:1.1.3-5), ${LIBREADLINE_DEV},
libssl-dev, libpam0g-dev, psmisc, po-debconf, chrpath,
dpatch, gawk, bison, lsb-release, hardening-wrapper,
${CMAKE_DEP}libaio-dev, libjemalloc-dev (>= 3.0.0)
Standards-Version: 3.8.2
Homepage: http://mariadb.org/
Vcs-Browser: http://bazaar.launchpad.net/~maria-captains/maria/10.0/files
Vcs-Bzr: bzr://lp:maria
Package: mariadb-galera-test-10.0
Section: database
Architecture: any
Depends: mariadb-galera-server-10.0 (= ${source:Version}), mariadb-client-10.0 (>= ${source:Version})
Suggests: patch
Conflicts: mariadb-test, mariadb-galera-test (<< ${source:Version}),
mariadb-test-5.1, mariadb-test-5.2, mariadb-test-5.3,
mariadb-test-5.5, mariadb-test-10.0,
mariadb-server-5.5, mariadb-galera-server-5.5,
mariadb-server-10.0
Replaces: mariadb-test (<< ${source:Version}), mariadb-galera-test (<< ${source:Version}),
mariadb-test-5.1, mariadb-test-5.2, mariadb-test-5.3,
mariadb-test-5.5
Description: MariaDB database regression test suite
MariaDB is a fast, stable and true multi-user, multi-threaded SQL database
server. SQL (Structured Query Language) is the most popular database query
language in the world. The main goals of MariaDB are speed, robustness and
ease of use.
.
This package includes the regression test suite.
Package: mariadb-galera-server-10.0
Architecture: any
Suggests: tinyca, mailx, mariadb-galera-test, netcat-openbsd, socat
Recommends: libhtml-template-perl
Pre-Depends: mariadb-common, adduser (>= 3.40), debconf
Depends: mariadb-client-10.0 (>= ${source:Version}), libdbi-perl,
perl (>= 5.6), ${shlibs:Depends}, ${misc:Depends}, psmisc,
passwd, lsb-base (>= 3.0-10), bsdutils,
libmariadbclient18 (>= ${binary:Version}), galera-3 (>=25.3),
rsync, lsof, grep, gawk, iproute, coreutils, findutils, tar
Provides: mysql-server-core, mysql-server-core-5.1, mysql-server-core-5.5,
mysql-server-core-10.0, mariadb-server, mysql-server,
virtual-mysql-server, mariadb-galera-server
Conflicts: mariadb-server, mysql-server, mariadb-galera-server (<< ${source:Version}),
mysql-server-4.1, mysql-server-5.0,
mariadb-server-5.1, mysql-server-5.1,
mariadb-server-5.2,
mariadb-server-5.3,
mariadb-server-5.5, mysql-server-5.5,
mysql-server-core-5.0,
mariadb-server-core-5.1, mysql-server-core-5.1,
mariadb-server-core-5.2,
mariadb-server-core-5.5, mysql-server-core-5.5,
mariadb-server-core-10.0,
mariadb-tokudb-engine-5.5, mariadb-tokudb-engine-10.0
Replaces: mariadb-server, mysql-server, mariadb-galera-server (<< ${source:Version}),
mysql-server-4.1, mysql-server-5.0,
mariadb-server-5.1, mysql-server-5.1,
mariadb-server-5.2,
mariadb-server-5.3,
mariadb-server-5.5, mysql-server-5.5,
libmariadbclient16 (<< 5.3.4), libmariadbclient-dev (<< 5.5.0),
mysql-server-core-5.0,
mariadb-server-core-5.1, mysql-server-core-5.1,
mariadb-server-core-5.2,
mariadb-server-core-5.5, mysql-server-core-5.5,
mariadb-server-core-10.0,
mariadb-tokudb-engine-5.5, mariadb-tokudb-engine-10.0
Description: MariaDB database server with Galera cluster binaries
MariaDB is a fast, stable and true multi-user, multi-threaded SQL database
server. SQL (Structured Query Language) is the most popular database query
language in the world. The main goals of MariaDB are speed, robustness and
ease of use.
.
This package includes the server binaries.
Package: mariadb-galera-server
Section: database
Architecture: all
Depends: mariadb-galera-server-10.0 (= ${source:Version}), ${misc:Depends}
Description: MariaDB database server with Galera cluster (metapackage depending on the latest version)
This is an empty package that depends on the current "best" version of
mariadb-galera-server (currently mariadb-galera-server-10.0), as determined by the MariaDB
maintainers. Install this package if in doubt about which MariaDB-Galera
version you need. That will install the version recommended by the
package maintainers.
.
MariaDB is a fast, stable and true multi-user, multi-threaded SQL database
server. SQL (Structured Query Language) is the most popular database query
language in the world. The main goals of MariaDB are speed, robustness and
ease of use.
Package: mariadb-client
Section: database
Architecture: all
Depends: mariadb-client-10.0 (= ${source:Version}), ${misc:Depends}
Description: MariaDB database client (metapackage depending on the latest version)
This is an empty package that depends on the current "best" version of
mariadb-client (currently mariadb-client-10.0), as determined by the MariaDB
maintainers. Install this package if in doubt about which MariaDB version
you want, as this is the one we consider to be in the best shape.
Package: mariadb-galera-test
Section: database
Architecture: all
Depends: mariadb-galera-test-10.0 (= ${source:Version})
Description: MariaDB database regression test suite (metapackage depending on the latest version)
This is an empty package that depends on the current "best" version of
mariadb-galera-test (currently mariadb-galera-test-10.0), as determined by the MariaDB
maintainers.

View File

@ -2,7 +2,7 @@
# flush-logs'd only once. # flush-logs'd only once.
# Else the binary logs would automatically increase by n times every day. # Else the binary logs would automatically increase by n times every day.
# - The error log is obsolete, messages go to syslog now. # - The error log is obsolete, messages go to syslog now.
/var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log { /var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mariadb-slow.log {
daily daily
rotate 7 rotate 7
missingok missingok

View File

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. Copyright (c) 2005, 2012, Oracle and/or its affiliates.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -235,7 +235,7 @@ int main(int argc, char **argv)
{ {
FILE* f; /* our input file */ FILE* f; /* our input file */
char* filename; /* our input filename. */ char* filename; /* our input filename. */
unsigned char *big_buf, *buf; unsigned char *big_buf= 0, *buf;
ulong bytes; /* bytes read count */ ulong bytes; /* bytes read count */
ulint ct; /* current page number (0 based) */ ulint ct; /* current page number (0 based) */
@ -266,14 +266,14 @@ int main(int argc, char **argv)
if (*filename == '\0') if (*filename == '\0')
{ {
fprintf(stderr, "Error; File name missing\n"); fprintf(stderr, "Error; File name missing\n");
return 1; goto error;
} }
/* stat the file to get size and page count */ /* stat the file to get size and page count */
if (stat(filename, &st)) if (stat(filename, &st))
{ {
fprintf(stderr, "Error; %s cannot be found\n", filename); fprintf(stderr, "Error; %s cannot be found\n", filename);
return 1; goto error;
} }
size= st.st_size; size= st.st_size;
@ -283,7 +283,7 @@ int main(int argc, char **argv)
{ {
fprintf(stderr, "Error; %s cannot be opened", filename); fprintf(stderr, "Error; %s cannot be opened", filename);
perror(" "); perror(" ");
return 1; goto error;
} }
big_buf = (unsigned char *)malloc(2 * UNIV_PAGE_SIZE_MAX); big_buf = (unsigned char *)malloc(2 * UNIV_PAGE_SIZE_MAX);
@ -291,7 +291,7 @@ int main(int argc, char **argv)
{ {
fprintf(stderr, "Error; failed to allocate memory\n"); fprintf(stderr, "Error; failed to allocate memory\n");
perror(""); perror("");
return 1; goto error;
} }
/* Make sure the page is aligned */ /* Make sure the page is aligned */
@ -299,10 +299,7 @@ int main(int argc, char **argv)
+ UNIV_PAGE_SIZE_MAX, UNIV_PAGE_SIZE_MAX); + UNIV_PAGE_SIZE_MAX, UNIV_PAGE_SIZE_MAX);
if (!get_page_size(f, buf, &logical_page_size, &physical_page_size)) if (!get_page_size(f, buf, &logical_page_size, &physical_page_size))
{ goto error;
free(big_buf);
return 1;
}
if (compressed) if (compressed)
{ {
@ -322,8 +319,7 @@ int main(int argc, char **argv)
if (verbose) if (verbose)
printf("Number of pages: "); printf("Number of pages: ");
printf("%lu\n", pages); printf("%lu\n", pages);
free(big_buf); goto ok;
return 0;
} }
else if (verbose) else if (verbose)
{ {
@ -349,8 +345,7 @@ int main(int argc, char **argv)
if (!fd) if (!fd)
{ {
perror("Error; Unable to obtain file descriptor number"); perror("Error; Unable to obtain file descriptor number");
free(big_buf); goto error;
return 1;
} }
offset= (off_t)start_page * (off_t)physical_page_size; offset= (off_t)start_page * (off_t)physical_page_size;
@ -358,8 +353,7 @@ int main(int argc, char **argv)
if (lseek(fd, offset, SEEK_SET) != offset) if (lseek(fd, offset, SEEK_SET) != offset)
{ {
perror("Error; Unable to seek to necessary offset"); perror("Error; Unable to seek to necessary offset");
free(big_buf); goto error;
return 1;
} }
} }
@ -370,17 +364,13 @@ int main(int argc, char **argv)
{ {
bytes= fread(buf, 1, physical_page_size, f); bytes= fread(buf, 1, physical_page_size, f);
if (!bytes && feof(f)) if (!bytes && feof(f))
{ goto ok;
free(big_buf);
return 0;
}
if (ferror(f)) if (ferror(f))
{ {
fprintf(stderr, "Error reading %lu bytes", physical_page_size); fprintf(stderr, "Error reading %lu bytes", physical_page_size);
perror(" "); perror(" ");
free(big_buf); goto error;
return 1;
} }
if (compressed) { if (compressed) {
@ -388,10 +378,7 @@ int main(int argc, char **argv)
if (!page_zip_verify_checksum(buf, physical_page_size)) { if (!page_zip_verify_checksum(buf, physical_page_size)) {
fprintf(stderr, "Fail; page %lu invalid (fails compressed page checksum).\n", ct); fprintf(stderr, "Fail; page %lu invalid (fails compressed page checksum).\n", ct);
if (!skip_corrupt) if (!skip_corrupt)
{ goto error;
free(big_buf);
return 1;
}
} }
} else { } else {
@ -404,10 +391,7 @@ int main(int argc, char **argv)
{ {
fprintf(stderr, "Fail; page %lu invalid (fails log sequence number check)\n", ct); fprintf(stderr, "Fail; page %lu invalid (fails log sequence number check)\n", ct);
if (!skip_corrupt) if (!skip_corrupt)
{ goto error;
free(big_buf);
return 1;
}
} }
/* check old method of checksumming */ /* check old method of checksumming */
@ -419,10 +403,7 @@ int main(int argc, char **argv)
{ {
fprintf(stderr, "Fail; page %lu invalid (fails old style checksum)\n", ct); fprintf(stderr, "Fail; page %lu invalid (fails old style checksum)\n", ct);
if (!skip_corrupt) if (!skip_corrupt)
{ goto error;
free(big_buf);
return 1;
}
} }
/* now check the new method */ /* now check the new method */
@ -436,18 +417,12 @@ int main(int argc, char **argv)
{ {
fprintf(stderr, "Fail; page %lu invalid (fails innodb and crc32 checksum)\n", ct); fprintf(stderr, "Fail; page %lu invalid (fails innodb and crc32 checksum)\n", ct);
if (!skip_corrupt) if (!skip_corrupt)
{ goto error;
free(big_buf);
return 1;
}
} }
} }
/* end if this was the last page we were supposed to check */ /* end if this was the last page we were supposed to check */
if (use_end_page && (ct >= end_page)) if (use_end_page && (ct >= end_page))
{ goto ok;
free(big_buf);
return 0;
}
/* do counter increase and progress printing */ /* do counter increase and progress printing */
ct++; ct++;
@ -465,6 +440,14 @@ int main(int argc, char **argv)
} }
} }
} }
ok:
free(big_buf); free(big_buf);
return 0; my_end(0);
exit(0);
error:
free(big_buf);
my_end(0);
exit(1);
} }

View File

@ -44,7 +44,7 @@ extern "C" {
typedef uint my_hash_value_type; typedef uint my_hash_value_type;
typedef uchar *(*my_hash_get_key)(const uchar *,size_t*,my_bool); typedef uchar *(*my_hash_get_key)(const uchar *,size_t*,my_bool);
typedef my_hash_value_type (*my_hash_function)(const CHARSET_INFO *, typedef my_hash_value_type (*my_hash_function)(CHARSET_INFO *,
const uchar *, size_t); const uchar *, size_t);
typedef void (*my_hash_free_key)(void *); typedef void (*my_hash_free_key)(void *);
typedef my_bool (*my_hash_walk_action)(void *,void *); typedef my_bool (*my_hash_walk_action)(void *,void *);
@ -78,7 +78,7 @@ uchar *my_hash_search(const HASH *info, const uchar *key, size_t length);
uchar *my_hash_search_using_hash_value(const HASH *info, uchar *my_hash_search_using_hash_value(const HASH *info,
my_hash_value_type hash_value, my_hash_value_type hash_value,
const uchar *key, size_t length); const uchar *key, size_t length);
my_hash_value_type my_hash_sort(const CHARSET_INFO *cs, my_hash_value_type my_hash_sort(CHARSET_INFO *cs,
const uchar *key, size_t length); const uchar *key, size_t length);
#define my_calc_hash(A, B, C) my_hash_sort((A)->charset, B, C) #define my_calc_hash(A, B, C) my_hash_sort((A)->charset, B, C)
uchar *my_hash_first(const HASH *info, const uchar *key, size_t length, uchar *my_hash_first(const HASH *info, const uchar *key, size_t length,

View File

@ -555,7 +555,11 @@ typedef int my_socket; /* File descriptor for sockets */
/* Type for fuctions that handles signals */ /* Type for fuctions that handles signals */
#define sig_handler RETSIGTYPE #define sig_handler RETSIGTYPE
C_MODE_START C_MODE_START
#ifdef HAVE_SIGHANDLER_T
#define sig_return sighandler_t
#else
typedef void (*sig_return)(void); /* Returns type from signal */ typedef void (*sig_return)(void); /* Returns type from signal */
#endif
C_MODE_END C_MODE_END
#if defined(__GNUC__) && !defined(_lint) #if defined(__GNUC__) && !defined(_lint)
typedef char pchar; /* Mixed prototypes can take char */ typedef char pchar; /* Mixed prototypes can take char */

View File

@ -86,10 +86,12 @@ typedef volatile LONG my_pthread_once_t;
#define MY_PTHREAD_ONCE_INPROGRESS 1 #define MY_PTHREAD_ONCE_INPROGRESS 1
#define MY_PTHREAD_ONCE_DONE 2 #define MY_PTHREAD_ONCE_DONE 2
#if !STRUCT_TIMESPEC_HAS_TV_SEC || !STRUCT_TIMESPEC_HAS_TV_NSEC
struct timespec { struct timespec {
time_t tv_sec; time_t tv_sec;
long tv_nsec; long tv_nsec;
}; };
#endif
int win_pthread_mutex_trylock(pthread_mutex_t *mutex); int win_pthread_mutex_trylock(pthread_mutex_t *mutex);
int pthread_create(pthread_t *, const pthread_attr_t *, pthread_handler, void *); int pthread_create(pthread_t *, const pthread_attr_t *, pthread_handler, void *);

View File

@ -259,8 +259,7 @@ extern myf my_global_flags; /* Set to MY_WME for more error messages
/* Point to current my_message() */ /* Point to current my_message() */
extern void (*my_sigtstp_cleanup)(void), extern void (*my_sigtstp_cleanup)(void),
/* Executed before jump to shell */ /* Executed before jump to shell */
(*my_sigtstp_restart)(void), (*my_sigtstp_restart)(void);
(*my_abort_hook)(int);
/* Executed when comming from shell */ /* Executed when comming from shell */
extern MYSQL_PLUGIN_IMPORT int my_umask; /* Default creation mask */ extern MYSQL_PLUGIN_IMPORT int my_umask; /* Default creation mask */
extern int my_umask_dir, extern int my_umask_dir,

View File

@ -149,7 +149,7 @@ MYSQL_SOCKET socket __attribute__ ((unused))
/** /**
MYSQL_SOCKET helper. Get socket descriptor. MYSQL_SOCKET helper. Get socket descriptor.
@param mysql_socket Instrumented socket @param mysql_socket Instrumented socket
@sa mysql_socket_setfd @sa mysql_socket_getfd
*/ */
static inline my_socket static inline my_socket
mysql_socket_getfd(MYSQL_SOCKET mysql_socket) mysql_socket_getfd(MYSQL_SOCKET mysql_socket)
@ -161,7 +161,7 @@ mysql_socket_getfd(MYSQL_SOCKET mysql_socket)
MYSQL_SOCKET helper. Set socket descriptor. MYSQL_SOCKET helper. Set socket descriptor.
@param mysql_socket Instrumented socket @param mysql_socket Instrumented socket
@param fd Socket descriptor @param fd Socket descriptor
@sa mysql_socket_getfd @sa mysql_socket_setfd
*/ */
static inline void static inline void
mysql_socket_setfd(MYSQL_SOCKET *mysql_socket, my_socket fd) mysql_socket_setfd(MYSQL_SOCKET *mysql_socket, my_socket fd)

View File

@ -1009,6 +1009,8 @@ struct PSI_statement_locker_state_v1
char m_schema_name[PSI_SCHEMA_NAME_LEN]; char m_schema_name[PSI_SCHEMA_NAME_LEN];
/** Length in bytes of @c m_schema_name. */ /** Length in bytes of @c m_schema_name. */
uint m_schema_name_length; uint m_schema_name_length;
/** Statement character set number. */
uint m_cs_number;
}; };
/** /**

View File

@ -268,6 +268,7 @@ struct PSI_statement_locker_state_v1
const struct sql_digest_storage *m_digest; const struct sql_digest_storage *m_digest;
char m_schema_name[(64 * 3)]; char m_schema_name[(64 * 3)];
uint m_schema_name_length; uint m_schema_name_length;
uint m_cs_number;
}; };
struct PSI_socket_locker_state_v1 struct PSI_socket_locker_state_v1
{ {

View File

@ -1,4 +1,4 @@
/* Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -118,7 +118,7 @@ print_arrays_for(char *set)
{ {
FILE *f; FILE *f;
sprintf(buf, "%s.conf", set); snprintf(buf, sizeof(buf), "%s.conf", set);
if ((f = fopen(buf, "r")) == NULL) { if ((f = fopen(buf, "r")) == NULL) {
fprintf(stderr, "%s: can't read conf file for charset %s\n", prog, set); fprintf(stderr, "%s: can't read conf file for charset %s\n", prog, set);

View File

@ -90,7 +90,7 @@ const char *client_errors[]=
"" ""
}; };
const char** get_client_errmsgs() const char** get_client_errmsgs(void)
{ {
return client_errors; return client_errors;
} }

View File

@ -1275,7 +1275,7 @@ to point the slave to the correct master server host\&. Add any such parameters
.\" max-allowed-packet option: mysqldump .\" max-allowed-packet option: mysqldump
\fB\-\-max\-allowed\-packet=\fR\fB\fIlength\fR\fR \fB\-\-max\-allowed\-packet=\fR\fB\fIlength\fR\fR
.sp .sp
Sets the maximum packet length to send to or recieve from server\&. Sets the maximum packet length to send to or receive from server\&.
.RE .RE
.sp .sp
.RS 4 .RS 4

View File

@ -52,7 +52,7 @@ eval SELECT 'hello' INTO OUTFILE 'fake_file.$prefix';
# Use '/' instead of '\' in the error message. On windows platform, dir is # Use '/' instead of '\' in the error message. On windows platform, dir is
# formed with '\'. # formed with '\'.
--replace_regex /\\testing_1\\*/\/testing_1\// /66/39/ --replace_regex /\\testing_1\\*/\/testing_1\// /66/39/ /17/39/ /File exists/Directory not empty/
--error 1010 --error 1010
DROP DATABASE testing_1; DROP DATABASE testing_1;
let $wait_binlog_event= DROP TABLE IF EXIST; let $wait_binlog_event= DROP TABLE IF EXIST;

View File

@ -62,24 +62,3 @@ UPDATE t1 SET c1= 0;
DROP TABLE t1; DROP TABLE t1;
-- sync_slave_with_master -- sync_slave_with_master
#
# BUG#11766865: 60091: RBR + NO PK + UPDATE NULL VALUE --> SLAVE BREAK WITH ERROR HA_ERR_END_OF_
#
--connection master
--source include/rpl_reset.inc
--connection master
--eval CREATE TABLE t1 (c1 int(11) NOT NULL, c2 int(11) NOT NULL, c3 int(11) DEFAULT '-1') ENGINE=$engine DEFAULT CHARSET=latin1
INSERT INTO t1 VALUES (1,2,NULL);
UPDATE t1 SET c1=1, c2=2, c3=-1 WHERE c1=1 AND c2=2 AND ISNULL(c3);
--sync_slave_with_master
--let $diff_tables=master:test.t1, slave:test.t1
--source include/diff_tables.inc
--connection master
DROP TABLE t1;
--sync_slave_with_master

View File

@ -440,7 +440,7 @@ INSERT INTO t5 VALUES (2, repeat(_utf8'a', 255), 2);
connection slave; connection slave;
# 1677 = ER_SLAVE_CONVERSION_FAILED # 1677 = ER_SLAVE_CONVERSION_FAILED
--let $slave_sql_errno= 1677 --let $slave_sql_errno= 1677
--let $show_slave_sql_error= 1 --let $show_slave_sql_error= 1
--source include/wait_for_slave_sql_error.inc --source include/wait_for_slave_sql_error.inc
@ -453,7 +453,7 @@ INSERT INTO t6 VALUES (2, repeat(_utf8'a', 255), 2);
connection slave; connection slave;
# 1677 = ER_SLAVE_CONVERSION_FAILED # 1677 = ER_SLAVE_CONVERSION_FAILED
--let $slave_sql_errno= 1677 --let $slave_sql_errno= 1677
--let $show_slave_sql_error= 1 --let $show_slave_sql_error= 1
--source include/wait_for_slave_sql_error.inc --source include/wait_for_slave_sql_error.inc

View File

@ -15,7 +15,8 @@ eval CREATE TABLE t1 (name varchar(64), age smallint(3))ENGINE=$engine_type;
INSERT INTO t1 SET name='Andy', age=31; INSERT INTO t1 SET name='Andy', age=31;
INSERT INTO t1 SET name='Jacob', age=2; INSERT INTO t1 SET name='Jacob', age=2;
INSERT INTO t1 SET name='Caleb', age=1; INSERT INTO t1 SET name='Caleb', age=1;
ALTER TABLE t1 ADD id int(8) ZEROFILL AUTO_INCREMENT PRIMARY KEY; ALTER TABLE t1 ADD id int(8) ZEROFILL AUTO_INCREMENT PRIMARY KEY,
ALGORITHM=COPY;
SELECT * FROM t1 ORDER BY id; SELECT * FROM t1 ORDER BY id;
sync_slave_with_master; sync_slave_with_master;
SELECT * FROM t1 ORDER BY id; SELECT * FROM t1 ORDER BY id;

View File

@ -28,7 +28,7 @@
if ($_param_value != $slave_param_value) { if ($_param_value != $slave_param_value) {
--source include/show_rpl_debug_info.inc --source include/show_rpl_debug_info.inc
--echo Wrong value for $slave_param. Expected '$slave_param_value', got '$_param_value' --echo Wrong value for $slave_param. Expected '$slave_param_value', got '$_param_value'
--die Wrong value for slave parameter --die Wrong value for slave parameter $slave_param
} }

View File

@ -31,7 +31,6 @@ debug-no-sync
# Retry bind as this may fail on busy server # Retry bind as this may fail on busy server
port-open-timeout=10 port-open-timeout=10
bind-address=127.0.0.1
log-bin-trust-function-creators=1 log-bin-trust-function-creators=1
key_buffer_size= 1M key_buffer_size= 1M
@ -40,6 +39,9 @@ max_heap_table_size= 1M
loose-aria-pagecache-buffer-size=8M loose-aria-pagecache-buffer-size=8M
loose-feedback-user-info= mysql-test loose-feedback-user-info= mysql-test
loose-feedback-debug-startup-interval=20
loose-feedback-debug-first-interval=60
loose-feedback-debug-interval=60
loose-innodb_data_file_path= ibdata1:12M:autoextend loose-innodb_data_file_path= ibdata1:12M:autoextend
loose-innodb_buffer_pool_size= 8M loose-innodb_buffer_pool_size= 8M

View File

@ -10,7 +10,8 @@ if ($binlog_file)
{ {
--let $_in_binlog_file=in '$binlog_file' --let $_in_binlog_file=in '$binlog_file'
} }
--replace_result $_binlog_start <binlog_start> $MYSQLTEST_VARDIR MYSQLTEST_VARDIR --let $_from_binlog_start=from $_binlog_start
--replace_result "$_from_binlog_start" "from <binlog_start>" $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
--replace_column 2 # 5 # --replace_column 2 # 5 #
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /file_id=[0-9]+/file_id=#/ /GTID [0-9]+-[0-9]+-[0-9]+/GTID #-#-#/ --replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /file_id=[0-9]+/file_id=#/ /GTID [0-9]+-[0-9]+-[0-9]+/GTID #-#-#/
--eval show binlog events $_in_binlog_file from $_binlog_start --eval show binlog events $_in_binlog_file from $_binlog_start

View File

@ -169,6 +169,13 @@ sub fix_log {
return "$dir/mysqld.log"; return "$dir/mysqld.log";
} }
sub fix_bind_address {
if (IS_WINDOWS) {
return "*";
} else {
return "127.0.0.1";
}
}
sub fix_log_slow_queries { sub fix_log_slow_queries {
my ($self, $config, $group_name, $group)= @_; my ($self, $config, $group_name, $group)= @_;
my $dir= dirname($group->value('datadir')); my $dir= dirname($group->value('datadir'));
@ -251,6 +258,7 @@ my @mysqld_rules=
{ 'ssl-ca' => \&fix_ssl_ca }, { 'ssl-ca' => \&fix_ssl_ca },
{ 'ssl-cert' => \&fix_ssl_server_cert }, { 'ssl-cert' => \&fix_ssl_server_cert },
{ 'ssl-key' => \&fix_ssl_server_key }, { 'ssl-key' => \&fix_ssl_server_key },
{ 'bind-address' => \&fix_bind_address },
); );
if (IS_WINDOWS) if (IS_WINDOWS)
@ -325,6 +333,7 @@ my @cluster_config_rules=
# #
my @client_rules= my @client_rules=
( (
{ 'character-sets-dir' => \&fix_charset_dir },
); );
@ -347,7 +356,6 @@ my @mysqltest_rules=
# #
my @mysqlbinlog_rules= my @mysqlbinlog_rules=
( (
{ 'character-sets-dir' => \&fix_charset_dir },
); );

View File

@ -842,7 +842,7 @@ sub run_test_server ($$$) {
redo; redo;
} }
# Limit number of parallell NDB tests # Limit number of parallel NDB tests
if ($t->{ndb_test} and $num_ndb_tests >= $max_ndb){ if ($t->{ndb_test} and $num_ndb_tests >= $max_ndb){
#mtr_report("Skipping, num ndb is already at max, $num_ndb_tests"); #mtr_report("Skipping, num ndb is already at max, $num_ndb_tests");
next; next;
@ -6417,10 +6417,10 @@ Options to control what engine/variation to run:
non-blocking-api Use the non-blocking client API non-blocking-api Use the non-blocking client API
compress Use the compressed protocol between client and server compress Use the compressed protocol between client and server
ssl Use ssl protocol between client and server ssl Use ssl protocol between client and server
skip-ssl Dont start server with support for ssl connections skip-ssl Don't start server with support for ssl connections
vs-config Visual Studio configuration used to create executables vs-config Visual Studio configuration used to create executables
(default: MTR_VS_CONFIG environment variable) (default: MTR_VS_CONFIG environment variable)
parallel=# How many parallell test should be run parallel=# How many parallel test should be run
defaults-file=<config template> Use fixed config template for all defaults-file=<config template> Use fixed config template for all
tests tests
defaults-extra-file=<config template> Extra config template to add to defaults-extra-file=<config template> Extra config template to add to
@ -6551,7 +6551,7 @@ Options for debugging the product
up disks for heavily crashing server). Defaults to up disks for heavily crashing server). Defaults to
$opt_max_save_datadir, set to 0 for no limit. Set $opt_max_save_datadir, set to 0 for no limit. Set
it's default with MTR_MAX_SAVE_DATADIR it's default with MTR_MAX_SAVE_DATADIR
max-test-fail Limit the number of test failurs before aborting max-test-fail Limit the number of test failures before aborting
the current test run. Defaults to the current test run. Defaults to
$opt_max_test_fail, set to 0 for no limit. Set $opt_max_test_fail, set to 0 for no limit. Set
it's default with MTR_MAX_TEST_FAIL it's default with MTR_MAX_TEST_FAIL
@ -6598,7 +6598,7 @@ Misc options
--mysqld (if any) --mysqld (if any)
wait-all If --start or --start-dirty option is used, wait for all wait-all If --start or --start-dirty option is used, wait for all
servers to exit before finishing the process servers to exit before finishing the process
fast Run as fast as possible, dont't wait for servers fast Run as fast as possible, don't wait for servers
to shutdown etc. to shutdown etc.
force-restart Always restart servers between tests force-restart Always restart servers between tests
parallel=N Run tests in N parallel threads (default 1) parallel=N Run tests in N parallel threads (default 1)
@ -6633,7 +6633,7 @@ Misc options
actions. Disable facility with NUM=0. actions. Disable facility with NUM=0.
gcov Collect coverage information after the test. gcov Collect coverage information after the test.
The result is a gcov file per source and header file. The result is a gcov file per source and header file.
gcov-src-dir=subdir Colllect coverage only within the given subdirectory. gcov-src-dir=subdir Collect coverage only within the given subdirectory.
For example, if you're only developing the SQL layer, For example, if you're only developing the SQL layer,
it makes sense to use --gcov-src-dir=sql it makes sense to use --gcov-src-dir=sql
gprof Collect profiling information using gprof. gprof Collect profiling information using gprof.

View File

@ -2656,5 +2656,11 @@ t1 CREATE TABLE `t1` (
`c` char(32) AS (convert(cast(n as char), char)) PERSISTENT `c` char(32) AS (convert(cast(n as char), char)) PERSISTENT
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1; drop table t1;
set @@session.collation_server=filename;
create table t1(a enum('',''));
Warnings:
Note 1291 Column 'a' has duplicated value '' in ENUM
drop table t1;
set @@session.collation_server=default;
create table t1; create table t1;
ERROR 42000: A table must have at least 1 column ERROR 42000: A table must have at least 1 column

View File

@ -11,3 +11,6 @@ create table com1 (a int);
drop table com1; drop table com1;
create table `clock$` (a int); create table `clock$` (a int);
drop table `clock$`; drop table `clock$`;
select convert(convert(',' using filename) using binary);
convert(convert(',' using filename) using binary)
@002c

View File

@ -6055,6 +6055,33 @@ SELECT (SELECT CONCAT(a),1 FROM t1) <=> (SELECT CONCAT(a),1 FROM t2);
ERROR 21000: Subquery returns more than 1 row ERROR 21000: Subquery returns more than 1 row
DROP TABLE t1, t2; DROP TABLE t1, t2;
# #
# MDEV-8630 Datetime value dropped in "INSERT ... SELECT ... ON DUPLICATE KEY"
#
SET NAMES utf8;
CREATE TABLE t1 (id2 int, ts timestamp);
INSERT INTO t1 VALUES (1,'2012-06-11 15:17:34'),(2,'2012-06-11 15:18:24');
CREATE TABLE t2 AS SELECT
COALESCE(ts, 0) AS c0,
GREATEST(COALESCE(ts, 0), COALESCE(ts, 0)) AS c1,
GREATEST(CASE WHEN 1 THEN ts ELSE 0 END, CASE WHEN 1 THEN ts ELSE 0 END) AS c2,
GREATEST(IFNULL(ts,0), IFNULL(ts,0)) AS c3,
GREATEST(IF(1,ts,0), IF(1,ts,0)) AS c4
FROM t1;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`c0` varchar(19) CHARACTER SET utf8 NOT NULL DEFAULT '',
`c1` varchar(19) CHARACTER SET utf8 NOT NULL DEFAULT '',
`c2` varchar(19) CHARACTER SET utf8 NOT NULL DEFAULT '',
`c3` varchar(19) CHARACTER SET utf8 NOT NULL DEFAULT '',
`c4` varchar(19) CHARACTER SET utf8 NOT NULL DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
c0 c1 c2 c3 c4
2012-06-11 15:17:34 2012-06-11 15:17:34 2012-06-11 15:17:34 2012-06-11 15:17:34 2012-06-11 15:17:34
2012-06-11 15:18:24 2012-06-11 15:18:24 2012-06-11 15:18:24 2012-06-11 15:18:24 2012-06-11 15:18:24
DROP TABLE t2, t1;
#
# End of 5.5 tests # End of 5.5 tests
# #
# #

View File

@ -6,16 +6,16 @@ hex(COLUMN_CREATE(1, NULL AS char character set utf8))
000000 000000
select hex(COLUMN_CREATE(1, "afaf" AS char character set utf8)); select hex(COLUMN_CREATE(1, "afaf" AS char character set utf8));
hex(COLUMN_CREATE(1, "afaf" AS char character set utf8)) hex(COLUMN_CREATE(1, "afaf" AS char character set utf8))
0001000100030861666166 0001000100032161666166
select hex(COLUMN_CREATE(1, 1212 AS char character set utf8)); select hex(COLUMN_CREATE(1, 1212 AS char character set utf8));
hex(COLUMN_CREATE(1, 1212 AS char character set utf8)) hex(COLUMN_CREATE(1, 1212 AS char character set utf8))
0001000100030831323132 0001000100032131323132
select hex(COLUMN_CREATE(1, 12.12 AS char character set utf8)); select hex(COLUMN_CREATE(1, 12.12 AS char character set utf8));
hex(COLUMN_CREATE(1, 12.12 AS char character set utf8)) hex(COLUMN_CREATE(1, 12.12 AS char character set utf8))
0001000100030831322E3132 0001000100032131322E3132
select hex(COLUMN_CREATE(1, 99999999999999999999999999999 AS char character set utf8)); select hex(COLUMN_CREATE(1, 99999999999999999999999999999 AS char character set utf8));
hex(COLUMN_CREATE(1, 99999999999999999999999999999 AS char character set utf8)) hex(COLUMN_CREATE(1, 99999999999999999999999999999 AS char character set utf8))
000100010003083939393939393939393939393939393939393939393939393939393939 000100010003213939393939393939393939393939393939393939393939393939393939
select hex(COLUMN_CREATE(1, NULL AS unsigned int)); select hex(COLUMN_CREATE(1, NULL AS unsigned int));
hex(COLUMN_CREATE(1, NULL AS unsigned int)) hex(COLUMN_CREATE(1, NULL AS unsigned int))
000000 000000
@ -144,7 +144,7 @@ hex(COLUMN_CREATE(1, "afaf" AS char character set utf8,
6, "2011-04-05" AS date, 6, "2011-04-05" AS date,
7, "- 0:45:49.000001" AS time, 7, "- 0:45:49.000001" AS time,
8, "2011-04-05 0:45:49.000001" AS datetime)) 8, "2011-04-05 0:45:49.000001" AS datetime))
01080001000300020029000300380004004A0005008C000600AE000700C7000800F5000861666166BC0478093D0AD7A3703D284002028C0C85B60F010010B7000485B60F010010B70000 01080001000300020029000300380004004A0005008C000600AE000700C7000800F5002161666166BC0478093D0AD7A3703D284002028C0C85B60F010010B7000485B60F010010B70000
explain extended explain extended
select hex(COLUMN_CREATE(1, "afaf" AS char character set utf8, select hex(COLUMN_CREATE(1, "afaf" AS char character set utf8,
2, 1212 AS unsigned int, 2, 1212 AS unsigned int,
@ -1693,10 +1693,10 @@ ERROR 22007: Illegal value used as argument of dynamic column function
# #
select column_json(column_create("int", -1212 as int, "uint", 12334 as unsigned int, "decimal", "23.344" as decimal, "double", 1.23444e50 as double, "string", 'gdgd\\dhdjh"dhdhd' as char, "time", "0:45:49.000001" AS time, "datetime", "2011-04-05 0:45:49.000001" AS datetime, "date", "2011-04-05" AS date)); select column_json(column_create("int", -1212 as int, "uint", 12334 as unsigned int, "decimal", "23.344" as decimal, "double", 1.23444e50 as double, "string", 'gdgd\\dhdjh"dhdhd' as char, "time", "0:45:49.000001" AS time, "datetime", "2011-04-05 0:45:49.000001" AS datetime, "date", "2011-04-05" AS date));
column_json(column_create("int", -1212 as int, "uint", 12334 as unsigned int, "decimal", "23.344" as decimal, "double", 1.23444e50 as double, "string", 'gdgd\\dhdjh"dhdhd' as char, "time", "0:45:49.000001" AS time, "datetime", "2011-04-05 0:45:49.000001" column_json(column_create("int", -1212 as int, "uint", 12334 as unsigned int, "decimal", "23.344" as decimal, "double", 1.23444e50 as double, "string", 'gdgd\\dhdjh"dhdhd' as char, "time", "0:45:49.000001" AS time, "datetime", "2011-04-05 0:45:49.000001"
{"int":-1212,"date":"2011-04-05","time":"00:45:49.000001","uint":12334,"double":"1.2e50","string":"gdgd\\dhdjh\"dhdhd","decimal":23.344,"datetime":"2011-04-05 00:45:49.000001"} {"int":-1212,"date":"2011-04-05","time":"00:45:49.000001","uint":12334,"double":1.23444e50,"string":"gdgd\\dhdjh\"dhdhd","decimal":23.344,"datetime":"2011-04-05 00:45:49.000001"}
select column_json(column_create(1, -1212 as int, 2, 12334 as unsigned int, 3, "23.344" as decimal, 4, 1.23444e50 as double, 5, 'gdgd\\dhdjh"dhdhd' as char, 6, "0:45:49.000001" AS time, 7, "2011-04-05 0:45:49.000001" AS datetime, 8, "2011-04-05" AS date)); select column_json(column_create(1, -1212 as int, 2, 12334 as unsigned int, 3, "23.344" as decimal, 4, 1.23444e50 as double, 5, 'gdgd\\dhdjh"dhdhd' as char, 6, "0:45:49.000001" AS time, 7, "2011-04-05 0:45:49.000001" AS datetime, 8, "2011-04-05" AS date));
column_json(column_create(1, -1212 as int, 2, 12334 as unsigned int, 3, "23.344" as decimal, 4, 1.23444e50 as double, 5, 'gdgd\\dhdjh"dhdhd' as char, 6, "0:45:49.000001" AS time, 7, "2011-04-05 0:45:49.000001" AS datetime, 8, "2011-04-05" AS date)) column_json(column_create(1, -1212 as int, 2, 12334 as unsigned int, 3, "23.344" as decimal, 4, 1.23444e50 as double, 5, 'gdgd\\dhdjh"dhdhd' as char, 6, "0:45:49.000001" AS time, 7, "2011-04-05 0:45:49.000001" AS datetime, 8, "2011-04-05" AS date))
{"1":-1212,"2":12334,"3":23.344,"4":"1.2e50","5":"gdgd\\dhdjh\"dhdhd","6":"00:45:49.000001","7":"2011-04-05 00:45:49.000001","8":"2011-04-05"} {"1":-1212,"2":12334,"3":23.344,"4":1.23444e50,"5":"gdgd\\dhdjh\"dhdhd","6":"00:45:49.000001","7":"2011-04-05 00:45:49.000001","8":"2011-04-05"}
# #
# CHECK test # CHECK test
# #
@ -1820,5 +1820,58 @@ SELECT COLUMN_JSON(COLUMN_CREATE('a',1,'b','1'));
COLUMN_JSON(COLUMN_CREATE('a',1,'b','1')) COLUMN_JSON(COLUMN_CREATE('a',1,'b','1'))
{"a":1,"b":"1"} {"a":1,"b":"1"}
# #
# MDEV-8401: COLUMN_CREATE(name, value as DOUBLE) results in string
#
SELECT COLUMN_JSON(
COLUMN_CREATE(
'one', 123.456,
'two', 123.456 as DOUBLE
)
);
COLUMN_JSON(
COLUMN_CREATE(
'one', 123.456,
'two', 123.456 as DOUBLE
)
)
{"one":123.456,"two":123.456}
#
# MDEV-8521: Drastic loss of precision in COLUMN_JSON() on DOUBLEs
#
select column_get(column_create('float', 1.23456789012345E+100 as double), 'float' as double);
column_get(column_create('float', 1.23456789012345E+100 as double), 'float' as double)
1.23456789012345e100
select column_json(column_create('float', 1.23456789012345E+100 as double));
column_json(column_create('float', 1.23456789012345E+100 as double))
{"float":1.23456789012345e100}
select column_json(column_create('float', 1.23456789012345E+10 as double));
column_json(column_create('float', 1.23456789012345E+10 as double))
{"float":12345678901.2345}
#
# MDEV-9147: Character set is ignored in Dynamic Column for saved string
#
SET NAMES utf8;
SELECT COLUMN_GET(COLUMN_CREATE(1, 0xC2A2 AS CHAR CHARACTER SET latin1), 1 AS CHAR CHARACTER SET utf8) AS a;
a
¢
SELECT COLUMN_GET(COLUMN_CREATE(1, 0xC2A2 AS CHAR CHARACTER SET utf8), 1 AS CHAR CHARACTER SET utf8) AS a;
a
¢
#
# MDEV-9167: COLUMN_CHECK fails on valid decimal data
#
SELECT COLUMN_CHECK(COLUMN_CREATE('a',0 AS DECIMAL,'b',1 AS DECIMAL));
COLUMN_CHECK(COLUMN_CREATE('a',0 AS DECIMAL,'b',1 AS DECIMAL))
1
SELECT COLUMN_CHECK(COLUMN_CREATE('a',1 AS DECIMAL,'b',1 AS DECIMAL));
COLUMN_CHECK(COLUMN_CREATE('a',1 AS DECIMAL,'b',1 AS DECIMAL))
1
SELECT COLUMN_JSON(COLUMN_CREATE('a',0 AS DECIMAL,'b',1 AS DECIMAL));
COLUMN_JSON(COLUMN_CREATE('a',0 AS DECIMAL,'b',1 AS DECIMAL))
{"a":0,"b":1}
SELECT COLUMN_JSON(COLUMN_CREATE('a',1 AS DECIMAL,'b',1 AS DECIMAL));
COLUMN_JSON(COLUMN_CREATE('a',1 AS DECIMAL,'b',1 AS DECIMAL))
{"a":1,"b":1}
#
# end of 10.0 tests # end of 10.0 tests
# #

View File

@ -114,8 +114,7 @@ create table t_event3 (a int, b float);
drop event if exists event3; drop event if exists event3;
Warnings: Warnings:
Note 1305 Event event3 does not exist Note 1305 Event event3 does not exist
create event event3 on schedule every 50 + 10 minute starts date_add("20100101", interval 5 minute) ends date_add("20251010", interval 5 day) create event event3 on schedule every 50 + 10 minute starts date_add(curdate(), interval 5 minute) ends date_add(curdate(), interval 5 day) comment "portokala_comment" DO insert into t_event3 values (unix_timestamp(), rand());
comment "portokala_comment" DO insert into t_event3 values (unix_timestamp(), rand());
select count(*) from t_event3; select count(*) from t_event3;
count(*) count(*)
0 0

View File

@ -393,3 +393,17 @@ Warnings:
Note 1003 select NULL AS `a` from (select NULL AS `a` from `test`.`t1` where 0) `t` Note 1003 select NULL AS `a` from (select NULL AS `a` from `test`.`t1` where 0) `t`
set optimizer_switch=@tmp_optimizer_switch; set optimizer_switch=@tmp_optimizer_switch;
DROP TABLE t1,t2; DROP TABLE t1,t2;
#
# MDEV-7215: EXPLAIN REPLACE produces an error:
# Column count doesn't match value count
#
create table t1 (a int);
insert into t1 values (1);
create table t2 (b int, c int);
replace into t2 select 100, (select a from t1);
explain replace into t2 select 100, (select a from t1);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL No tables used
2 SUBQUERY t1 system NULL NULL NULL NULL 1
drop table t1, t2;
# End of 10.1 tests

View File

@ -551,7 +551,7 @@ MATCH(a) AGAINST('aaa1* aaa14 aaa15 aaa16' IN BOOLEAN MODE)
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1(a TEXT); CREATE TABLE t1(a TEXT);
SELECT GROUP_CONCAT(a) AS st FROM t1 HAVING MATCH(st) AGAINST('test' IN BOOLEAN MODE); SELECT GROUP_CONCAT(a) AS st FROM t1 HAVING MATCH(st) AGAINST('test' IN BOOLEAN MODE);
ERROR HY000: Incorrect arguments to AGAINST ERROR HY000: Incorrect arguments to MATCH
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1(a VARCHAR(64), FULLTEXT(a)); CREATE TABLE t1(a VARCHAR(64), FULLTEXT(a));
INSERT INTO t1 VALUES('awrd bwrd cwrd'),('awrd bwrd cwrd'),('awrd bwrd cwrd'); INSERT INTO t1 VALUES('awrd bwrd cwrd'),('awrd bwrd cwrd'),('awrd bwrd cwrd');

View File

@ -63,3 +63,8 @@ CREATE TRIGGER t1_bi BEFORE INSERT ON t1 FOR EACH ROW SET new.a= 1;
RENAME TABLE t1 TO T1; RENAME TABLE t1 TO T1;
ALTER TABLE T1 RENAME t1; ALTER TABLE T1 RENAME t1;
DROP TABLE t1; DROP TABLE t1;
create table t1 (a int);
create trigger t1_bi before insert on t1 for each row set new.a= 1;
show triggers like '%T1%';
Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation
drop table t1;

View File

@ -102,7 +102,7 @@ ERROR: Missing --plugin_dir option.
# Show the help. # Show the help.
# #
mysql_plugin Ver V.V.VV Distrib XX.XX.XX mysql_plugin Ver V.V.VV Distrib XX.XX.XX
Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
Enable or disable plugins. Enable or disable plugins.

View File

@ -45,7 +45,7 @@ Phase 6/6: Running 'FLUSH PRIVILEGES'
OK OK
Run it again - should say already completed Run it again - should say already completed
This installation of MySQL is already upgraded to VERSION, use --force if you still need to run mysql_upgrade This installation of MySQL is already upgraded to VERSION, use --force if you still need to run mysql_upgrade
Force should run it regardless of wether it's been run before Force should run it regardless of whether it has been run before
Phase 1/6: Checking and upgrading mysql database Phase 1/6: Checking and upgrading mysql database
Processing databases Processing databases
mysql mysql
@ -393,6 +393,13 @@ test
Phase 6/6: Running 'FLUSH PRIVILEGES' Phase 6/6: Running 'FLUSH PRIVILEGES'
OK OK
# #
# Bug #21489398: MYSQL_UPGRADE: FATAL ERROR: UPGRADE FAILED - IMPROVE ERROR
#
Run mysql_upgrade with unauthorized access
Version check failed. Got the following error when calling the 'mysql' command line client
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
FATAL ERROR: Upgrade failed
#
# MDEV-4332 Increase username length from 16 characters # MDEV-4332 Increase username length from 16 characters
# MDEV-6068, MDEV-6178 mysql_upgrade breaks databases with long user names # MDEV-6068, MDEV-6178 mysql_upgrade breaks databases with long user names
# #

View File

@ -5317,3 +5317,29 @@ Usage: mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR mysqldump [OPTIONS] --all-databases [OPTIONS] OR mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help For more options, use mysqldump --help
#
# MDEV-9001 - [PATCH] Fix DB name quoting in mysqldump --routine
#
CREATE DATABASE `a\"'``b`;
USE `a\"'``b`;
CREATE PROCEDURE p1() BEGIN END;
ALTER DATABASE `a\"'``b` COLLATE utf8_general_ci;
ALTER DATABASE `a\"'``b` CHARACTER SET latin1 COLLATE latin1_swedish_ci ;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
/*!50003 SET character_set_client = utf8 */ ;
/*!50003 SET character_set_results = utf8 */ ;
/*!50003 SET collation_connection = utf8_general_ci */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = '' */ ;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`()
BEGIN END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
/*!50003 SET character_set_client = @saved_cs_client */ ;
/*!50003 SET character_set_results = @saved_cs_results */ ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
ALTER DATABASE `a\"'``b` CHARACTER SET utf8 COLLATE utf8_general_ci ;
DROP DATABASE `a\"'``b`;

View File

@ -2100,6 +2100,19 @@ count(*)
40960 40960
drop table t1; drop table t1;
set names default; set names default;
create table t2 (a int, b int, c int, d int, key x(a, b));
insert into t2 values (2, 2, 2, 2), (3, 3, 3, 3), (4, 4, 4, 4), (5, 5, 5, 5),
(6, 6, 6, 6), (7, 7, 7, 7), (8, 8, 8, 8), (9, 9, 9, 9);
insert into t2 select * from t2;
insert into t2 values (0, 0, 0, 0), (1, 1, 1, 1);
analyze table t2;
Table Op Msg_type Msg_text
test.t2 analyze status OK
select a, b from t2 where (a, b) in ((0, 0), (1, 1));
a b
0 0
1 1
drop table t2;
# #
# BUG#13731380: RANGE OPTIMIZER CALLS RECORDS_IN_RANGE() FOR OPEN RANGE # BUG#13731380: RANGE OPTIMIZER CALLS RECORDS_IN_RANGE() FOR OPEN RANGE
# #

View File

@ -2102,6 +2102,19 @@ count(*)
40960 40960
drop table t1; drop table t1;
set names default; set names default;
create table t2 (a int, b int, c int, d int, key x(a, b));
insert into t2 values (2, 2, 2, 2), (3, 3, 3, 3), (4, 4, 4, 4), (5, 5, 5, 5),
(6, 6, 6, 6), (7, 7, 7, 7), (8, 8, 8, 8), (9, 9, 9, 9);
insert into t2 select * from t2;
insert into t2 values (0, 0, 0, 0), (1, 1, 1, 1);
analyze table t2;
Table Op Msg_type Msg_text
test.t2 analyze status OK
select a, b from t2 where (a, b) in ((0, 0), (1, 1));
a b
0 0
1 1
drop table t2;
# #
# BUG#13731380: RANGE OPTIMIZER CALLS RECORDS_IN_RANGE() FOR OPEN RANGE # BUG#13731380: RANGE OPTIMIZER CALLS RECORDS_IN_RANGE() FOR OPEN RANGE
# #

View File

@ -0,0 +1,80 @@
create table test_table (
column_number_1 enum('1','2') not null,
column_number_2 enum('1','2','3','4','5','6','7','8','9','10','11','12') not null,
column_number_3 varchar(10) not null,
column_number_4 varchar(10) not null,
column_number_5 enum(
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa01',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa02',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa03',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa04',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa05',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa06',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa07',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa08',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa09',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa10',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa11',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa12',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa13',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa14',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa15',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa16',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa17',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa18',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa19',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa20',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa21',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa22',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa23',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa24',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa25',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa26',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa27',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa28',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa29',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa30',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa31',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa32',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa33',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa34',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa35',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa36',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa37',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa38',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa39',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa40',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa41',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa42',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa43',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa44',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa45',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa46',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa47',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa48',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa49',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa50',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa51',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa52'
) not null,
column_number_6 enum('1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31','32','33','34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49','50','51','52','53','54','55','56','57','58','59','60','61','62','63','64','65','66','67','68','69','70','71','72','73','74','75','76','77','78','79','80','81','82','83','84','85','86','87','88','89','90','91','92','93','94','95','96','97','98','99','100','101','102','103','104','105','106','107','108','109','110','111','112','113','114','115','116','117','118','119','120','121','122','123','124','125','126','127','128','129','130','131') not null,
column_number_7 enum('1','2','3','4','5','6','7') not null,
column_number_8 enum('8') not null,
column_number_9 enum('9') not null,
column_number_10 varchar(10) not null,
column_number_11 enum('1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31','32','33','34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49') not null
) default charset=utf8mb4;
show columns from test_table;
Field Type Null Key Default Extra
column_number_1 enum('1','2') NO NULL
column_number_2 enum('1','2','3','4','5','6','7','8','9','10','11','12') NO NULL
column_number_3 varchar(10) NO NULL
column_number_4 varchar(10) NO NULL
column_number_5 enum('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa01','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa02','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa03','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa04','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa05','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa06','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa07','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa08','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa09','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa10','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa11','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa12','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa13','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa14','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa15','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa16','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa17','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa18','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa19','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa20','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa21','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa22','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa23','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa24','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa25','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa26','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa27','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa28','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa29','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa30','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa31','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa32','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa33','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa34','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa35','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa36','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa37','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa38','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa39','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa40','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa41','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa42','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa43','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa44','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa45','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa46','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa47','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa48','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa49','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa50','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa51','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa52') NO NULL
column_number_6 enum('1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31','32','33','34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49','50','51','52','53','54','55','56','57','58','59','60','61','62','63','64','65','66','67','68','69','70','71','72','73','74','75','76','77','78','79','80','81','82','83','84','85','86','87','88','89','90','91','92','93','94','95','96','97','98','99','100','101','102','103','104','105','106','107','108','109','110','111','112','113','114','115','116','117','118','119','120','121','122','123','124','125','126','127','128','129','130','131') NO NULL
column_number_7 enum('1','2','3','4','5','6','7') NO NULL
column_number_8 enum('8') NO NULL
column_number_9 enum('9') NO NULL
column_number_10 varchar(10) NO NULL
column_number_11 enum('1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31','32','33','34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49') NO NULL
drop table test_table;

View File

@ -421,4 +421,99 @@ id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1 Using index 1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1 Using index
1 SIMPLE t2 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t2 ALL NULL NULL NULL NULL 2 Using where
DROP TABLE t1,t2; DROP TABLE t1,t2;
#
# MDEV-7370: Server deadlocks on renaming a table for which persistent statistics exists
#
drop database if exists db1;
drop database if exists db1;
create database db1;
create database db2;
use db1;
#
# First, run the original testcase:
#
create table t1 (i int);
insert into t1 values (10),(20);
analyze table t1 persistent for all;
Table Op Msg_type Msg_text
db1.t1 analyze status Engine-independent statistics collected
db1.t1 analyze status OK
rename table t1 to db2.t1;
# Verify that stats in the old database are gone:
select * from mysql.column_stats where db_name='db1' and table_name='t1';
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
select * from mysql.table_stats where db_name='db1' and table_name='t1';
db_name table_name cardinality
# Verify that stats are present in the new database:
select * from mysql.column_stats where db_name='db2' and table_name='t1';
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
db2 t1 i 10 20 0.0000 4.0000 1.0000 0 NULL NULL
select * from mysql.table_stats where db_name='db2' and table_name='t1';
db_name table_name cardinality
db2 t1 2
#
# Now, try with more than one column and with indexes:
#
use test;
create table t1(a int primary key);
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
use db1;
create table t2 (a int, b int, c int, key IDX1(a), key IDX2(a,b));
insert into t2 select a/10, a/2, a from test.t1;
analyze table t2 persistent for all;
Table Op Msg_type Msg_text
db1.t2 analyze status Engine-independent statistics collected
db1.t2 analyze status Table is already up to date
alter table t2 rename db2.t2;
# Verify that stats in the old database are gone:
select * from mysql.table_stats where db_name='db1' and table_name='t2';
db_name table_name cardinality
select * from mysql.column_stats where db_name='db1' and table_name='t2';
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
select * from mysql.index_stats where db_name='db1' and table_name='t2';
db_name table_name index_name prefix_arity avg_frequency
# Verify that stats are present in the new database:
select * from mysql.table_stats where db_name='db2' and table_name='t2';
db_name table_name cardinality
db2 t2 10
select * from mysql.column_stats where db_name='db2' and table_name='t2';
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
db2 t2 a 0 1 0.0000 4.0000 5.0000 0 NULL NULL
db2 t2 b 0 5 0.0000 4.0000 1.6667 0 NULL NULL
db2 t2 c 0 9 0.0000 4.0000 1.0000 0 NULL NULL
select * from mysql.index_stats where db_name='db2' and table_name='t2';
db_name table_name index_name prefix_arity avg_frequency
db2 t2 IDX1 1 5.0000
db2 t2 IDX2 1 5.0000
db2 t2 IDX2 2 1.6667
use db2;
#
# Now, rename within the same database and verify:
#
rename table t2 to t3;
# No stats under old name:
select * from mysql.table_stats where db_name='db2' and table_name='t2';
db_name table_name cardinality
select * from mysql.column_stats where db_name='db2' and table_name='t2';
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
select * from mysql.index_stats where db_name='db2' and table_name='t2';
db_name table_name index_name prefix_arity avg_frequency
# Stats under the new name:
select * from mysql.table_stats where db_name='db2' and table_name='t3';
db_name table_name cardinality
db2 t3 10
select * from mysql.column_stats where db_name='db2' and table_name='t3';
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
db2 t3 a 0 1 0.0000 4.0000 5.0000 0 NULL NULL
db2 t3 b 0 5 0.0000 4.0000 1.6667 0 NULL NULL
db2 t3 c 0 9 0.0000 4.0000 1.0000 0 NULL NULL
select * from mysql.index_stats where db_name='db2' and table_name='t3';
db_name table_name index_name prefix_arity avg_frequency
db2 t3 IDX1 1 5.0000
db2 t3 IDX2 1 5.0000
db2 t3 IDX2 2 1.6667
use test;
drop database db1;
drop database db2;
drop table t1;
set use_stat_tables=@save_use_stat_tables; set use_stat_tables=@save_use_stat_tables;

View File

@ -448,6 +448,101 @@ id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1 Using index 1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1 Using index
1 SIMPLE t2 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t2 ALL NULL NULL NULL NULL 2 Using where
DROP TABLE t1,t2; DROP TABLE t1,t2;
#
# MDEV-7370: Server deadlocks on renaming a table for which persistent statistics exists
#
drop database if exists db1;
drop database if exists db1;
create database db1;
create database db2;
use db1;
#
# First, run the original testcase:
#
create table t1 (i int);
insert into t1 values (10),(20);
analyze table t1 persistent for all;
Table Op Msg_type Msg_text
db1.t1 analyze status Engine-independent statistics collected
db1.t1 analyze status OK
rename table t1 to db2.t1;
# Verify that stats in the old database are gone:
select * from mysql.column_stats where db_name='db1' and table_name='t1';
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
select * from mysql.table_stats where db_name='db1' and table_name='t1';
db_name table_name cardinality
# Verify that stats are present in the new database:
select * from mysql.column_stats where db_name='db2' and table_name='t1';
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
db2 t1 i 10 20 0.0000 4.0000 1.0000 0 NULL NULL
select * from mysql.table_stats where db_name='db2' and table_name='t1';
db_name table_name cardinality
db2 t1 2
#
# Now, try with more than one column and with indexes:
#
use test;
create table t1(a int primary key);
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
use db1;
create table t2 (a int, b int, c int, key IDX1(a), key IDX2(a,b));
insert into t2 select a/10, a/2, a from test.t1;
analyze table t2 persistent for all;
Table Op Msg_type Msg_text
db1.t2 analyze status Engine-independent statistics collected
db1.t2 analyze status OK
alter table t2 rename db2.t2;
# Verify that stats in the old database are gone:
select * from mysql.table_stats where db_name='db1' and table_name='t2';
db_name table_name cardinality
select * from mysql.column_stats where db_name='db1' and table_name='t2';
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
select * from mysql.index_stats where db_name='db1' and table_name='t2';
db_name table_name index_name prefix_arity avg_frequency
# Verify that stats are present in the new database:
select * from mysql.table_stats where db_name='db2' and table_name='t2';
db_name table_name cardinality
db2 t2 10
select * from mysql.column_stats where db_name='db2' and table_name='t2';
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
db2 t2 a 0 1 0.0000 4.0000 5.0000 0 NULL NULL
db2 t2 b 0 5 0.0000 4.0000 1.6667 0 NULL NULL
db2 t2 c 0 9 0.0000 4.0000 1.0000 0 NULL NULL
select * from mysql.index_stats where db_name='db2' and table_name='t2';
db_name table_name index_name prefix_arity avg_frequency
db2 t2 IDX1 1 5.0000
db2 t2 IDX2 1 5.0000
db2 t2 IDX2 2 1.6667
use db2;
#
# Now, rename within the same database and verify:
#
rename table t2 to t3;
# No stats under old name:
select * from mysql.table_stats where db_name='db2' and table_name='t2';
db_name table_name cardinality
select * from mysql.column_stats where db_name='db2' and table_name='t2';
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
select * from mysql.index_stats where db_name='db2' and table_name='t2';
db_name table_name index_name prefix_arity avg_frequency
# Stats under the new name:
select * from mysql.table_stats where db_name='db2' and table_name='t3';
db_name table_name cardinality
db2 t3 10
select * from mysql.column_stats where db_name='db2' and table_name='t3';
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
db2 t3 a 0 1 0.0000 4.0000 5.0000 0 NULL NULL
db2 t3 b 0 5 0.0000 4.0000 1.6667 0 NULL NULL
db2 t3 c 0 9 0.0000 4.0000 1.0000 0 NULL NULL
select * from mysql.index_stats where db_name='db2' and table_name='t3';
db_name table_name index_name prefix_arity avg_frequency
db2 t3 IDX1 1 5.0000
db2 t3 IDX2 1 5.0000
db2 t3 IDX2 2 1.6667
use test;
drop database db1;
drop database db2;
drop table t1;
set use_stat_tables=@save_use_stat_tables; set use_stat_tables=@save_use_stat_tables;
set optimizer_switch=@save_optimizer_switch_for_stat_tables_test; set optimizer_switch=@save_optimizer_switch_for_stat_tables_test;
SET SESSION STORAGE_ENGINE=DEFAULT; SET SESSION STORAGE_ENGINE=DEFAULT;

View File

@ -1622,3 +1622,22 @@ test t2 id 1 1024 0.0000 8.0000 63 SINGLE_PREC_HB 03070B0F13171B1F23272B2F33373B
set histogram_size=default; set histogram_size=default;
drop table t1, t2; drop table t1, t2;
set use_stat_tables=@save_use_stat_tables; set use_stat_tables=@save_use_stat_tables;
#
# Bug MDEV-7383: min/max value for a column not utf8 compatible
#
create table t1 (a varchar(100)) engine=MyISAM;
insert into t1 values(unhex('D879626AF872675F73E662F8'));
analyze table t1 persistent for all;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status OK
show warnings;
Level Code Message
select db_name, table_name, column_name,
HEX(min_value), HEX(max_value),
nulls_ratio, avg_frequency,
hist_size, hist_type, HEX(histogram)
FROM mysql.column_stats;
db_name table_name column_name HEX(min_value) HEX(max_value) nulls_ratio avg_frequency hist_size hist_type HEX(histogram)
test t1 a D879626AF872675F73E662F8 D879626AF872675F73E662F8 0.0000 1.0000 0 NULL NULL
drop table t1;

View File

@ -287,8 +287,8 @@ column_stats CREATE TABLE `column_stats` (
`db_name` varchar(64) COLLATE utf8_bin NOT NULL, `db_name` varchar(64) COLLATE utf8_bin NOT NULL,
`table_name` varchar(64) COLLATE utf8_bin NOT NULL, `table_name` varchar(64) COLLATE utf8_bin NOT NULL,
`column_name` varchar(64) COLLATE utf8_bin NOT NULL, `column_name` varchar(64) COLLATE utf8_bin NOT NULL,
`min_value` varchar(255) COLLATE utf8_bin DEFAULT NULL, `min_value` varbinary(255) DEFAULT NULL,
`max_value` varchar(255) COLLATE utf8_bin DEFAULT NULL, `max_value` varbinary(255) DEFAULT NULL,
`nulls_ratio` decimal(12,4) DEFAULT NULL, `nulls_ratio` decimal(12,4) DEFAULT NULL,
`avg_length` decimal(12,4) DEFAULT NULL, `avg_length` decimal(12,4) DEFAULT NULL,
`avg_frequency` decimal(12,4) DEFAULT NULL, `avg_frequency` decimal(12,4) DEFAULT NULL,

View File

@ -287,8 +287,8 @@ column_stats CREATE TABLE `column_stats` (
`db_name` varchar(64) COLLATE utf8_bin NOT NULL, `db_name` varchar(64) COLLATE utf8_bin NOT NULL,
`table_name` varchar(64) COLLATE utf8_bin NOT NULL, `table_name` varchar(64) COLLATE utf8_bin NOT NULL,
`column_name` varchar(64) COLLATE utf8_bin NOT NULL, `column_name` varchar(64) COLLATE utf8_bin NOT NULL,
`min_value` varchar(255) COLLATE utf8_bin DEFAULT NULL, `min_value` varbinary(255) DEFAULT NULL,
`max_value` varchar(255) COLLATE utf8_bin DEFAULT NULL, `max_value` varbinary(255) DEFAULT NULL,
`nulls_ratio` decimal(12,4) DEFAULT NULL, `nulls_ratio` decimal(12,4) DEFAULT NULL,
`avg_length` decimal(12,4) DEFAULT NULL, `avg_length` decimal(12,4) DEFAULT NULL,
`avg_frequency` decimal(12,4) DEFAULT NULL, `avg_frequency` decimal(12,4) DEFAULT NULL,

View File

@ -287,8 +287,8 @@ column_stats CREATE TABLE `column_stats` (
`db_name` varchar(64) COLLATE utf8_bin NOT NULL, `db_name` varchar(64) COLLATE utf8_bin NOT NULL,
`table_name` varchar(64) COLLATE utf8_bin NOT NULL, `table_name` varchar(64) COLLATE utf8_bin NOT NULL,
`column_name` varchar(64) COLLATE utf8_bin NOT NULL, `column_name` varchar(64) COLLATE utf8_bin NOT NULL,
`min_value` varchar(255) COLLATE utf8_bin DEFAULT NULL, `min_value` varbinary(255) DEFAULT NULL,
`max_value` varchar(255) COLLATE utf8_bin DEFAULT NULL, `max_value` varbinary(255) DEFAULT NULL,
`nulls_ratio` decimal(12,4) DEFAULT NULL, `nulls_ratio` decimal(12,4) DEFAULT NULL,
`avg_length` decimal(12,4) DEFAULT NULL, `avg_length` decimal(12,4) DEFAULT NULL,
`avg_frequency` decimal(12,4) DEFAULT NULL, `avg_frequency` decimal(12,4) DEFAULT NULL,

View File

@ -287,8 +287,8 @@ column_stats CREATE TABLE `column_stats` (
`db_name` varchar(64) COLLATE utf8_bin NOT NULL, `db_name` varchar(64) COLLATE utf8_bin NOT NULL,
`table_name` varchar(64) COLLATE utf8_bin NOT NULL, `table_name` varchar(64) COLLATE utf8_bin NOT NULL,
`column_name` varchar(64) COLLATE utf8_bin NOT NULL, `column_name` varchar(64) COLLATE utf8_bin NOT NULL,
`min_value` varchar(255) COLLATE utf8_bin DEFAULT NULL, `min_value` varbinary(255) DEFAULT NULL,
`max_value` varchar(255) COLLATE utf8_bin DEFAULT NULL, `max_value` varbinary(255) DEFAULT NULL,
`nulls_ratio` decimal(12,4) DEFAULT NULL, `nulls_ratio` decimal(12,4) DEFAULT NULL,
`avg_length` decimal(12,4) DEFAULT NULL, `avg_length` decimal(12,4) DEFAULT NULL,
`avg_frequency` decimal(12,4) DEFAULT NULL, `avg_frequency` decimal(12,4) DEFAULT NULL,

View File

@ -0,0 +1,6 @@
create function sequence returns integer soname "UDF_EXAMPLE_LIB";
create table t1 (n int key not null auto_increment, msg int as (sequence()) virtual);
select * from t1;
n msg
drop table t1;
drop function sequence;

View File

@ -619,6 +619,65 @@ Handler_update 5
ROLLBACK; ROLLBACK;
DROP TABLE t1, t2; DROP TABLE t1, t2;
# #
# MDEV-8938: Server Crash on Update with joins
#
CREATE TABLE `t1` (
`name` varchar(255) NOT NULL,
`value` varchar(4095) DEFAULT NULL,
PRIMARY KEY (`name`)
);
UPDATE `t1` SET value = CONCAT("*.",(SELECT `temptable`.`value` FROM (SELECT * FROM `t1` WHERE `name`="consoleproxy.url.domain") AS `temptable` WHERE `temptable`.`name`="consoleproxy.url.domain")) WHERE `name`="consoleproxy.url.domain";
drop table t1;
CREATE TABLE `t1` (
`name` varchar(255) NOT NULL,
`value` varchar(4095) DEFAULT NULL,
PRIMARY KEY (`name`)
);
create table t2 (
`name` varchar(255) NOT NULL,
`value` varchar(4095) DEFAULT NULL,
PRIMARY KEY (`name`)
);
UPDATE t1
SET value = (SELECT value FROM t2 WHERE `name`= t1.name)
WHERE value is null ;
drop table t1,t2;
#
#MDEV-8701: Crash on derived query
#
CREATE TABLE t1 (
data_exit_entry_id int(11) NOT NULL,
data_entry_id int(11) NOT NULL,
data_entry_exit_id int(11) NOT NULL,
data_exit_entry_quantity double NOT NULL
) DEFAULT CHARSET=utf8;
CREATE TABLE t2 (
data_entry_id int(11) NOT NULL,
data_entry_cost double NOT NULL,
data_entry_quantity double NOT NULL
) DEFAULT CHARSET=utf8;
create algorithm=temptable view v1 as SELECT data_entry_exit_id, data_exit_entry_quantity, data_entry_cost
FROM t1 INNER JOIN t2 as dt ON dt.data_entry_id = t1.data_entry_id;
UPDATE t2
SET data_entry_cost
= ( ( SELECT SUM(data_exit_entry_quantity * data_entry_cost)
FROM
v1 AS query
WHERE data_entry_exit_id = t2.data_entry_id
)
);
UPDATE t2
SET data_entry_cost
= ( ( SELECT SUM(data_exit_entry_quantity * data_entry_cost)
FROM
( SELECT data_entry_exit_id, data_exit_entry_quantity, data_entry_cost
FROM t1 INNER JOIN t2 as dt ON dt.data_entry_id = t1.data_entry_id) AS query
WHERE data_entry_exit_id = t2.data_entry_id
)
);
drop view v1;
drop table t1, t2;
#
# MDEV-4410: update does not want to use a covering index, but select uses it. # MDEV-4410: update does not want to use a covering index, but select uses it.
# #
create table t2(a int); create table t2(a int);

View File

@ -5477,6 +5477,39 @@ UPDATE t1, t2 SET a = 1 WHERE a IN ( SELECT 0 FROM v3 );
EXECUTE stmt; EXECUTE stmt;
DROP TABLE t1, t2, t3; DROP TABLE t1, t2, t3;
DROP VIEW v3; DROP VIEW v3;
#
# MDEV-8632: Segmentation fault on INSERT
#
CREATE TABLE `t1` (
`id` int(10) unsigned NOT NULL,
`r` float NOT NULL,
PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
create view v1 as select id, if(r=r,1,2) as d from t1;
create view v2 as
select id,
d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d as p
from v1;
insert into t1 (id, r)
select id,p from
(
select id,
d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d as p
from (
select id, if(r=r,1,2) as d
from t1
) a
) b
on duplicate key update r=p;
insert into t1 (id, r)
select id,p from v2
on duplicate key update r=p;
prepare stmt from "insert into t1 (id, r) select id,p from v2 on duplicate key update r=p";
execute stmt;
execute stmt;
deallocate prepare stmt;
drop view v1,v2;
drop table `t1`;
# ----------------------------------------------------------------- # -----------------------------------------------------------------
# -- End of 5.5 tests. # -- End of 5.5 tests.
# ----------------------------------------------------------------- # -----------------------------------------------------------------
@ -5699,6 +5732,47 @@ idAlbum strAlbum strMusicBrainzAlbumID strArtists strGenres iYear strMoods strSt
1 strAlbum1 strMusicBrainzAlbumID1 strArtists1 strGenres1 2000 NULL NULL NULL NULL NULL NULL NULL NULL 0 0 album 1 1 strArtist1 strMusicBrainzArtistID 0 0 1 strAlbum1 strMusicBrainzAlbumID1 strArtists1 strGenres1 2000 NULL NULL NULL NULL NULL NULL NULL NULL 0 0 album 1 1 strArtist1 strMusicBrainzArtistID 0 0
drop view v1,v2; drop view v1,v2;
drop table t1,t2,t3,t4; drop table t1,t2,t3,t4;
#
# MDEV-8913: Derived queries with same column names as final
# projection causes issues when using Order By
#
create table t1 (field int);
insert into t1 values (10),(5),(3),(8),(20);
SELECT sq.f2 AS f1, sq.f1 AS f2
FROM ( SELECT field AS f1, 1 AS f2 FROM t1) AS sq
ORDER BY sq.f1;
f1 f2
1 3
1 5
1 8
1 10
1 20
create view v1 as SELECT field AS f1, 1 AS f2 FROM t1;
SELECT sq.f2 AS f1, sq.f1 AS f2
FROM v1 AS sq
ORDER BY sq.f1;
f1 f2
1 3
1 5
1 8
1 10
1 20
drop view v1;
create table t2 SELECT field AS f1, 1 AS f2 FROM t1;
SELECT
sq.f2 AS f1,
sq.f1 AS f2
FROM t2 AS sq
ORDER BY sq.f1;
f1 f2
1 3
1 5
1 8
1 10
1 20
drop table t1, t2;
SELECT 1 FROM (SELECT 1 as a) AS b HAVING (SELECT `SOME_GARBAGE`.b.a)=1;
ERROR 42S22: Unknown column 'SOME_GARBAGE.b.a' in 'field list'
# ----------------------------------------------------------------- # -----------------------------------------------------------------
# -- End of 10.0 tests. # -- End of 10.0 tests.
# ----------------------------------------------------------------- # -----------------------------------------------------------------

View File

@ -0,0 +1,27 @@
CREATE DATABASE federated;
CREATE DATABASE federated;
connection slave;
create table t1 (foo int, bar int);
connection master;
create server 's1' foreign data wrapper 'mysql' options
(HOST 'localhost',
DATABASE 'test',
USER 'root',
PASSWORD '',
SOCKET 'SLAVE_MYSOCK');
create table t1 (foo integer, bar integer) engine=federated
connection='s1';
select * from t1;
foo bar
connection slave;
connection master;
drop table t1;
drop server s1;
connection slave;
drop table t1;
connection master;
DROP TABLE IF EXISTS federated.t1;
DROP DATABASE IF EXISTS federated;
connection slave;
DROP TABLE IF EXISTS federated.t1;
DROP DATABASE IF EXISTS federated;

View File

@ -0,0 +1,38 @@
#
# MDEV-8313 Got an error writing communication packets
#
source include/federated.inc;
enable_connect_log;
connection slave;
create table t1 (foo int, bar int);
connection master;
--replace_result $SLAVE_MYSOCK SLAVE_MYSOCK
eval create server 's1' foreign data wrapper 'mysql' options
(HOST 'localhost',
DATABASE 'test',
USER 'root',
PASSWORD '',
SOCKET '$SLAVE_MYSOCK');
eval create table t1 (foo integer, bar integer) engine=federated
connection='s1';
select * from t1;
connection slave;
source include/restart_mysqld.inc;
connection master;
drop table t1;
drop server s1;
connection slave;
drop table t1;
source include/federated_cleanup.inc;

View File

@ -16,8 +16,8 @@ def mysql column_stats db_name 1 NULL NO varchar 64 192 NULL NULL NULL utf8 utf8
def mysql column_stats histogram 11 NULL YES varbinary 255 255 NULL NULL NULL NULL NULL varbinary(255) select,insert,update,references def mysql column_stats histogram 11 NULL YES varbinary 255 255 NULL NULL NULL NULL NULL varbinary(255) select,insert,update,references
def mysql column_stats hist_size 9 NULL YES tinyint NULL NULL 3 0 NULL NULL NULL tinyint(3) unsigned select,insert,update,references def mysql column_stats hist_size 9 NULL YES tinyint NULL NULL 3 0 NULL NULL NULL tinyint(3) unsigned select,insert,update,references
def mysql column_stats hist_type 10 NULL YES enum 14 42 NULL NULL NULL utf8 utf8_bin enum('SINGLE_PREC_HB','DOUBLE_PREC_HB') select,insert,update,references def mysql column_stats hist_type 10 NULL YES enum 14 42 NULL NULL NULL utf8 utf8_bin enum('SINGLE_PREC_HB','DOUBLE_PREC_HB') select,insert,update,references
def mysql column_stats max_value 5 NULL YES varchar 255 765 NULL NULL NULL utf8 utf8_bin varchar(255) select,insert,update,references def mysql column_stats max_value 5 NULL YES varbinary 255 255 NULL NULL NULL NULL NULL varbinary(255) select,insert,update,references
def mysql column_stats min_value 4 NULL YES varchar 255 765 NULL NULL NULL utf8 utf8_bin varchar(255) select,insert,update,references def mysql column_stats min_value 4 NULL YES varbinary 255 255 NULL NULL NULL NULL NULL varbinary(255) select,insert,update,references
def mysql column_stats nulls_ratio 6 NULL YES decimal NULL NULL 12 4 NULL NULL NULL decimal(12,4) select,insert,update,references def mysql column_stats nulls_ratio 6 NULL YES decimal NULL NULL 12 4 NULL NULL NULL decimal(12,4) select,insert,update,references
def mysql column_stats table_name 2 NULL NO varchar 64 192 NULL NULL NULL utf8 utf8_bin varchar(64) PRI select,insert,update,references def mysql column_stats table_name 2 NULL NO varchar 64 192 NULL NULL NULL utf8 utf8_bin varchar(64) PRI select,insert,update,references
def mysql db Alter_priv 13 N NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references def mysql db Alter_priv 13 N NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
@ -330,8 +330,8 @@ NULL mysql columns_priv Timestamp timestamp NULL NULL NULL NULL timestamp
3.0000 mysql column_stats db_name varchar 64 192 utf8 utf8_bin varchar(64) 3.0000 mysql column_stats db_name varchar 64 192 utf8 utf8_bin varchar(64)
3.0000 mysql column_stats table_name varchar 64 192 utf8 utf8_bin varchar(64) 3.0000 mysql column_stats table_name varchar 64 192 utf8 utf8_bin varchar(64)
3.0000 mysql column_stats column_name varchar 64 192 utf8 utf8_bin varchar(64) 3.0000 mysql column_stats column_name varchar 64 192 utf8 utf8_bin varchar(64)
3.0000 mysql column_stats min_value varchar 255 765 utf8 utf8_bin varchar(255) 1.0000 mysql column_stats min_value varbinary 255 255 NULL NULL varbinary(255)
3.0000 mysql column_stats max_value varchar 255 765 utf8 utf8_bin varchar(255) 1.0000 mysql column_stats max_value varbinary 255 255 NULL NULL varbinary(255)
NULL mysql column_stats nulls_ratio decimal NULL NULL NULL NULL decimal(12,4) NULL mysql column_stats nulls_ratio decimal NULL NULL NULL NULL decimal(12,4)
NULL mysql column_stats avg_length decimal NULL NULL NULL NULL decimal(12,4) NULL mysql column_stats avg_length decimal NULL NULL NULL NULL decimal(12,4)
NULL mysql column_stats avg_frequency decimal NULL NULL NULL NULL decimal(12,4) NULL mysql column_stats avg_frequency decimal NULL NULL NULL NULL decimal(12,4)

View File

@ -16,8 +16,8 @@ def mysql column_stats db_name 1 NULL NO varchar 64 192 NULL NULL NULL utf8 utf8
def mysql column_stats histogram 11 NULL YES varbinary 255 255 NULL NULL NULL NULL NULL varbinary(255) def mysql column_stats histogram 11 NULL YES varbinary 255 255 NULL NULL NULL NULL NULL varbinary(255)
def mysql column_stats hist_size 9 NULL YES tinyint NULL NULL 3 0 NULL NULL NULL tinyint(3) unsigned def mysql column_stats hist_size 9 NULL YES tinyint NULL NULL 3 0 NULL NULL NULL tinyint(3) unsigned
def mysql column_stats hist_type 10 NULL YES enum 14 42 NULL NULL NULL utf8 utf8_bin enum('SINGLE_PREC_HB','DOUBLE_PREC_HB') def mysql column_stats hist_type 10 NULL YES enum 14 42 NULL NULL NULL utf8 utf8_bin enum('SINGLE_PREC_HB','DOUBLE_PREC_HB')
def mysql column_stats max_value 5 NULL YES varchar 255 765 NULL NULL NULL utf8 utf8_bin varchar(255) def mysql column_stats max_value 5 NULL YES varbinary 255 255 NULL NULL NULL NULL NULL varbinary(255)
def mysql column_stats min_value 4 NULL YES varchar 255 765 NULL NULL NULL utf8 utf8_bin varchar(255) def mysql column_stats min_value 4 NULL YES varbinary 255 255 NULL NULL NULL NULL NULL varbinary(255)
def mysql column_stats nulls_ratio 6 NULL YES decimal NULL NULL 12 4 NULL NULL NULL decimal(12,4) def mysql column_stats nulls_ratio 6 NULL YES decimal NULL NULL 12 4 NULL NULL NULL decimal(12,4)
def mysql column_stats table_name 2 NULL NO varchar 64 192 NULL NULL NULL utf8 utf8_bin varchar(64) PRI def mysql column_stats table_name 2 NULL NO varchar 64 192 NULL NULL NULL utf8 utf8_bin varchar(64) PRI
def mysql db Alter_priv 13 N NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') def mysql db Alter_priv 13 N NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y')
@ -330,8 +330,8 @@ NULL mysql columns_priv Timestamp timestamp NULL NULL NULL NULL timestamp
3.0000 mysql column_stats db_name varchar 64 192 utf8 utf8_bin varchar(64) 3.0000 mysql column_stats db_name varchar 64 192 utf8 utf8_bin varchar(64)
3.0000 mysql column_stats table_name varchar 64 192 utf8 utf8_bin varchar(64) 3.0000 mysql column_stats table_name varchar 64 192 utf8 utf8_bin varchar(64)
3.0000 mysql column_stats column_name varchar 64 192 utf8 utf8_bin varchar(64) 3.0000 mysql column_stats column_name varchar 64 192 utf8 utf8_bin varchar(64)
3.0000 mysql column_stats min_value varchar 255 765 utf8 utf8_bin varchar(255) 1.0000 mysql column_stats min_value varbinary 255 255 NULL NULL varbinary(255)
3.0000 mysql column_stats max_value varchar 255 765 utf8 utf8_bin varchar(255) 1.0000 mysql column_stats max_value varbinary 255 255 NULL NULL varbinary(255)
NULL mysql column_stats nulls_ratio decimal NULL NULL NULL NULL decimal(12,4) NULL mysql column_stats nulls_ratio decimal NULL NULL NULL NULL decimal(12,4)
NULL mysql column_stats avg_length decimal NULL NULL NULL NULL decimal(12,4) NULL mysql column_stats avg_length decimal NULL NULL NULL NULL decimal(12,4)
NULL mysql column_stats avg_frequency decimal NULL NULL NULL NULL decimal(12,4) NULL mysql column_stats avg_frequency decimal NULL NULL NULL NULL decimal(12,4)

View File

@ -0,0 +1,9 @@
#
# Bug #19929435 DROP DATABASE HANGS WITH MALFORMED TABLE
#
set session default_storage_engine=innodb;
create database `b`;
use `b`;
create table `#mysql50#q.q` select 1;
ERROR 42000: Incorrect table name '#mysql50#q.q'
drop database `b`;

View File

@ -568,7 +568,7 @@ Variable_name Value
auto_increment_increment 65535 auto_increment_increment 65535
auto_increment_offset 65535 auto_increment_offset 65535
INSERT INTO t1 VALUES (NULL),(NULL); INSERT INTO t1 VALUES (NULL),(NULL);
ERROR 22003: Out of range value for column 'c1' at row 1 ERROR HY000: Failed to read auto-increment value from storage engine
SELECT * FROM t1; SELECT * FROM t1;
c1 c1
1 1
@ -642,6 +642,18 @@ PRIMARY KEY (m)) ENGINE = InnoDB;
INSERT INTO t2 (n,o) VALUES INSERT INTO t2 (n,o) VALUES
(1 , 'true'), (1 , 'false'), (2 , 'true'), (2 , 'false'), (3 , 'true'), (1 , 'true'), (1 , 'false'), (2 , 'true'), (2 , 'false'), (3 , 'true'),
(3 , 'false'), (4 , 'true'), (4 , 'false'), (5 , 'true'), (5 , 'false'); (3 , 'false'), (4 , 'true'), (4 , 'false'), (5 , 'true'), (5 , 'false');
SELECT * FROM t2;
m n o
1 1 TRUE
2 1 FALSE
3 2 TRUE
4 2 FALSE
5 3 TRUE
6 3 FALSE
7 4 TRUE
8 4 FALSE
9 5 TRUE
10 5 FALSE
SHOW CREATE TABLE t2; SHOW CREATE TABLE t2;
Table Create Table Table Create Table
t2 CREATE TABLE `t2` ( t2 CREATE TABLE `t2` (
@ -649,7 +661,7 @@ t2 CREATE TABLE `t2` (
`n` int(10) unsigned NOT NULL, `n` int(10) unsigned NOT NULL,
`o` enum('FALSE','TRUE') DEFAULT NULL, `o` enum('FALSE','TRUE') DEFAULT NULL,
PRIMARY KEY (`m`) PRIMARY KEY (`m`)
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=latin1 ) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=latin1
INSERT INTO t1 (b,c) SELECT n,o FROM t2 ; INSERT INTO t1 (b,c) SELECT n,o FROM t2 ;
SHOW CREATE TABLE t1; SHOW CREATE TABLE t1;
Table Create Table Table Create Table

View File

@ -0,0 +1,40 @@
CREATE TABLE t1 (D INT) ENGINE=innodb;
INSERT INTO t1 VALUES (10);
ALTER TABLE t1 MODIFY COLUMN d INT;
ALTER TABLE t1 ADD INDEX my_d (d);
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`d` int(11) DEFAULT NULL,
KEY `my_d` (`d`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
INSERT INTO t1 VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9);
INSERT INTO t1 SELECT * FROM t1;
INSERT INTO t1 SELECT * FROM t1;
INSERT INTO t1 SELECT * FROM t1;
INSERT INTO t1 SELECT * FROM t1;
INSERT INTO t1 SELECT * FROM t1;
INSERT INTO t1 SELECT * FROM t1;
INSERT INTO t1 SELECT * FROM t1;
EXPLAIN SELECT d FROM t1 WHERE d = 5;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref my_d my_d 5 const 128 Using index
EXPLAIN SELECT D FROM t1 WHERE D = 5;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref my_d my_d 5 const 128 Using index
ALTER TABLE t1 DROP INDEX my_d;
ALTER TABLE t1 MODIFY COLUMN D INT;
ALTER TABLE t1 ADD INDEX my_d (D);
EXPLAIN SELECT d FROM t1 WHERE d = 5;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref my_d my_d 5 const 128 Using index
EXPLAIN SELECT D FROM t1 WHERE D = 5;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref my_d my_d 5 const 128 Using index
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`D` int(11) DEFAULT NULL,
KEY `my_d` (`D`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
DROP TABLE t1;

View File

@ -25,7 +25,7 @@ create table t2(a int, constraint a foreign key a (a) references t1(a)) engine=i
ERROR HY000: Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed") ERROR HY000: Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed")
show warnings; show warnings;
Level Code Message Level Code Message
Warning 150 Create table '`test`.`t2`' with foreign key constraint failed. There is no index in the referenced table where the referenced columns appear as the first columns. Error close to foreign key a (a) references t1(a)) engine=innodb. Warning 150 Create table '`test`.`t2`' with foreign key constraint failed. There is no index in the referenced table where the referenced columns appear as the first columns near ' foreign key a (a) references t1(a)) engine=innodb'.
Error 1005 Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed") Error 1005 Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed")
Warning 1215 Cannot add foreign key constraint Warning 1215 Cannot add foreign key constraint
drop table t1; drop table t1;
@ -42,7 +42,7 @@ alter table t2 add constraint b foreign key (b) references t2(b);
ERROR HY000: Can't create table `test`.`#sql-temporary` (errno: 150 "Foreign key constraint is incorrectly formed") ERROR HY000: Can't create table `test`.`#sql-temporary` (errno: 150 "Foreign key constraint is incorrectly formed")
show warnings; show warnings;
Level Code Message Level Code Message
Warning 150 Alter table '`test`.`t2`' with foreign key constraint failed. There is no index in the referenced table where the referenced columns appear as the first columns. Error close to foreign key (b) references t2(b). Warning 150 Alter table '`test`.`t2`' with foreign key constraint failed. There is no index in the referenced table where the referenced columns appear as the first columns near ' foreign key (b) references t2(b)'.
Error 1005 Can't create table `test`.`#sql-temporary` (errno: 150 "Foreign key constraint is incorrectly formed") Error 1005 Can't create table `test`.`#sql-temporary` (errno: 150 "Foreign key constraint is incorrectly formed")
Warning 1215 Cannot add foreign key constraint Warning 1215 Cannot add foreign key constraint
drop table t2, t1; drop table t2, t1;
@ -51,7 +51,7 @@ alter table t1 add constraint c1 foreign key (f1) references t11(f1);
ERROR HY000: Can't create table `test`.`#sql-temporary` (errno: 150 "Foreign key constraint is incorrectly formed") ERROR HY000: Can't create table `test`.`#sql-temporary` (errno: 150 "Foreign key constraint is incorrectly formed")
show warnings; show warnings;
Level Code Message Level Code Message
Warning 150 Alter table `test`.`t1` with foreign key constraint failed. Referenced table `test`.`t11` not found in the data dictionary close to foreign key (f1) references t11(f1). Warning 150 Alter table `test`.`t1` with foreign key constraint failed. Referenced table `test`.`t11` not found in the data dictionary near ' foreign key (f1) references t11(f1)'.
Error 1005 Can't create table `test`.`#sql-temporary` (errno: 150 "Foreign key constraint is incorrectly formed") Error 1005 Can't create table `test`.`#sql-temporary` (errno: 150 "Foreign key constraint is incorrectly formed")
Warning 1215 Cannot add foreign key constraint Warning 1215 Cannot add foreign key constraint
drop table t1; drop table t1;
@ -90,14 +90,14 @@ alter table t1 add constraint c1 foreign key (f1) references t1(f1) on update se
ERROR HY000: Can't create table `test`.`#sql-temporary` (errno: 150 "Foreign key constraint is incorrectly formed") ERROR HY000: Can't create table `test`.`#sql-temporary` (errno: 150 "Foreign key constraint is incorrectly formed")
show warnings; show warnings;
Level Code Message Level Code Message
Warning 150 Alter table `test`.`t1` with foreign key constraint failed. You have defined a SET NULL condition but column f1 is defined as NOT NULL in foreign key (f1) references t1(f1) on update set null close to on update set null. Warning 150 Alter table `test`.`t1` with foreign key constraint failed. You have defined a SET NULL condition but column 'f1' is defined as NOT NULL in ' foreign key (f1) references t1(f1) on update set null' near ' on update set null'.
Error 1005 Can't create table `test`.`#sql-temporary` (errno: 150 "Foreign key constraint is incorrectly formed") Error 1005 Can't create table `test`.`#sql-temporary` (errno: 150 "Foreign key constraint is incorrectly formed")
Warning 1215 Cannot add foreign key constraint Warning 1215 Cannot add foreign key constraint
create table t2(a int not null, foreign key(a) references t1(f1) on delete set null) engine=innodb; create table t2(a int not null, foreign key(a) references t1(f1) on delete set null) engine=innodb;
ERROR HY000: Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed") ERROR HY000: Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed")
show warnings; show warnings;
Level Code Message Level Code Message
Warning 150 Create table `test`.`t2` with foreign key constraint failed. You have defined a SET NULL condition but column a is defined as NOT NULL in foreign key(a) references t1(f1) on delete set null) engine=innodb close to on delete set null) engine=innodb. Warning 150 Create table `test`.`t2` with foreign key constraint failed. You have defined a SET NULL condition but column 'a' is defined as NOT NULL in 'foreign key(a) references t1(f1) on delete set null) engine=innodb' near ' on delete set null) engine=innodb'.
Error 1005 Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed") Error 1005 Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed")
Warning 1215 Cannot add foreign key constraint Warning 1215 Cannot add foreign key constraint
drop table t1; drop table t1;
@ -106,7 +106,7 @@ create table t2(a char(20), key(a), foreign key(a) references t1(f1)) engine=inn
ERROR HY000: Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed") ERROR HY000: Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed")
show warnings; show warnings;
Level Code Message Level Code Message
Warning 150 Create table `test`.`t2` with foreign key constraint failed. Field type or character set for column a does not mach referenced column f1 close to foreign key(a) references t1(f1)) engine=innodb Warning 150 Create table `test`.`t2` with foreign key constraint failed. Field type or character set for column 'a' does not mach referenced column 'f1' near 'foreign key(a) references t1(f1)) engine=innodb'.
Error 1005 Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed") Error 1005 Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed")
Warning 1215 Cannot add foreign key constraint Warning 1215 Cannot add foreign key constraint
drop table t1; drop table t1;

View File

@ -50,8 +50,8 @@ CONSTRAINT fk3 FOREIGN KEY (f3) REFERENCES t3 (id) ON DELETE CASCADE
ERROR HY000: Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed") ERROR HY000: Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed")
show warnings; show warnings;
Level Code Message Level Code Message
Warning 150 Create table `test`.`t2` with foreign key constraint failed. Referenced table `test`.`t3` not found in the data dictionary close to FOREIGN KEY (f3) REFERENCES t3 (id) ON DELETE CASCADE Warning 150 Create table `test`.`t2` with foreign key constraint failed. Referenced table `test`.`t3` not found in the data dictionary near ' FOREIGN KEY (f3) REFERENCES t3 (id) ON DELETE CASCADE
) ENGINE=InnoDB. ) ENGINE=InnoDB'.
Error 1005 Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed") Error 1005 Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed")
Warning 1215 Cannot add foreign key constraint Warning 1215 Cannot add foreign key constraint
CREATE TABLE t2 ( CREATE TABLE t2 (
@ -65,7 +65,7 @@ ALTER TABLE t2 ADD CONSTRAINT fk3 FOREIGN KEY (f3) REFERENCES t3 (id) ON DELETE
ERROR HY000: Can't create table `test`.`#sql-temporary` (errno: 150 "Foreign key constraint is incorrectly formed") ERROR HY000: Can't create table `test`.`#sql-temporary` (errno: 150 "Foreign key constraint is incorrectly formed")
show warnings; show warnings;
Level Code Message Level Code Message
Warning 150 Alter table `test`.`t2` with foreign key constraint failed. Referenced table `test`.`t3` not found in the data dictionary close to FOREIGN KEY (f3) REFERENCES t3 (id) ON DELETE CASCADE. Warning 150 Alter table `test`.`t2` with foreign key constraint failed. Referenced table `test`.`t3` not found in the data dictionary near ' FOREIGN KEY (f3) REFERENCES t3 (id) ON DELETE CASCADE'.
Error 1005 Can't create table `test`.`#sql-temporary` (errno: 150 "Foreign key constraint is incorrectly formed") Error 1005 Can't create table `test`.`#sql-temporary` (errno: 150 "Foreign key constraint is incorrectly formed")
Warning 1215 Cannot add foreign key constraint Warning 1215 Cannot add foreign key constraint
drop table t2; drop table t2;

View File

@ -0,0 +1,71 @@
CREATE SCHEMA `repro`;
CREATE TABLE `repro`.`crew` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`code` varchar(50) NOT NULL,
`name` varchar(50) NOT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `code` (`code`)
) ENGINE=InnoDB;
CREATE TABLE `repro`.`pilot` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`code` varchar(50) NOT NULL,
`name` varchar(50) NOT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `code` (`code`)
) ENGINE=InnoDB;
CREATE TABLE `repro`.`crew_role_assigned` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`crew_id` int(11) NOT NULL,
`role_code` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
KEY `fk_crewRoleAssigned_roleCode` (`role_code`),
CONSTRAINT `fk_crewRoleAssigned_crewId` FOREIGN KEY (`crew_id`) REFERENCES `repro`.`crew` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `fk_crewRoleAssigned_pilotId` FOREIGN KEY (`crew_id`) REFERENCES `repro`.`pilot` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB COMMENT="This is a comment about tables";
# Restart mysqld --innodb_read_only_mode=1
SHOW CREATE TABLE `repro`.`crew_role_assigned`;
Table Create Table
crew_role_assigned CREATE TABLE `crew_role_assigned` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`crew_id` int(11) NOT NULL,
`role_code` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
KEY `fk_crewRoleAssigned_roleCode` (`role_code`),
KEY `fk_crewRoleAssigned_pilotId` (`crew_id`),
CONSTRAINT `fk_crewRoleAssigned_crewId` FOREIGN KEY (`crew_id`) REFERENCES `crew` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `fk_crewRoleAssigned_pilotId` FOREIGN KEY (`crew_id`) REFERENCES `pilot` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='This is a comment about tables'
ALTER TABLE `repro`.`crew_role_assigned` COMMENT = "This is a new comment about tables";
SHOW CREATE TABLE `repro`.`crew_role_assigned`;
Table Create Table
crew_role_assigned CREATE TABLE `crew_role_assigned` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`crew_id` int(11) NOT NULL,
`role_code` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
KEY `fk_crewRoleAssigned_roleCode` (`role_code`),
KEY `fk_crewRoleAssigned_pilotId` (`crew_id`),
CONSTRAINT `fk_crewRoleAssigned_crewId` FOREIGN KEY (`crew_id`) REFERENCES `crew` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `fk_crewRoleAssigned_pilotId` FOREIGN KEY (`crew_id`) REFERENCES `pilot` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='This is a new comment about tables'
# Restart mysqld --innodb_read_only_mode=1
SHOW CREATE TABLE `repro`.`crew_role_assigned`;
Table Create Table
crew_role_assigned CREATE TABLE `crew_role_assigned` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`crew_id` int(11) NOT NULL,
`role_code` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
KEY `fk_crewRoleAssigned_roleCode` (`role_code`),
KEY `fk_crewRoleAssigned_pilotId` (`crew_id`),
CONSTRAINT `fk_crewRoleAssigned_crewId` FOREIGN KEY (`crew_id`) REFERENCES `crew` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `fk_crewRoleAssigned_pilotId` FOREIGN KEY (`crew_id`) REFERENCES `pilot` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='This is a new comment about tables'
DROP TABLE `repro`.`crew_role_assigned`;
DROP TABLE `repro`.`pilot`;
DROP TABLE `repro`.`crew`;
DROP SCHEMA `repro`;

View File

@ -0,0 +1,20 @@
set global innodb_stats_auto_recalc=off;
CREATE TABLE t1 (i int) ENGINE=InnoDB;
SELECT NAME, STATS_INITIALIZED, NUM_ROWS, MODIFIED_COUNTER FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME = 'test/t1';
NAME STATS_INITIALIZED NUM_ROWS MODIFIED_COUNTER
test/t1 Initialized 0 0
INSERT INTO t1 VALUES (1);
INSERT INTO t1 VALUES (2);
SELECT NAME, STATS_INITIALIZED, NUM_ROWS, MODIFIED_COUNTER FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME = 'test/t1';
NAME STATS_INITIALIZED NUM_ROWS MODIFIED_COUNTER
test/t1 Initialized 2 2
DELETE FROM t1 WHERE i = 1;
SELECT NAME, STATS_INITIALIZED, NUM_ROWS, MODIFIED_COUNTER FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME = 'test/t1';
NAME STATS_INITIALIZED NUM_ROWS MODIFIED_COUNTER
test/t1 Initialized 1 3
UPDATE t1 SET i = 4 WHERE i = 2;
SELECT NAME, STATS_INITIALIZED, NUM_ROWS, MODIFIED_COUNTER FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME = 'test/t1';
NAME STATS_INITIALIZED NUM_ROWS MODIFIED_COUNTER
test/t1 Initialized 1 4
DROP TABLE t1;
set global innodb_stats_auto_recalc=default;

View File

@ -2,7 +2,7 @@ SET GLOBAL innodb_file_per_table=0;
create table bug56947(a int not null) engine = innodb; create table bug56947(a int not null) engine = innodb;
SET DEBUG_DBUG='+d,ib_rebuild_cannot_rename'; SET DEBUG_DBUG='+d,ib_rebuild_cannot_rename';
alter table bug56947 add unique index (a); alter table bug56947 add unique index (a);
ERROR HY000: Got error 11 "Resource temporarily unavailable" from storage engine InnoDB ERROR HY000: Got error 11 "xxx" from storage engine InnoDB
SET DEBUG_DBUG='-d,ib_rebuild_cannot_rename'; SET DEBUG_DBUG='-d,ib_rebuild_cannot_rename';
check table bug56947; check table bug56947;
Table Op Msg_type Msg_text Table Op Msg_type Msg_text

View File

@ -0,0 +1,2 @@
CREATE TABLE t1 ENGINE=InnoDB AS SELECT * FROM mysql.help_topic;
DROP TABLE t1;

View File

@ -0,0 +1,12 @@
--source include/have_innodb.inc
--echo #
--echo # Bug #19929435 DROP DATABASE HANGS WITH MALFORMED TABLE
--echo #
set session default_storage_engine=innodb;
create database `b`;
use `b`;
--error ER_WRONG_TABLE_NAME
create table `#mysql50#q.q` select 1;
drop database `b`;

View File

@ -351,7 +351,7 @@ INSERT INTO t1 VALUES (18446744073709551610); #-- 2^64 - 2
SELECT * FROM t1; SELECT * FROM t1;
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1152921504606846976, @@SESSION.AUTO_INCREMENT_OFFSET=1152921504606846976; SET @@SESSION.AUTO_INCREMENT_INCREMENT=1152921504606846976, @@SESSION.AUTO_INCREMENT_OFFSET=1152921504606846976;
SHOW VARIABLES LIKE "auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
--error 167 --error 1467
INSERT INTO t1 VALUES (NULL),(NULL); INSERT INTO t1 VALUES (NULL),(NULL);
SELECT * FROM t1; SELECT * FROM t1;
DROP TABLE t1; DROP TABLE t1;
@ -403,6 +403,7 @@ CREATE TABLE t2 (
INSERT INTO t2 (n,o) VALUES INSERT INTO t2 (n,o) VALUES
(1 , 'true'), (1 , 'false'), (2 , 'true'), (2 , 'false'), (3 , 'true'), (1 , 'true'), (1 , 'false'), (2 , 'true'), (2 , 'false'), (3 , 'true'),
(3 , 'false'), (4 , 'true'), (4 , 'false'), (5 , 'true'), (5 , 'false'); (3 , 'false'), (4 , 'true'), (4 , 'false'), (5 , 'true'), (5 , 'false');
SELECT * FROM t2;
SHOW CREATE TABLE t2; SHOW CREATE TABLE t2;
INSERT INTO t1 (b,c) SELECT n,o FROM t2 ; INSERT INTO t1 (b,c) SELECT n,o FROM t2 ;
SHOW CREATE TABLE t1; SHOW CREATE TABLE t1;

View File

@ -0,0 +1,31 @@
--source include/have_innodb.inc
#
# Fix MySQL Bug#20755615: InnoDB compares column names case sensitively,
# while according to Storage Engine API column names should be compared
# case insensitively. This can cause FRM and InnoDB data dictionary to
# go out of sync:
#
CREATE TABLE t1 (D INT) ENGINE=innodb;
INSERT INTO t1 VALUES (10);
ALTER TABLE t1 MODIFY COLUMN d INT;
ALTER TABLE t1 ADD INDEX my_d (d);
SHOW CREATE TABLE t1;
INSERT INTO t1 VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9);
INSERT INTO t1 SELECT * FROM t1;
INSERT INTO t1 SELECT * FROM t1;
INSERT INTO t1 SELECT * FROM t1;
INSERT INTO t1 SELECT * FROM t1;
INSERT INTO t1 SELECT * FROM t1;
INSERT INTO t1 SELECT * FROM t1;
INSERT INTO t1 SELECT * FROM t1;
EXPLAIN SELECT d FROM t1 WHERE d = 5;
EXPLAIN SELECT D FROM t1 WHERE D = 5;
ALTER TABLE t1 DROP INDEX my_d;
ALTER TABLE t1 MODIFY COLUMN D INT;
ALTER TABLE t1 ADD INDEX my_d (D);
EXPLAIN SELECT d FROM t1 WHERE d = 5;
EXPLAIN SELECT D FROM t1 WHERE D = 5;
SHOW CREATE TABLE t1;
DROP TABLE t1;

View File

@ -0,0 +1,61 @@
-- source include/have_innodb.inc
# need to restart server
-- source include/not_embedded.inc
CREATE SCHEMA `repro`;
CREATE TABLE `repro`.`crew` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`code` varchar(50) NOT NULL,
`name` varchar(50) NOT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `code` (`code`)
) ENGINE=InnoDB;
CREATE TABLE `repro`.`pilot` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`code` varchar(50) NOT NULL,
`name` varchar(50) NOT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `code` (`code`)
) ENGINE=InnoDB;
CREATE TABLE `repro`.`crew_role_assigned` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`crew_id` int(11) NOT NULL,
`role_code` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
KEY `fk_crewRoleAssigned_roleCode` (`role_code`),
CONSTRAINT `fk_crewRoleAssigned_crewId` FOREIGN KEY (`crew_id`) REFERENCES `repro`.`crew` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `fk_crewRoleAssigned_pilotId` FOREIGN KEY (`crew_id`) REFERENCES `repro`.`pilot` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB COMMENT="This is a comment about tables";
--echo # Restart mysqld --innodb_read_only_mode=1
-- let $restart_parameters=--innodb-read-only-mode=1
-- source include/restart_mysqld.inc
SHOW CREATE TABLE `repro`.`crew_role_assigned`;
-- source include/restart_mysqld.inc
ALTER TABLE `repro`.`crew_role_assigned` COMMENT = "This is a new comment about tables";
SHOW CREATE TABLE `repro`.`crew_role_assigned`;
--echo # Restart mysqld --innodb_read_only_mode=1
-- let $restart_parameters=--innodb-read-only-mode=1
-- source include/restart_mysqld.inc
#
# Below create table should contain also fk definitions
#
SHOW CREATE TABLE `repro`.`crew_role_assigned`;
-- source include/restart_mysqld.inc
DROP TABLE `repro`.`crew_role_assigned`;
DROP TABLE `repro`.`pilot`;
DROP TABLE `repro`.`crew`;
DROP SCHEMA `repro`;

View File

@ -0,0 +1 @@
--loose-innodb-sys-tablestats

View File

@ -0,0 +1,28 @@
-- source include/have_innodb.inc
#
# MDEV-8297: information_schema.innodb_sys_tablestats.modified_counter doesn't change on UPDATE
#
set global innodb_stats_auto_recalc=off;
CREATE TABLE t1 (i int) ENGINE=InnoDB;
SELECT NAME, STATS_INITIALIZED, NUM_ROWS, MODIFIED_COUNTER FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME = 'test/t1';
INSERT INTO t1 VALUES (1);
INSERT INTO t1 VALUES (2);
SELECT NAME, STATS_INITIALIZED, NUM_ROWS, MODIFIED_COUNTER FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME = 'test/t1';
DELETE FROM t1 WHERE i = 1;
SELECT NAME, STATS_INITIALIZED, NUM_ROWS, MODIFIED_COUNTER FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME = 'test/t1';
UPDATE t1 SET i = 4 WHERE i = 2;
SELECT NAME, STATS_INITIALIZED, NUM_ROWS, MODIFIED_COUNTER FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME = 'test/t1';
DROP TABLE t1;
set global innodb_stats_auto_recalc=default;

View File

@ -8,6 +8,7 @@ SET GLOBAL innodb_file_per_table=0;
create table bug56947(a int not null) engine = innodb; create table bug56947(a int not null) engine = innodb;
SET DEBUG_DBUG='+d,ib_rebuild_cannot_rename'; SET DEBUG_DBUG='+d,ib_rebuild_cannot_rename';
--replace_regex /"[^"]*"/"xxx"/
--error ER_GET_ERRNO --error ER_GET_ERRNO
alter table bug56947 add unique index (a); alter table bug56947 add unique index (a);
SET DEBUG_DBUG='-d,ib_rebuild_cannot_rename'; SET DEBUG_DBUG='-d,ib_rebuild_cannot_rename';

View File

@ -0,0 +1,29 @@
--loose-innodb_trx
--loose-innodb_locks
--loose-innodb_lock_waits
--loose-innodb_cmp
--loose-innodb_cmp_reset
--loose-innodb_cmp_per_index
--loose-innodb_cmp_per_index_reset
--loose-innodb_cmpmem
--loose-innodb_cmpmem_reset
--loose-innodb_buffer_page
--loose-innodb_buffer_page_lru
--loose-innodb_buffer_stats
--loose-innodb_sys_tables
--loose-innodb_sys_tablestats
--loose-innodb_sys_indexes
--loose-innodb_sys_columns
--loose-innodb_sys_fields
--loose-innodb_sys_foreign
--loose-innodb_sys_foreign_cols
--loose-innodb_changed_pages
--loose-innodb_rseg
--loose-innodb_undo_logs
--loose-innodb_sys_stats
--loose-innodb_table_stats
--loose-innodb_index_stats
--loose-innodb_admin_command
--loose-innodb_buffer_pool_pages
--loose-innodb_buffer_pool_pages_index
--loose-innodb_buffer_pool_pages_blob

View File

@ -0,0 +1,64 @@
-- source include/have_innodb.inc
-- source include/not_embedded.inc
#
# MDEV-7762 InnoDB: Failing assertion: block->page.buf_fix_count > 0 in buf0buf.ic line 730
#
# Make sure that all supported information_schema tables are readable
# (actual result sets are not important).
#
CREATE TABLE t1 ENGINE=InnoDB AS SELECT * FROM mysql.help_topic;
--disable_query_log
--disable_result_log
BEGIN;
SELECT * FROM t1 FOR UPDATE;
SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
SELECT * FROM INFORMATION_SCHEMA.INNODB_CMP;
SELECT * FROM INFORMATION_SCHEMA.INNODB_CMP_RESET;
SELECT * FROM INFORMATION_SCHEMA.INNODB_CMPMEM;
SELECT * FROM INFORMATION_SCHEMA.INNODB_CMPMEM_RESET;
SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE;
SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE_LRU;
--error 0,1109
SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_STATS;
--error 0,1109
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES;
--error 0,1109
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS;
--error 0,1109
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_INDEXES;
--error 0,1109
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS;
--error 0,1109
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FIELDS;
--error 0,1109
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN;
--error 0,1109
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN_COLS;
--error 0,1109
SELECT * FROM INFORMATION_SCHEMA.INNODB_RSEG;
--error 0,1109
SELECT * FROM INFORMATION_SCHEMA.INNODB_UNDO_LOGS;
--error 0,1109
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_STATS;
--error 0,1109
SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS;
--error 0,1109
SELECT * FROM INFORMATION_SCHEMA.INNODB_INDEX_STATS;
--error 0,1109
SELECT * FROM INFORMATION_SCHEMA.INNODB_ADMIN_COMMAND;
--error 0,1109
SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_POOL_PAGES;
--error 0,1109
SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_POOL_PAGES_INDEX;
--error 0,1109
SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_POOL_PAGES_BLOB;
--error 0,1109
SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES;
COMMIT;
--enable_query_log
--enable_result_log
DROP TABLE t1;

View File

@ -498,7 +498,7 @@ MATCH(a) AGAINST('aaa1* aaa14 aaa15 aaa16' IN BOOLEAN MODE)
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1(a TEXT) ENGINE = InnoDB; CREATE TABLE t1(a TEXT) ENGINE = InnoDB;
SELECT GROUP_CONCAT(a) AS st FROM t1 HAVING MATCH(st) AGAINST('test' IN BOOLEAN MODE); SELECT GROUP_CONCAT(a) AS st FROM t1 HAVING MATCH(st) AGAINST('test' IN BOOLEAN MODE);
ERROR HY000: Incorrect arguments to AGAINST ERROR HY000: Incorrect arguments to MATCH
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1(a VARCHAR(64), FULLTEXT(a)) ENGINE = InnoDB; CREATE TABLE t1(a VARCHAR(64), FULLTEXT(a)) ENGINE = InnoDB;
INSERT INTO t1 VALUES('awrd bwrd cwrd'),('awrd bwrd cwrd'),('awrd bwrd cwrd'); INSERT INTO t1 VALUES('awrd bwrd cwrd'),('awrd bwrd cwrd'),('awrd bwrd cwrd');

View File

@ -1,4 +1,4 @@
CREATE TABLE `CC` ( CREATE TABLE `t2` (
`pk` int(11) NOT NULL AUTO_INCREMENT, `pk` int(11) NOT NULL AUTO_INCREMENT,
`int_key` int(11) DEFAULT NULL, `int_key` int(11) DEFAULT NULL,
`date_nokey` date DEFAULT NULL, `date_nokey` date DEFAULT NULL,
@ -8,9 +8,9 @@ KEY `int_key` (`int_key`),
KEY `varchar_key` (`int_key`) KEY `varchar_key` (`int_key`)
) ENGINE=MyISAM AUTO_INCREMENT=30 DEFAULT CHARSET=latin1; ) ENGINE=MyISAM AUTO_INCREMENT=30 DEFAULT CHARSET=latin1;
Warnings: Warnings:
Note 1831 Duplicate index 'varchar_key' defined on the table 'test.CC'. This is deprecated and will be disallowed in a future release. Note 1831 Duplicate index 'varchar_key' defined on the table 'test.t2'. This is deprecated and will be disallowed in a future release.
INSERT INTO `CC` VALUES (10,8,NULL,'2002-02-26 06:14:37'),(11,9,'2006-06-14','1900-01-01 00:00:00'),(12,9,'2002-09-12','2006-12-03 09:37:26'),(13,186,'2005-02-15','2008-05-26 12:27:10'),(14,NULL,NULL,'2004-12-14 16:37:30'),(15,2,'2008-11-04','2003-02-11 21:19:41'),(16,3,'2004-09-04','2009-10-18 02:27:49'),(17,0,'2006-06-05','2000-09-26 07:45:57'),(18,133,'1900-01-01',NULL),(19,1,'1900-01-01','2005-11-10 12:40:29'),(20,8,'1900-01-01','2009-04-25 00:00:00'),(21,5,'2005-01-13','2002-11-27 00:00:00'),(22,5,'2006-05-21','2004-01-26 20:32:32'),(23,8,'2003-09-08','2007-10-26 11:41:40'),(24,6,'2006-12-23','2005-10-07 00:00:00'),(25,51,'2006-10-15','2000-07-15 05:00:34'),(26,4,'2005-04-06','2000-04-03 16:33:32'),(27,7,'2008-04-07',NULL),(28,6,'2006-10-10','2001-04-25 01:26:12'),(29,4,'1900-01-01','2000-12-27 00:00:00'); INSERT INTO `t2` VALUES (10,8,NULL,'2002-02-26 06:14:37'),(11,9,'2006-06-14','1900-01-01 00:00:00'),(12,9,'2002-09-12','2006-12-03 09:37:26'),(13,186,'2005-02-15','2008-05-26 12:27:10'),(14,NULL,NULL,'2004-12-14 16:37:30'),(15,2,'2008-11-04','2003-02-11 21:19:41'),(16,3,'2004-09-04','2009-10-18 02:27:49'),(17,0,'2006-06-05','2000-09-26 07:45:57'),(18,133,'1900-01-01',NULL),(19,1,'1900-01-01','2005-11-10 12:40:29'),(20,8,'1900-01-01','2009-04-25 00:00:00'),(21,5,'2005-01-13','2002-11-27 00:00:00'),(22,5,'2006-05-21','2004-01-26 20:32:32'),(23,8,'2003-09-08','2007-10-26 11:41:40'),(24,6,'2006-12-23','2005-10-07 00:00:00'),(25,51,'2006-10-15','2000-07-15 05:00:34'),(26,4,'2005-04-06','2000-04-03 16:33:32'),(27,7,'2008-04-07',NULL),(28,6,'2006-10-10','2001-04-25 01:26:12'),(29,4,'1900-01-01','2000-12-27 00:00:00');
CREATE TABLE `C` ( CREATE TABLE t1 (
`pk` int(11) NOT NULL AUTO_INCREMENT, `pk` int(11) NOT NULL AUTO_INCREMENT,
`int_key` int(11) DEFAULT NULL, `int_key` int(11) DEFAULT NULL,
`date_nokey` date DEFAULT NULL, `date_nokey` date DEFAULT NULL,
@ -20,13 +20,13 @@ KEY `int_key` (`int_key`),
KEY `varchar_key` (`int_key`) KEY `varchar_key` (`int_key`)
) ENGINE=MyISAM AUTO_INCREMENT=21 DEFAULT CHARSET=latin1; ) ENGINE=MyISAM AUTO_INCREMENT=21 DEFAULT CHARSET=latin1;
Warnings: Warnings:
Note 1831 Duplicate index 'varchar_key' defined on the table 'test.C'. This is deprecated and will be disallowed in a future release. Note 1831 Duplicate index 'varchar_key' defined on the table 'test.t1'. This is deprecated and will be disallowed in a future release.
INSERT INTO `C` VALUES (1,2,NULL,'2004-10-11 18:13:16'),(2,9,'2001-09-19',NULL),(3,3,'2004-09-12','1900-01-01 00:00:00'),(4,9,NULL,'2009-07-25 00:00:00'),(5,NULL,'2002-07-19',NULL),(6,9,'2002-12-16','2008-07-27 00:00:00'),(7,3,'2006-02-08','2002-11-13 16:37:31'),(8,8,'2006-08-28','1900-01-01 00:00:00'),(9,8,'2001-04-14','2003-12-10 00:00:00'),(10,53,'2000-01-05','2001-12-21 22:38:22'),(11,0,'2003-12-06','2008-12-13 23:16:44'),(12,5,'1900-01-01','2005-08-15 12:39:41'),(13,166,'2002-11-27',NULL),(14,3,NULL,'2006-09-11 12:06:14'),(15,0,'2003-05-27','2007-12-15 12:39:34'),(16,1,'2005-05-03','2005-08-09 00:00:00'),(17,9,'2001-04-18','2001-09-02 22:50:02'),(18,5,'2005-12-27','2005-12-16 22:58:11'),(19,6,'2004-08-20','2007-04-19 00:19:53'),(20,2,'1900-01-01','1900-01-01 00:00:00'); INSERT INTO t1 VALUES (1,2,NULL,'2004-10-11 18:13:16'),(2,9,'2001-09-19',NULL),(3,3,'2004-09-12','1900-01-01 00:00:00'),(4,9,NULL,'2009-07-25 00:00:00'),(5,NULL,'2002-07-19',NULL),(6,9,'2002-12-16','2008-07-27 00:00:00'),(7,3,'2006-02-08','2002-11-13 16:37:31'),(8,8,'2006-08-28','1900-01-01 00:00:00'),(9,8,'2001-04-14','2003-12-10 00:00:00'),(10,53,'2000-01-05','2001-12-21 22:38:22'),(11,0,'2003-12-06','2008-12-13 23:16:44'),(12,5,'1900-01-01','2005-08-15 12:39:41'),(13,166,'2002-11-27',NULL),(14,3,NULL,'2006-09-11 12:06:14'),(15,0,'2003-05-27','2007-12-15 12:39:34'),(16,1,'2005-05-03','2005-08-09 00:00:00'),(17,9,'2001-04-18','2001-09-02 22:50:02'),(18,5,'2005-12-27','2005-12-16 22:58:11'),(19,6,'2004-08-20','2007-04-19 00:19:53'),(20,2,'1900-01-01','1900-01-01 00:00:00');
SELECT `pk` SELECT `pk`
FROM C OUTR FROM t1 OUTR
WHERE `pk` IN ( WHERE `pk` IN (
SELECT `int_key` SELECT `int_key`
FROM CC FROM t2
WHERE `date_nokey` < `datetime_nokey` XOR OUTR .`date_nokey` ) ; WHERE `date_nokey` < `datetime_nokey` XOR OUTR .`date_nokey` ) ;
pk pk
9 9
@ -34,10 +34,10 @@ pk
5 5
6 6
SELECT `pk` SELECT `pk`
FROM C FROM t1
WHERE `pk` IN ( WHERE `pk` IN (
SELECT `int_key` SELECT `int_key`
FROM CC FROM t2
WHERE `date_nokey` < `datetime_nokey` XOR '2009-11-25' ) ; WHERE `date_nokey` < `datetime_nokey` XOR '2009-11-25' ) ;
pk pk
2 2
@ -62,9 +62,9 @@ Warning 1292 Truncated incorrect INTEGER value: '2009-11-25'
Warning 1292 Truncated incorrect INTEGER value: '2009-11-25' Warning 1292 Truncated incorrect INTEGER value: '2009-11-25'
Warning 1292 Truncated incorrect INTEGER value: '2009-11-25' Warning 1292 Truncated incorrect INTEGER value: '2009-11-25'
Warning 1292 Truncated incorrect INTEGER value: '2009-11-25' Warning 1292 Truncated incorrect INTEGER value: '2009-11-25'
DROP TABLE CC; DROP TABLE t2;
DROP TABLE C; DROP TABLE t1;
CREATE TABLE `CC` ( CREATE TABLE `t2` (
`pk` int(11) NOT NULL AUTO_INCREMENT, `pk` int(11) NOT NULL AUTO_INCREMENT,
`int_nokey` int(11) DEFAULT NULL, `int_nokey` int(11) DEFAULT NULL,
`int_key` int(11) DEFAULT NULL, `int_key` int(11) DEFAULT NULL,
@ -77,9 +77,9 @@ KEY `datetime_key` (`datetime_key`),
KEY `varchar_key` (`int_key`) KEY `varchar_key` (`int_key`)
) ENGINE=MyISAM AUTO_INCREMENT=30 DEFAULT CHARSET=latin1; ) ENGINE=MyISAM AUTO_INCREMENT=30 DEFAULT CHARSET=latin1;
Warnings: Warnings:
Note 1831 Duplicate index 'varchar_key' defined on the table 'test.CC'. This is deprecated and will be disallowed in a future release. Note 1831 Duplicate index 'varchar_key' defined on the table 'test.t2'. This is deprecated and will be disallowed in a future release.
INSERT INTO `CC` VALUES (10,7,8,NULL,'2002-02-26 06:14:37','2002-02-26 06:14:37'),(11,1,9,'2006-06-14','1900-01-01 00:00:00','1900-01-01 00:00:00'),(12,5,9,'2002-09-12','2006-12-03 09:37:26','2006-12-03 09:37:26'),(13,3,186,'2005-02-15','2008-05-26 12:27:10','2008-05-26 12:27:10'),(14,6,NULL,NULL,'2004-12-14 16:37:30','2004-12-14 16:37:30'),(15,92,2,'2008-11-04','2003-02-11 21:19:41','2003-02-11 21:19:41'),(16,7,3,'2004-09-04','2009-10-18 02:27:49','2009-10-18 02:27:49'),(17,NULL,0,'2006-06-05','2000-09-26 07:45:57','2000-09-26 07:45:57'),(18,3,133,'1900-01-01',NULL,NULL),(19,5,1,'1900-01-01','2005-11-10 12:40:29','2005-11-10 12:40:29'),(20,1,8,'1900-01-01','2009-04-25 00:00:00','2009-04-25 00:00:00'),(21,2,5,'2005-01-13','2002-11-27 00:00:00','2002-11-27 00:00:00'),(22,NULL,5,'2006-05-21','2004-01-26 20:32:32','2004-01-26 20:32:32'),(23,1,8,'2003-09-08','2007-10-26 11:41:40','2007-10-26 11:41:40'),(24,0,6,'2006-12-23','2005-10-07 00:00:00','2005-10-07 00:00:00'),(25,210,51,'2006-10-15','2000-07-15 05:00:34','2000-07-15 05:00:34'),(26,8,4,'2005-04-06','2000-04-03 16:33:32','2000-04-03 16:33:32'),(27,7,7,'2008-04-07',NULL,NULL),(28,5,6,'2006-10-10','2001-04-25 01:26:12','2001-04-25 01:26:12'),(29,NULL,4,'1900-01-01','2000-12-27 00:00:00','2000-12-27 00:00:00'); INSERT INTO `t2` VALUES (10,7,8,NULL,'2002-02-26 06:14:37','2002-02-26 06:14:37'),(11,1,9,'2006-06-14','1900-01-01 00:00:00','1900-01-01 00:00:00'),(12,5,9,'2002-09-12','2006-12-03 09:37:26','2006-12-03 09:37:26'),(13,3,186,'2005-02-15','2008-05-26 12:27:10','2008-05-26 12:27:10'),(14,6,NULL,NULL,'2004-12-14 16:37:30','2004-12-14 16:37:30'),(15,92,2,'2008-11-04','2003-02-11 21:19:41','2003-02-11 21:19:41'),(16,7,3,'2004-09-04','2009-10-18 02:27:49','2009-10-18 02:27:49'),(17,NULL,0,'2006-06-05','2000-09-26 07:45:57','2000-09-26 07:45:57'),(18,3,133,'1900-01-01',NULL,NULL),(19,5,1,'1900-01-01','2005-11-10 12:40:29','2005-11-10 12:40:29'),(20,1,8,'1900-01-01','2009-04-25 00:00:00','2009-04-25 00:00:00'),(21,2,5,'2005-01-13','2002-11-27 00:00:00','2002-11-27 00:00:00'),(22,NULL,5,'2006-05-21','2004-01-26 20:32:32','2004-01-26 20:32:32'),(23,1,8,'2003-09-08','2007-10-26 11:41:40','2007-10-26 11:41:40'),(24,0,6,'2006-12-23','2005-10-07 00:00:00','2005-10-07 00:00:00'),(25,210,51,'2006-10-15','2000-07-15 05:00:34','2000-07-15 05:00:34'),(26,8,4,'2005-04-06','2000-04-03 16:33:32','2000-04-03 16:33:32'),(27,7,7,'2008-04-07',NULL,NULL),(28,5,6,'2006-10-10','2001-04-25 01:26:12','2001-04-25 01:26:12'),(29,NULL,4,'1900-01-01','2000-12-27 00:00:00','2000-12-27 00:00:00');
CREATE TABLE `C` ( CREATE TABLE t1 (
`pk` int(11) NOT NULL AUTO_INCREMENT, `pk` int(11) NOT NULL AUTO_INCREMENT,
`int_nokey` int(11) DEFAULT NULL, `int_nokey` int(11) DEFAULT NULL,
`int_key` int(11) DEFAULT NULL, `int_key` int(11) DEFAULT NULL,
@ -92,17 +92,17 @@ KEY `datetime_key` (`datetime_key`),
KEY `varchar_key` (`int_key`) KEY `varchar_key` (`int_key`)
) ENGINE=MyISAM AUTO_INCREMENT=21 DEFAULT CHARSET=latin1; ) ENGINE=MyISAM AUTO_INCREMENT=21 DEFAULT CHARSET=latin1;
Warnings: Warnings:
Note 1831 Duplicate index 'varchar_key' defined on the table 'test.C'. This is deprecated and will be disallowed in a future release. Note 1831 Duplicate index 'varchar_key' defined on the table 'test.t1'. This is deprecated and will be disallowed in a future release.
INSERT INTO `C` VALUES (1,NULL,2,NULL,'2004-10-11 18:13:16','2004-10-11 18:13:16'),(2,7,9,'2001-09-19',NULL,NULL),(3,9,3,'2004-09-12','1900-01-01 00:00:00','1900-01-01 00:00:00'),(4,7,9,NULL,'2009-07-25 00:00:00','2009-07-25 00:00:00'),(5,4,NULL,'2002-07-19',NULL,NULL),(6,2,9,'2002-12-16','2008-07-27 00:00:00','2008-07-27 00:00:00'),(7,6,3,'2006-02-08','2002-11-13 16:37:31','2002-11-13 16:37:31'),(8,8,8,'2006-08-28','1900-01-01 00:00:00','1900-01-01 00:00:00'),(9,NULL,8,'2001-04-14','2003-12-10 00:00:00','2003-12-10 00:00:00'),(10,5,53,'2000-01-05','2001-12-21 22:38:22','2001-12-21 22:38:22'),(11,NULL,0,'2003-12-06','2008-12-13 23:16:44','2008-12-13 23:16:44'),(12,6,5,'1900-01-01','2005-08-15 12:39:41','2005-08-15 12:39:41'),(13,188,166,'2002-11-27',NULL,NULL),(14,2,3,NULL,'2006-09-11 12:06:14','2006-09-11 12:06:14'),(15,1,0,'2003-05-27','2007-12-15 12:39:34','2007-12-15 12:39:34'),(16,1,1,'2005-05-03','2005-08-09 00:00:00','2005-08-09 00:00:00'),(17,0,9,'2001-04-18','2001-09-02 22:50:02','2001-09-02 22:50:02'),(18,9,5,'2005-12-27','2005-12-16 22:58:11','2005-12-16 22:58:11'),(19,NULL,6,'2004-08-20','2007-04-19 00:19:53','2007-04-19 00:19:53'),(20,4,2,'1900-01-01','1900-01-01 00:00:00','1900-01-01 00:00:00'); INSERT INTO t1 VALUES (1,NULL,2,NULL,'2004-10-11 18:13:16','2004-10-11 18:13:16'),(2,7,9,'2001-09-19',NULL,NULL),(3,9,3,'2004-09-12','1900-01-01 00:00:00','1900-01-01 00:00:00'),(4,7,9,NULL,'2009-07-25 00:00:00','2009-07-25 00:00:00'),(5,4,NULL,'2002-07-19',NULL,NULL),(6,2,9,'2002-12-16','2008-07-27 00:00:00','2008-07-27 00:00:00'),(7,6,3,'2006-02-08','2002-11-13 16:37:31','2002-11-13 16:37:31'),(8,8,8,'2006-08-28','1900-01-01 00:00:00','1900-01-01 00:00:00'),(9,NULL,8,'2001-04-14','2003-12-10 00:00:00','2003-12-10 00:00:00'),(10,5,53,'2000-01-05','2001-12-21 22:38:22','2001-12-21 22:38:22'),(11,NULL,0,'2003-12-06','2008-12-13 23:16:44','2008-12-13 23:16:44'),(12,6,5,'1900-01-01','2005-08-15 12:39:41','2005-08-15 12:39:41'),(13,188,166,'2002-11-27',NULL,NULL),(14,2,3,NULL,'2006-09-11 12:06:14','2006-09-11 12:06:14'),(15,1,0,'2003-05-27','2007-12-15 12:39:34','2007-12-15 12:39:34'),(16,1,1,'2005-05-03','2005-08-09 00:00:00','2005-08-09 00:00:00'),(17,0,9,'2001-04-18','2001-09-02 22:50:02','2001-09-02 22:50:02'),(18,9,5,'2005-12-27','2005-12-16 22:58:11','2005-12-16 22:58:11'),(19,NULL,6,'2004-08-20','2007-04-19 00:19:53','2007-04-19 00:19:53'),(20,4,2,'1900-01-01','1900-01-01 00:00:00','1900-01-01 00:00:00');
SELECT OUTR . `pk` AS X SELECT OUTR . `pk` AS X
FROM C AS OUTR FROM t1 AS OUTR
WHERE OUTR . `pk` IN ( WHERE OUTR . `pk` IN (
SELECT INNR . `int_key` AS Y SELECT INNR . `int_key` AS Y
FROM CC AS INNR FROM t2 AS INNR
WHERE INNR . `date_nokey` < INNR . `datetime_nokey` XOR OUTR . `date_nokey` BETWEEN '2004-07-10' AND '2009-11-25' WHERE INNR . `date_nokey` < INNR . `datetime_nokey` XOR OUTR . `date_nokey` BETWEEN '2004-07-10' AND '2009-11-25'
ORDER BY INNR . `int_nokey` ) AND ( OUTR . `datetime_key` BETWEEN '2000-05-25' AND '2004-08-07' OR OUTR . `datetime_nokey` = '2007-10-24' ) ORDER BY INNR . `int_nokey` ) AND ( OUTR . `datetime_key` BETWEEN '2000-05-25' AND '2004-08-07' OR OUTR . `datetime_nokey` = '2007-10-24' )
ORDER BY OUTR . `int_key` , OUTR . `pk`; ORDER BY OUTR . `int_key` , OUTR . `pk`;
X X
9 9
DROP TABLE CC; DROP TABLE t2;
DROP TABLE C; DROP TABLE t1;

View File

@ -1,4 +1,4 @@
# test for BUG#45221 "Query "SELECT pk FROM C WHERE pk IN (SELECT # test for BUG#45221 "Query "SELECT pk FROM t1 WHERE pk IN (SELECT
# int_key)" failing" # int_key)" failing"
--source include/have_debug.inc --source include/have_debug.inc
@ -13,7 +13,7 @@
#/* Begin test case for query 0 */ #/* Begin test case for query 0 */
CREATE TABLE `CC` ( CREATE TABLE `t2` (
`pk` int(11) NOT NULL AUTO_INCREMENT, `pk` int(11) NOT NULL AUTO_INCREMENT,
`int_key` int(11) DEFAULT NULL, `int_key` int(11) DEFAULT NULL,
`date_nokey` date DEFAULT NULL, `date_nokey` date DEFAULT NULL,
@ -22,8 +22,8 @@ CREATE TABLE `CC` (
KEY `int_key` (`int_key`), KEY `int_key` (`int_key`),
KEY `varchar_key` (`int_key`) KEY `varchar_key` (`int_key`)
) ENGINE=MyISAM AUTO_INCREMENT=30 DEFAULT CHARSET=latin1; ) ENGINE=MyISAM AUTO_INCREMENT=30 DEFAULT CHARSET=latin1;
INSERT INTO `CC` VALUES (10,8,NULL,'2002-02-26 06:14:37'),(11,9,'2006-06-14','1900-01-01 00:00:00'),(12,9,'2002-09-12','2006-12-03 09:37:26'),(13,186,'2005-02-15','2008-05-26 12:27:10'),(14,NULL,NULL,'2004-12-14 16:37:30'),(15,2,'2008-11-04','2003-02-11 21:19:41'),(16,3,'2004-09-04','2009-10-18 02:27:49'),(17,0,'2006-06-05','2000-09-26 07:45:57'),(18,133,'1900-01-01',NULL),(19,1,'1900-01-01','2005-11-10 12:40:29'),(20,8,'1900-01-01','2009-04-25 00:00:00'),(21,5,'2005-01-13','2002-11-27 00:00:00'),(22,5,'2006-05-21','2004-01-26 20:32:32'),(23,8,'2003-09-08','2007-10-26 11:41:40'),(24,6,'2006-12-23','2005-10-07 00:00:00'),(25,51,'2006-10-15','2000-07-15 05:00:34'),(26,4,'2005-04-06','2000-04-03 16:33:32'),(27,7,'2008-04-07',NULL),(28,6,'2006-10-10','2001-04-25 01:26:12'),(29,4,'1900-01-01','2000-12-27 00:00:00'); INSERT INTO `t2` VALUES (10,8,NULL,'2002-02-26 06:14:37'),(11,9,'2006-06-14','1900-01-01 00:00:00'),(12,9,'2002-09-12','2006-12-03 09:37:26'),(13,186,'2005-02-15','2008-05-26 12:27:10'),(14,NULL,NULL,'2004-12-14 16:37:30'),(15,2,'2008-11-04','2003-02-11 21:19:41'),(16,3,'2004-09-04','2009-10-18 02:27:49'),(17,0,'2006-06-05','2000-09-26 07:45:57'),(18,133,'1900-01-01',NULL),(19,1,'1900-01-01','2005-11-10 12:40:29'),(20,8,'1900-01-01','2009-04-25 00:00:00'),(21,5,'2005-01-13','2002-11-27 00:00:00'),(22,5,'2006-05-21','2004-01-26 20:32:32'),(23,8,'2003-09-08','2007-10-26 11:41:40'),(24,6,'2006-12-23','2005-10-07 00:00:00'),(25,51,'2006-10-15','2000-07-15 05:00:34'),(26,4,'2005-04-06','2000-04-03 16:33:32'),(27,7,'2008-04-07',NULL),(28,6,'2006-10-10','2001-04-25 01:26:12'),(29,4,'1900-01-01','2000-12-27 00:00:00');
CREATE TABLE `C` ( CREATE TABLE t1 (
`pk` int(11) NOT NULL AUTO_INCREMENT, `pk` int(11) NOT NULL AUTO_INCREMENT,
`int_key` int(11) DEFAULT NULL, `int_key` int(11) DEFAULT NULL,
`date_nokey` date DEFAULT NULL, `date_nokey` date DEFAULT NULL,
@ -32,29 +32,29 @@ CREATE TABLE `C` (
KEY `int_key` (`int_key`), KEY `int_key` (`int_key`),
KEY `varchar_key` (`int_key`) KEY `varchar_key` (`int_key`)
) ENGINE=MyISAM AUTO_INCREMENT=21 DEFAULT CHARSET=latin1; ) ENGINE=MyISAM AUTO_INCREMENT=21 DEFAULT CHARSET=latin1;
INSERT INTO `C` VALUES (1,2,NULL,'2004-10-11 18:13:16'),(2,9,'2001-09-19',NULL),(3,3,'2004-09-12','1900-01-01 00:00:00'),(4,9,NULL,'2009-07-25 00:00:00'),(5,NULL,'2002-07-19',NULL),(6,9,'2002-12-16','2008-07-27 00:00:00'),(7,3,'2006-02-08','2002-11-13 16:37:31'),(8,8,'2006-08-28','1900-01-01 00:00:00'),(9,8,'2001-04-14','2003-12-10 00:00:00'),(10,53,'2000-01-05','2001-12-21 22:38:22'),(11,0,'2003-12-06','2008-12-13 23:16:44'),(12,5,'1900-01-01','2005-08-15 12:39:41'),(13,166,'2002-11-27',NULL),(14,3,NULL,'2006-09-11 12:06:14'),(15,0,'2003-05-27','2007-12-15 12:39:34'),(16,1,'2005-05-03','2005-08-09 00:00:00'),(17,9,'2001-04-18','2001-09-02 22:50:02'),(18,5,'2005-12-27','2005-12-16 22:58:11'),(19,6,'2004-08-20','2007-04-19 00:19:53'),(20,2,'1900-01-01','1900-01-01 00:00:00'); INSERT INTO t1 VALUES (1,2,NULL,'2004-10-11 18:13:16'),(2,9,'2001-09-19',NULL),(3,3,'2004-09-12','1900-01-01 00:00:00'),(4,9,NULL,'2009-07-25 00:00:00'),(5,NULL,'2002-07-19',NULL),(6,9,'2002-12-16','2008-07-27 00:00:00'),(7,3,'2006-02-08','2002-11-13 16:37:31'),(8,8,'2006-08-28','1900-01-01 00:00:00'),(9,8,'2001-04-14','2003-12-10 00:00:00'),(10,53,'2000-01-05','2001-12-21 22:38:22'),(11,0,'2003-12-06','2008-12-13 23:16:44'),(12,5,'1900-01-01','2005-08-15 12:39:41'),(13,166,'2002-11-27',NULL),(14,3,NULL,'2006-09-11 12:06:14'),(15,0,'2003-05-27','2007-12-15 12:39:34'),(16,1,'2005-05-03','2005-08-09 00:00:00'),(17,9,'2001-04-18','2001-09-02 22:50:02'),(18,5,'2005-12-27','2005-12-16 22:58:11'),(19,6,'2004-08-20','2007-04-19 00:19:53'),(20,2,'1900-01-01','1900-01-01 00:00:00');
SELECT `pk` SELECT `pk`
FROM C OUTR FROM t1 OUTR
WHERE `pk` IN ( WHERE `pk` IN (
SELECT `int_key` SELECT `int_key`
FROM CC FROM t2
WHERE `date_nokey` < `datetime_nokey` XOR OUTR .`date_nokey` ) ; WHERE `date_nokey` < `datetime_nokey` XOR OUTR .`date_nokey` ) ;
SELECT `pk` SELECT `pk`
FROM C FROM t1
WHERE `pk` IN ( WHERE `pk` IN (
SELECT `int_key` SELECT `int_key`
FROM CC FROM t2
WHERE `date_nokey` < `datetime_nokey` XOR '2009-11-25' ) ; WHERE `date_nokey` < `datetime_nokey` XOR '2009-11-25' ) ;
DROP TABLE CC; DROP TABLE t2;
DROP TABLE C; DROP TABLE t1;
#/* End of test case for query 0 */ #/* End of test case for query 0 */
#/* Begin test case for query 1 */ #/* Begin test case for query 1 */
CREATE TABLE `CC` ( CREATE TABLE `t2` (
`pk` int(11) NOT NULL AUTO_INCREMENT, `pk` int(11) NOT NULL AUTO_INCREMENT,
`int_nokey` int(11) DEFAULT NULL, `int_nokey` int(11) DEFAULT NULL,
`int_key` int(11) DEFAULT NULL, `int_key` int(11) DEFAULT NULL,
@ -66,8 +66,8 @@ CREATE TABLE `CC` (
KEY `datetime_key` (`datetime_key`), KEY `datetime_key` (`datetime_key`),
KEY `varchar_key` (`int_key`) KEY `varchar_key` (`int_key`)
) ENGINE=MyISAM AUTO_INCREMENT=30 DEFAULT CHARSET=latin1; ) ENGINE=MyISAM AUTO_INCREMENT=30 DEFAULT CHARSET=latin1;
INSERT INTO `CC` VALUES (10,7,8,NULL,'2002-02-26 06:14:37','2002-02-26 06:14:37'),(11,1,9,'2006-06-14','1900-01-01 00:00:00','1900-01-01 00:00:00'),(12,5,9,'2002-09-12','2006-12-03 09:37:26','2006-12-03 09:37:26'),(13,3,186,'2005-02-15','2008-05-26 12:27:10','2008-05-26 12:27:10'),(14,6,NULL,NULL,'2004-12-14 16:37:30','2004-12-14 16:37:30'),(15,92,2,'2008-11-04','2003-02-11 21:19:41','2003-02-11 21:19:41'),(16,7,3,'2004-09-04','2009-10-18 02:27:49','2009-10-18 02:27:49'),(17,NULL,0,'2006-06-05','2000-09-26 07:45:57','2000-09-26 07:45:57'),(18,3,133,'1900-01-01',NULL,NULL),(19,5,1,'1900-01-01','2005-11-10 12:40:29','2005-11-10 12:40:29'),(20,1,8,'1900-01-01','2009-04-25 00:00:00','2009-04-25 00:00:00'),(21,2,5,'2005-01-13','2002-11-27 00:00:00','2002-11-27 00:00:00'),(22,NULL,5,'2006-05-21','2004-01-26 20:32:32','2004-01-26 20:32:32'),(23,1,8,'2003-09-08','2007-10-26 11:41:40','2007-10-26 11:41:40'),(24,0,6,'2006-12-23','2005-10-07 00:00:00','2005-10-07 00:00:00'),(25,210,51,'2006-10-15','2000-07-15 05:00:34','2000-07-15 05:00:34'),(26,8,4,'2005-04-06','2000-04-03 16:33:32','2000-04-03 16:33:32'),(27,7,7,'2008-04-07',NULL,NULL),(28,5,6,'2006-10-10','2001-04-25 01:26:12','2001-04-25 01:26:12'),(29,NULL,4,'1900-01-01','2000-12-27 00:00:00','2000-12-27 00:00:00'); INSERT INTO `t2` VALUES (10,7,8,NULL,'2002-02-26 06:14:37','2002-02-26 06:14:37'),(11,1,9,'2006-06-14','1900-01-01 00:00:00','1900-01-01 00:00:00'),(12,5,9,'2002-09-12','2006-12-03 09:37:26','2006-12-03 09:37:26'),(13,3,186,'2005-02-15','2008-05-26 12:27:10','2008-05-26 12:27:10'),(14,6,NULL,NULL,'2004-12-14 16:37:30','2004-12-14 16:37:30'),(15,92,2,'2008-11-04','2003-02-11 21:19:41','2003-02-11 21:19:41'),(16,7,3,'2004-09-04','2009-10-18 02:27:49','2009-10-18 02:27:49'),(17,NULL,0,'2006-06-05','2000-09-26 07:45:57','2000-09-26 07:45:57'),(18,3,133,'1900-01-01',NULL,NULL),(19,5,1,'1900-01-01','2005-11-10 12:40:29','2005-11-10 12:40:29'),(20,1,8,'1900-01-01','2009-04-25 00:00:00','2009-04-25 00:00:00'),(21,2,5,'2005-01-13','2002-11-27 00:00:00','2002-11-27 00:00:00'),(22,NULL,5,'2006-05-21','2004-01-26 20:32:32','2004-01-26 20:32:32'),(23,1,8,'2003-09-08','2007-10-26 11:41:40','2007-10-26 11:41:40'),(24,0,6,'2006-12-23','2005-10-07 00:00:00','2005-10-07 00:00:00'),(25,210,51,'2006-10-15','2000-07-15 05:00:34','2000-07-15 05:00:34'),(26,8,4,'2005-04-06','2000-04-03 16:33:32','2000-04-03 16:33:32'),(27,7,7,'2008-04-07',NULL,NULL),(28,5,6,'2006-10-10','2001-04-25 01:26:12','2001-04-25 01:26:12'),(29,NULL,4,'1900-01-01','2000-12-27 00:00:00','2000-12-27 00:00:00');
CREATE TABLE `C` ( CREATE TABLE t1 (
`pk` int(11) NOT NULL AUTO_INCREMENT, `pk` int(11) NOT NULL AUTO_INCREMENT,
`int_nokey` int(11) DEFAULT NULL, `int_nokey` int(11) DEFAULT NULL,
`int_key` int(11) DEFAULT NULL, `int_key` int(11) DEFAULT NULL,
@ -79,19 +79,19 @@ CREATE TABLE `C` (
KEY `datetime_key` (`datetime_key`), KEY `datetime_key` (`datetime_key`),
KEY `varchar_key` (`int_key`) KEY `varchar_key` (`int_key`)
) ENGINE=MyISAM AUTO_INCREMENT=21 DEFAULT CHARSET=latin1; ) ENGINE=MyISAM AUTO_INCREMENT=21 DEFAULT CHARSET=latin1;
INSERT INTO `C` VALUES (1,NULL,2,NULL,'2004-10-11 18:13:16','2004-10-11 18:13:16'),(2,7,9,'2001-09-19',NULL,NULL),(3,9,3,'2004-09-12','1900-01-01 00:00:00','1900-01-01 00:00:00'),(4,7,9,NULL,'2009-07-25 00:00:00','2009-07-25 00:00:00'),(5,4,NULL,'2002-07-19',NULL,NULL),(6,2,9,'2002-12-16','2008-07-27 00:00:00','2008-07-27 00:00:00'),(7,6,3,'2006-02-08','2002-11-13 16:37:31','2002-11-13 16:37:31'),(8,8,8,'2006-08-28','1900-01-01 00:00:00','1900-01-01 00:00:00'),(9,NULL,8,'2001-04-14','2003-12-10 00:00:00','2003-12-10 00:00:00'),(10,5,53,'2000-01-05','2001-12-21 22:38:22','2001-12-21 22:38:22'),(11,NULL,0,'2003-12-06','2008-12-13 23:16:44','2008-12-13 23:16:44'),(12,6,5,'1900-01-01','2005-08-15 12:39:41','2005-08-15 12:39:41'),(13,188,166,'2002-11-27',NULL,NULL),(14,2,3,NULL,'2006-09-11 12:06:14','2006-09-11 12:06:14'),(15,1,0,'2003-05-27','2007-12-15 12:39:34','2007-12-15 12:39:34'),(16,1,1,'2005-05-03','2005-08-09 00:00:00','2005-08-09 00:00:00'),(17,0,9,'2001-04-18','2001-09-02 22:50:02','2001-09-02 22:50:02'),(18,9,5,'2005-12-27','2005-12-16 22:58:11','2005-12-16 22:58:11'),(19,NULL,6,'2004-08-20','2007-04-19 00:19:53','2007-04-19 00:19:53'),(20,4,2,'1900-01-01','1900-01-01 00:00:00','1900-01-01 00:00:00'); INSERT INTO t1 VALUES (1,NULL,2,NULL,'2004-10-11 18:13:16','2004-10-11 18:13:16'),(2,7,9,'2001-09-19',NULL,NULL),(3,9,3,'2004-09-12','1900-01-01 00:00:00','1900-01-01 00:00:00'),(4,7,9,NULL,'2009-07-25 00:00:00','2009-07-25 00:00:00'),(5,4,NULL,'2002-07-19',NULL,NULL),(6,2,9,'2002-12-16','2008-07-27 00:00:00','2008-07-27 00:00:00'),(7,6,3,'2006-02-08','2002-11-13 16:37:31','2002-11-13 16:37:31'),(8,8,8,'2006-08-28','1900-01-01 00:00:00','1900-01-01 00:00:00'),(9,NULL,8,'2001-04-14','2003-12-10 00:00:00','2003-12-10 00:00:00'),(10,5,53,'2000-01-05','2001-12-21 22:38:22','2001-12-21 22:38:22'),(11,NULL,0,'2003-12-06','2008-12-13 23:16:44','2008-12-13 23:16:44'),(12,6,5,'1900-01-01','2005-08-15 12:39:41','2005-08-15 12:39:41'),(13,188,166,'2002-11-27',NULL,NULL),(14,2,3,NULL,'2006-09-11 12:06:14','2006-09-11 12:06:14'),(15,1,0,'2003-05-27','2007-12-15 12:39:34','2007-12-15 12:39:34'),(16,1,1,'2005-05-03','2005-08-09 00:00:00','2005-08-09 00:00:00'),(17,0,9,'2001-04-18','2001-09-02 22:50:02','2001-09-02 22:50:02'),(18,9,5,'2005-12-27','2005-12-16 22:58:11','2005-12-16 22:58:11'),(19,NULL,6,'2004-08-20','2007-04-19 00:19:53','2007-04-19 00:19:53'),(20,4,2,'1900-01-01','1900-01-01 00:00:00','1900-01-01 00:00:00');
SELECT OUTR . `pk` AS X SELECT OUTR . `pk` AS X
FROM C AS OUTR FROM t1 AS OUTR
WHERE OUTR . `pk` IN ( WHERE OUTR . `pk` IN (
SELECT INNR . `int_key` AS Y SELECT INNR . `int_key` AS Y
FROM CC AS INNR FROM t2 AS INNR
WHERE INNR . `date_nokey` < INNR . `datetime_nokey` XOR OUTR . `date_nokey` BETWEEN '2004-07-10' AND '2009-11-25' WHERE INNR . `date_nokey` < INNR . `datetime_nokey` XOR OUTR . `date_nokey` BETWEEN '2004-07-10' AND '2009-11-25'
ORDER BY INNR . `int_nokey` ) AND ( OUTR . `datetime_key` BETWEEN '2000-05-25' AND '2004-08-07' OR OUTR . `datetime_nokey` = '2007-10-24' ) ORDER BY INNR . `int_nokey` ) AND ( OUTR . `datetime_key` BETWEEN '2000-05-25' AND '2004-08-07' OR OUTR . `datetime_nokey` = '2007-10-24' )
ORDER BY OUTR . `int_key` , OUTR . `pk`; ORDER BY OUTR . `int_key` , OUTR . `pk`;
DROP TABLE CC; DROP TABLE t2;
DROP TABLE C; DROP TABLE t1;
#/* End of test case for query 1 */ #/* End of test case for query 1 */

View File

@ -8,11 +8,13 @@ partition pa3 max_rows=30 min_rows=4,
partition pa4 max_rows=40 min_rows=2); partition pa4 max_rows=40 min_rows=2);
show create table t1; show create table t1;
insert into t1 values (repeat('a',255)), ('b'), (repeat('a',128)), (repeat('b',64)); insert into t1 values (repeat('a',255)), ('b'), (repeat('a',128)), (repeat('b',64));
--sorted_result
select hex(a) from t1; select hex(a) from t1;
select a from t1 where substr(a,1,2)='b\0'; select a from t1 where substr(a,1,2)='b\0';
update t1 set a='cc' where substr(a,1,2)= 'b\0'; update t1 set a='cc' where substr(a,1,2)= 'b\0';
select a from t1 where substr(a,1,1)='c'; select a from t1 where substr(a,1,1)='c';
delete from t1 where substr(a,1,2)='cc'; delete from t1 where substr(a,1,2)='cc';
--sorted_result
select hex(a) from t1; select hex(a) from t1;
drop table t1; drop table t1;
@ -33,6 +35,7 @@ inc $letter;
commit; commit;
--enable_query_log --enable_query_log
select count(*) from t2; select count(*) from t2;
--sorted_result
select hex(a) from t2; select hex(a) from t2;
drop table t2; drop table t2;

View File

@ -8,10 +8,12 @@ partition pa3 max_rows=30 min_rows=4,
partition pa4 max_rows=40 min_rows=2); partition pa4 max_rows=40 min_rows=2);
show create table t1; show create table t1;
insert into t1 values (repeat('a',255)), ('b'), (repeat('a',128)), (repeat('b',64)); insert into t1 values (repeat('a',255)), ('b'), (repeat('a',128)), (repeat('b',64));
--sorted_result
select * from t1; select * from t1;
select * from t1 where a='b'; select * from t1 where a='b';
update t1 set a='bb' where a='b'; update t1 set a='bb' where a='b';
delete from t1 where a='bb'; delete from t1 where a='bb';
--sorted_result
select * from t1; select * from t1;
drop table t1; drop table t1;
@ -32,6 +34,7 @@ inc $letter;
commit; commit;
--enable_query_log --enable_query_log
select count(*) from t2; select count(*) from t2;
--sorted_result
select * from t2; select * from t2;
drop table t2; drop table t2;

View File

@ -8,11 +8,13 @@ partition pa3 max_rows=30 min_rows=4,
partition pa4 max_rows=40 min_rows=2); partition pa4 max_rows=40 min_rows=2);
show create table t1; show create table t1;
insert into t1 values ('A'),('D'),('L'),('G'); insert into t1 values ('A'),('D'),('L'),('G');
--sorted_result
select * from t1; select * from t1;
select * from t1 where a='A'; select * from t1 where a='A';
update t1 set a='E' where a='L'; update t1 set a='E' where a='L';
select * from t1; select * from t1;
delete from t1 where a='E'; delete from t1 where a='E';
--sorted_result
select * from t1; select * from t1;
drop table t1; drop table t1;
@ -37,6 +39,7 @@ commit;
--enable_query_log --enable_query_log
insert into t2 values ('1'),('2'),('3'),('4'),('5'),('6'),('7'),('8'),('9'),('0'); insert into t2 values ('1'),('2'),('3'),('4'),('5'),('6'),('7'),('8'),('9'),('0');
select count(*) from t2; select count(*) from t2;
--sorted_result
select * from t2; select * from t2;
drop table t2; drop table t2;

View File

@ -8,10 +8,12 @@ partition pa3 max_rows=30 min_rows=4,
partition pa4 max_rows=40 min_rows=2); partition pa4 max_rows=40 min_rows=2);
show create table t1; show create table t1;
insert into t1 values (repeat('a',767)), ('b'), (repeat('a',500)), (repeat('b',64)); insert into t1 values (repeat('a',767)), ('b'), (repeat('a',500)), (repeat('b',64));
--sorted_result
select * from t1; select * from t1;
select * from t1 where a='b'; select * from t1 where a='b';
update t1 set a='bb' where a='b'; update t1 set a='bb' where a='b';
delete from t1 where a='bb'; delete from t1 where a='bb';
--sorted_result
select * from t1; select * from t1;
drop table t1; drop table t1;
@ -32,6 +34,7 @@ inc $letter;
commit; commit;
--enable_query_log --enable_query_log
select count(*) from t2; select count(*) from t2;
--sorted_result
select * from t2; select * from t2;
drop table t2; drop table t2;

View File

@ -8,10 +8,12 @@ partition pa3 max_rows=30 min_rows=4,
partition pa4 max_rows=40 min_rows=2); partition pa4 max_rows=40 min_rows=2);
show create table t1; show create table t1;
insert into t1 values (repeat('a',767)), ('b'), (repeat('a',500)), (repeat('b',64)); insert into t1 values (repeat('a',767)), ('b'), (repeat('a',500)), (repeat('b',64));
--sorted_result
select * from t1; select * from t1;
select * from t1 where a='b'; select * from t1 where a='b';
update t1 set a='bb' where a='b'; update t1 set a='bb' where a='b';
delete from t1 where a='bb'; delete from t1 where a='bb';
--sorted_result
select * from t1; select * from t1;
drop table t1; drop table t1;
@ -32,6 +34,7 @@ inc $letter;
commit; commit;
--enable_query_log --enable_query_log
select count(*) from t2; select count(*) from t2;
--sorted_result
select * from t2; select * from t2;
drop table t2; drop table t2;

View File

@ -0,0 +1,4 @@
if (!`SELECT count(*) FROM performance_schema.performance_timers WHERE timer_name='CYCLE' AND timer_frequency IS NOT NULL`)
{
Skip Need performance timer CYCLE;
}

View File

@ -107,3 +107,14 @@ select mysql_errno, returned_sqlstate, message_text, errors, warnings from
performance_schema.events_statements_history_long where errors > 0; performance_schema.events_statements_history_long where errors > 0;
mysql_errno returned_sqlstate message_text errors warnings mysql_errno returned_sqlstate message_text errors warnings
1146 42S02 Table 'test.t1' doesn't exist 1 0 1146 42S02 Table 'test.t1' doesn't exist 1 0
use performance_schema;
truncate performance_schema.events_statements_history;
select 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' AS A;
A
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
select _utf8mb4 'васÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑвасÑ' as B;
B
вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>вас<EFBFBD>
select count(*) from events_statements_history where sql_text like "%...";
count(*)
2

View File

@ -554,7 +554,7 @@ ERROR 42000: DROP command denied to user 'pfs_user_4'@'localhost' for table 'eve
# #
# Grant access to change tables with the root account # Grant access to change tables with the root account
GRANT UPDATE ON performance_schema.setup_consumers TO pfs_user_4; GRANT UPDATE ON performance_schema.setup_consumers TO pfs_user_4;
GRANT UPDATE ON performance_schema.setup_timers TO pfs_user_4; GRANT UPDATE, SELECT ON performance_schema.setup_timers TO pfs_user_4;
GRANT UPDATE, SELECT ON performance_schema.setup_instruments TO pfs_user_4; GRANT UPDATE, SELECT ON performance_schema.setup_instruments TO pfs_user_4;
GRANT DROP ON performance_schema.events_waits_current TO pfs_user_4; GRANT DROP ON performance_schema.events_waits_current TO pfs_user_4;
GRANT DROP ON performance_schema.events_waits_history TO pfs_user_4; GRANT DROP ON performance_schema.events_waits_history TO pfs_user_4;
@ -565,7 +565,7 @@ UPDATE performance_schema.setup_instruments SET enabled = 'YES'
WHERE name LIKE 'wait/synch/mutex/%' WHERE name LIKE 'wait/synch/mutex/%'
OR name LIKE 'wait/synch/rwlock/%'; OR name LIKE 'wait/synch/rwlock/%';
UPDATE performance_schema.setup_consumers SET enabled = 'YES'; UPDATE performance_schema.setup_consumers SET enabled = 'YES';
UPDATE performance_schema.setup_timers SET timer_name = 'TICK'; UPDATE performance_schema.setup_timers SET timer_name = 'TICK' WHERE name <> "wait";
TRUNCATE TABLE performance_schema.events_waits_history_long; TRUNCATE TABLE performance_schema.events_waits_history_long;
TRUNCATE TABLE performance_schema.events_waits_history; TRUNCATE TABLE performance_schema.events_waits_history;
TRUNCATE TABLE performance_schema.events_waits_current; TRUNCATE TABLE performance_schema.events_waits_current;
@ -576,6 +576,5 @@ flush privileges;
UPDATE performance_schema.setup_instruments SET enabled = 'YES', timed = 'YES'; UPDATE performance_schema.setup_instruments SET enabled = 'YES', timed = 'YES';
UPDATE performance_schema.setup_consumers SET enabled = 'YES'; UPDATE performance_schema.setup_consumers SET enabled = 'YES';
UPDATE performance_schema.setup_timers SET timer_name = 'MICROSECOND' where name="idle"; UPDATE performance_schema.setup_timers SET timer_name = 'MICROSECOND' where name="idle";
UPDATE performance_schema.setup_timers SET timer_name = 'CYCLE' where name="wait";
UPDATE performance_schema.setup_timers SET timer_name = 'NANOSECOND' where name="stage"; UPDATE performance_schema.setup_timers SET timer_name = 'NANOSECOND' where name="stage";
UPDATE performance_schema.setup_timers SET timer_name = 'NANOSECOND' where name="statement"; UPDATE performance_schema.setup_timers SET timer_name = 'NANOSECOND' where name="statement";

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