mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge 5.5
This commit is contained in:
@ -9,6 +9,7 @@
|
|||||||
*.core
|
*.core
|
||||||
*.d
|
*.d
|
||||||
*.da
|
*.da
|
||||||
|
*.dir
|
||||||
*.dll
|
*.dll
|
||||||
*.dylib
|
*.dylib
|
||||||
*.exe
|
*.exe
|
||||||
@ -31,6 +32,7 @@
|
|||||||
*.pdb
|
*.pdb
|
||||||
*.reject
|
*.reject
|
||||||
*.res
|
*.res
|
||||||
|
*.rule
|
||||||
*.sbr
|
*.sbr
|
||||||
*.so
|
*.so
|
||||||
*.so.*
|
*.so.*
|
||||||
@ -38,6 +40,8 @@
|
|||||||
*.user
|
*.user
|
||||||
*.vcproj
|
*.vcproj
|
||||||
*.vcproj.cmake
|
*.vcproj.cmake
|
||||||
|
*.vcxproj
|
||||||
|
*.vcxproj.filters
|
||||||
*/*.dir/*
|
*/*.dir/*
|
||||||
*/*_pure_*warnings
|
*/*_pure_*warnings
|
||||||
*/.deps
|
*/.deps
|
||||||
@ -46,7 +50,7 @@
|
|||||||
*/debug/*
|
*/debug/*
|
||||||
*/minsizerel/*
|
*/minsizerel/*
|
||||||
*/release/*
|
*/release/*
|
||||||
*/relwithdebinfo/*
|
RelWithDebInfo
|
||||||
*~
|
*~
|
||||||
.*.swp
|
.*.swp
|
||||||
./CMakeCache.txt
|
./CMakeCache.txt
|
||||||
|
2
VERSION
2
VERSION
@ -1,4 +1,4 @@
|
|||||||
MYSQL_VERSION_MAJOR=5
|
MYSQL_VERSION_MAJOR=5
|
||||||
MYSQL_VERSION_MINOR=5
|
MYSQL_VERSION_MINOR=5
|
||||||
MYSQL_VERSION_PATCH=11
|
MYSQL_VERSION_PATCH=13
|
||||||
MYSQL_VERSION_EXTRA=
|
MYSQL_VERSION_EXTRA=
|
||||||
|
@ -75,6 +75,7 @@ enum options_client
|
|||||||
OPT_SLAP_POST_SYSTEM,
|
OPT_SLAP_POST_SYSTEM,
|
||||||
OPT_SLAP_COMMIT,
|
OPT_SLAP_COMMIT,
|
||||||
OPT_SLAP_DETACH,
|
OPT_SLAP_DETACH,
|
||||||
|
OPT_SLAP_NO_DROP,
|
||||||
OPT_MYSQL_REPLACE_INTO, OPT_BASE64_OUTPUT_MODE, OPT_SERVER_ID,
|
OPT_MYSQL_REPLACE_INTO, OPT_BASE64_OUTPUT_MODE, OPT_SERVER_ID,
|
||||||
OPT_FIX_TABLE_NAMES, OPT_FIX_DB_NAMES, OPT_SSL_VERIFY_SERVER_CERT,
|
OPT_FIX_TABLE_NAMES, OPT_FIX_DB_NAMES, OPT_SSL_VERIFY_SERVER_CERT,
|
||||||
OPT_AUTO_VERTICAL_OUTPUT,
|
OPT_AUTO_VERTICAL_OUTPUT,
|
||||||
|
@ -369,7 +369,8 @@ int main(int argc,char *argv[])
|
|||||||
/* Return 0 if all commands are PING */
|
/* Return 0 if all commands are PING */
|
||||||
for (; argc > 0; argv++, argc--)
|
for (; argc > 0; argv++, argc--)
|
||||||
{
|
{
|
||||||
if (find_type(argv[0], &command_typelib, 2) != ADMIN_PING)
|
if (find_type(argv[0], &command_typelib, FIND_TYPE_BASIC) !=
|
||||||
|
ADMIN_PING)
|
||||||
{
|
{
|
||||||
error= 1;
|
error= 1;
|
||||||
break;
|
break;
|
||||||
@ -592,7 +593,7 @@ static int execute_commands(MYSQL *mysql,int argc, char **argv)
|
|||||||
|
|
||||||
for (; argc > 0 ; argv++,argc--)
|
for (; argc > 0 ; argv++,argc--)
|
||||||
{
|
{
|
||||||
switch (find_type(argv[0],&command_typelib,2)) {
|
switch (find_type(argv[0],&command_typelib, FIND_TYPE_BASIC)) {
|
||||||
case ADMIN_CREATE:
|
case ADMIN_CREATE:
|
||||||
{
|
{
|
||||||
char buff[FN_REFLEN+20];
|
char buff[FN_REFLEN+20];
|
||||||
@ -931,7 +932,7 @@ static int execute_commands(MYSQL *mysql,int argc, char **argv)
|
|||||||
|
|
||||||
if (typed_password[0])
|
if (typed_password[0])
|
||||||
{
|
{
|
||||||
bool old= (find_type(argv[0], &command_typelib, 2) ==
|
bool old= (find_type(argv[0], &command_typelib, FIND_TYPE_BASIC) ==
|
||||||
ADMIN_OLD_PASSWORD);
|
ADMIN_OLD_PASSWORD);
|
||||||
#ifdef __WIN__
|
#ifdef __WIN__
|
||||||
size_t pw_len= strlen(typed_password);
|
size_t pw_len= strlen(typed_password);
|
||||||
|
@ -714,10 +714,18 @@ Exit_status process_event(PRINT_EVENT_INFO *print_event_info, Log_event *ev,
|
|||||||
*/
|
*/
|
||||||
start_datetime= 0;
|
start_datetime= 0;
|
||||||
offset= 0; // print everything and protect against cycling rec_count
|
offset= 0; // print everything and protect against cycling rec_count
|
||||||
|
/*
|
||||||
|
Skip events according to the --server-id flag. However, don't
|
||||||
|
skip format_description or rotate events, because they they
|
||||||
|
are really "global" events that are relevant for the entire
|
||||||
|
binlog, even if they have a server_id. Also, we have to read
|
||||||
|
the format_description event so that we can parse subsequent
|
||||||
|
events.
|
||||||
|
*/
|
||||||
|
if (ev_type != ROTATE_EVENT &&
|
||||||
|
server_id && (server_id != ev->server_id))
|
||||||
|
goto end;
|
||||||
}
|
}
|
||||||
if (server_id && (server_id != ev->server_id))
|
|
||||||
/* skip just this event, continue processing the log. */
|
|
||||||
goto end;
|
|
||||||
if (((my_time_t)(ev->when) >= stop_datetime)
|
if (((my_time_t)(ev->when) >= stop_datetime)
|
||||||
|| (pos >= stop_position_mot))
|
|| (pos >= stop_position_mot))
|
||||||
{
|
{
|
||||||
|
@ -42,7 +42,7 @@ static char *opt_password = 0, *current_user = 0,
|
|||||||
*default_charset= 0, *current_host= 0;
|
*default_charset= 0, *current_host= 0;
|
||||||
static char *opt_plugin_dir= 0, *opt_default_auth= 0;
|
static char *opt_plugin_dir= 0, *opt_default_auth= 0;
|
||||||
static int first_error = 0;
|
static int first_error = 0;
|
||||||
DYNAMIC_ARRAY tables4repair;
|
DYNAMIC_ARRAY tables4repair, tables4rebuild;
|
||||||
#ifdef HAVE_SMEM
|
#ifdef HAVE_SMEM
|
||||||
static char *shared_memory_base_name=0;
|
static char *shared_memory_base_name=0;
|
||||||
#endif
|
#endif
|
||||||
@ -626,6 +626,27 @@ static int fix_database_storage_name(const char *name)
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int rebuild_table(char *name)
|
||||||
|
{
|
||||||
|
char *query, *ptr;
|
||||||
|
int rc= 0;
|
||||||
|
query= (char*)my_malloc(sizeof(char) * (12 + fixed_name_length(name) + 6 + 1),
|
||||||
|
MYF(MY_WME));
|
||||||
|
if (!query)
|
||||||
|
return 1;
|
||||||
|
ptr= strmov(query, "ALTER TABLE ");
|
||||||
|
ptr= fix_table_name(ptr, name);
|
||||||
|
ptr= strxmov(ptr, " FORCE", NullS);
|
||||||
|
if (mysql_real_query(sock, query, (uint)(ptr - query)))
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Failed to %s\n", query);
|
||||||
|
fprintf(stderr, "Error: %s\n", mysql_error(sock));
|
||||||
|
rc= 1;
|
||||||
|
}
|
||||||
|
my_free(query);
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
static int process_one_db(char *database)
|
static int process_one_db(char *database)
|
||||||
{
|
{
|
||||||
if (what_to_do == DO_UPGRADE)
|
if (what_to_do == DO_UPGRADE)
|
||||||
@ -739,7 +760,7 @@ static void print_result()
|
|||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
char prev[NAME_LEN*2+2];
|
char prev[NAME_LEN*2+2];
|
||||||
uint i;
|
uint i;
|
||||||
my_bool found_error=0;
|
my_bool found_error=0, table_rebuild=0;
|
||||||
|
|
||||||
res = mysql_use_result(sock);
|
res = mysql_use_result(sock);
|
||||||
|
|
||||||
@ -758,8 +779,14 @@ static void print_result()
|
|||||||
*/
|
*/
|
||||||
if (found_error && opt_auto_repair && what_to_do != DO_REPAIR &&
|
if (found_error && opt_auto_repair && what_to_do != DO_REPAIR &&
|
||||||
strcmp(row[3],"OK"))
|
strcmp(row[3],"OK"))
|
||||||
insert_dynamic(&tables4repair, (uchar*) prev);
|
{
|
||||||
|
if (table_rebuild)
|
||||||
|
insert_dynamic(&tables4rebuild, (uchar*) prev);
|
||||||
|
else
|
||||||
|
insert_dynamic(&tables4repair, (uchar*) prev);
|
||||||
|
}
|
||||||
found_error=0;
|
found_error=0;
|
||||||
|
table_rebuild=0;
|
||||||
if (opt_silent)
|
if (opt_silent)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -769,7 +796,11 @@ static void print_result()
|
|||||||
{
|
{
|
||||||
printf("%s\n%-9s: %s", row[0], row[2], row[3]);
|
printf("%s\n%-9s: %s", row[0], row[2], row[3]);
|
||||||
if (strcmp(row[2],"note"))
|
if (strcmp(row[2],"note"))
|
||||||
|
{
|
||||||
found_error=1;
|
found_error=1;
|
||||||
|
if (opt_auto_repair && strstr(row[3], "ALTER TABLE") != NULL)
|
||||||
|
table_rebuild=1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
printf("%-9s: %s", row[2], row[3]);
|
printf("%-9s: %s", row[2], row[3]);
|
||||||
@ -778,7 +809,12 @@ static void print_result()
|
|||||||
}
|
}
|
||||||
/* add the last table to be repaired to the list */
|
/* add the last table to be repaired to the list */
|
||||||
if (found_error && opt_auto_repair && what_to_do != DO_REPAIR)
|
if (found_error && opt_auto_repair && what_to_do != DO_REPAIR)
|
||||||
insert_dynamic(&tables4repair, (uchar*) prev);
|
{
|
||||||
|
if (table_rebuild)
|
||||||
|
insert_dynamic(&tables4rebuild, (uchar*) prev);
|
||||||
|
else
|
||||||
|
insert_dynamic(&tables4repair, (uchar*) prev);
|
||||||
|
}
|
||||||
mysql_free_result(res);
|
mysql_free_result(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -876,7 +912,8 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (opt_auto_repair &&
|
if (opt_auto_repair &&
|
||||||
my_init_dynamic_array(&tables4repair, sizeof(char)*(NAME_LEN*2+2),16,64))
|
(my_init_dynamic_array(&tables4repair, sizeof(char)*(NAME_LEN*2+2),16,64) ||
|
||||||
|
my_init_dynamic_array(&tables4rebuild, sizeof(char)*(NAME_LEN*2+2),16,64)))
|
||||||
{
|
{
|
||||||
first_error = 1;
|
first_error = 1;
|
||||||
goto end;
|
goto end;
|
||||||
@ -894,7 +931,7 @@ int main(int argc, char **argv)
|
|||||||
{
|
{
|
||||||
uint i;
|
uint i;
|
||||||
|
|
||||||
if (!opt_silent && tables4repair.elements)
|
if (!opt_silent && (tables4repair.elements || tables4rebuild.elements))
|
||||||
puts("\nRepairing tables");
|
puts("\nRepairing tables");
|
||||||
what_to_do = DO_REPAIR;
|
what_to_do = DO_REPAIR;
|
||||||
for (i = 0; i < tables4repair.elements ; i++)
|
for (i = 0; i < tables4repair.elements ; i++)
|
||||||
@ -902,11 +939,16 @@ int main(int argc, char **argv)
|
|||||||
char *name= (char*) dynamic_array_ptr(&tables4repair, i);
|
char *name= (char*) dynamic_array_ptr(&tables4repair, i);
|
||||||
handle_request_for_tables(name, fixed_name_length(name));
|
handle_request_for_tables(name, fixed_name_length(name));
|
||||||
}
|
}
|
||||||
|
for (i = 0; i < tables4rebuild.elements ; i++)
|
||||||
|
rebuild_table((char*) dynamic_array_ptr(&tables4rebuild, i));
|
||||||
}
|
}
|
||||||
end:
|
end:
|
||||||
dbDisconnect(current_host);
|
dbDisconnect(current_host);
|
||||||
if (opt_auto_repair)
|
if (opt_auto_repair)
|
||||||
|
{
|
||||||
delete_dynamic(&tables4repair);
|
delete_dynamic(&tables4repair);
|
||||||
|
delete_dynamic(&tables4rebuild);
|
||||||
|
}
|
||||||
my_free(opt_password);
|
my_free(opt_password);
|
||||||
#ifdef HAVE_SMEM
|
#ifdef HAVE_SMEM
|
||||||
my_free(shared_memory_base_name);
|
my_free(shared_memory_base_name);
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
|
/* Copyright (c) 2000, 2011, 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
|
||||||
@ -4650,7 +4650,7 @@ static ulong find_set(TYPELIB *lib, const char *x, uint length,
|
|||||||
for (; pos != end && *pos != ','; pos++) ;
|
for (; pos != end && *pos != ','; pos++) ;
|
||||||
var_len= (uint) (pos - start);
|
var_len= (uint) (pos - start);
|
||||||
strmake(buff, start, min(sizeof(buff) - 1, var_len));
|
strmake(buff, start, min(sizeof(buff) - 1, var_len));
|
||||||
find= find_type(buff, lib, var_len);
|
find= find_type(buff, lib, FIND_TYPE_BASIC);
|
||||||
if (!find)
|
if (!find)
|
||||||
{
|
{
|
||||||
*err_pos= (char*) start;
|
*err_pos= (char*) start;
|
||||||
|
@ -128,7 +128,7 @@ const char *delimiter= "\n";
|
|||||||
|
|
||||||
const char *create_schema_string= "mysqlslap";
|
const char *create_schema_string= "mysqlslap";
|
||||||
|
|
||||||
static my_bool opt_preserve= TRUE;
|
static my_bool opt_preserve= TRUE, opt_no_drop= FALSE;
|
||||||
static my_bool debug_info_flag= 0, debug_check_flag= 0;
|
static my_bool debug_info_flag= 0, debug_check_flag= 0;
|
||||||
static my_bool opt_only_print= FALSE;
|
static my_bool opt_only_print= FALSE;
|
||||||
static my_bool opt_compress= FALSE, tty_password= FALSE,
|
static my_bool opt_compress= FALSE, tty_password= FALSE,
|
||||||
@ -607,6 +607,8 @@ static struct my_option my_long_options[] =
|
|||||||
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"iterations", 'i', "Number of times to run the tests.", &iterations,
|
{"iterations", 'i', "Number of times to run the tests.", &iterations,
|
||||||
&iterations, 0, GET_UINT, REQUIRED_ARG, 1, 0, 0, 0, 0, 0},
|
&iterations, 0, GET_UINT, REQUIRED_ARG, 1, 0, 0, 0, 0, 0},
|
||||||
|
{"no-drop", OPT_SLAP_NO_DROP, "Do not drop the schema after the test.",
|
||||||
|
&opt_no_drop, &opt_no_drop, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"number-char-cols", 'x',
|
{"number-char-cols", 'x',
|
||||||
"Number of VARCHAR columns to create in table if specifying --auto-generate-sql.",
|
"Number of VARCHAR columns to create in table if specifying --auto-generate-sql.",
|
||||||
&num_char_cols_opt, &num_char_cols_opt, 0, GET_STR, REQUIRED_ARG,
|
&num_char_cols_opt, &num_char_cols_opt, 0, GET_STR, REQUIRED_ARG,
|
||||||
@ -1149,8 +1151,11 @@ get_options(int *argc,char ***argv)
|
|||||||
if (!user)
|
if (!user)
|
||||||
user= (char *)"root";
|
user= (char *)"root";
|
||||||
|
|
||||||
/* If something is created we clean it up, otherwise we leave schemas alone */
|
/*
|
||||||
if (create_string || auto_generate_sql)
|
If something is created and --no-drop is not specified, we drop the
|
||||||
|
schema.
|
||||||
|
*/
|
||||||
|
if (!opt_no_drop && (create_string || auto_generate_sql))
|
||||||
opt_preserve= FALSE;
|
opt_preserve= FALSE;
|
||||||
|
|
||||||
if (auto_generate_sql && (create_string || user_supplied_query))
|
if (auto_generate_sql && (create_string || user_supplied_query))
|
||||||
|
@ -8017,7 +8017,7 @@ void get_command_type(struct st_command* command)
|
|||||||
|
|
||||||
save= command->query[command->first_word_len];
|
save= command->query[command->first_word_len];
|
||||||
command->query[command->first_word_len]= 0;
|
command->query[command->first_word_len]= 0;
|
||||||
type= find_type(command->query, &command_typelib, 1+2);
|
type= find_type(command->query, &command_typelib, FIND_TYPE_NO_PREFIX);
|
||||||
command->query[command->first_word_len]= save;
|
command->query[command->first_word_len]= save;
|
||||||
if (type > 0)
|
if (type > 0)
|
||||||
{
|
{
|
||||||
@ -8334,13 +8334,15 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
var_set_string("MYSQLTEST_FILE", cur_file->file_name);
|
var_set_string("MYSQLTEST_FILE", cur_file->file_name);
|
||||||
init_re();
|
init_re();
|
||||||
|
|
||||||
|
/* Cursor protcol implies ps protocol */
|
||||||
|
if (cursor_protocol)
|
||||||
|
ps_protocol= 1;
|
||||||
|
|
||||||
ps_protocol_enabled= ps_protocol;
|
ps_protocol_enabled= ps_protocol;
|
||||||
sp_protocol_enabled= sp_protocol;
|
sp_protocol_enabled= sp_protocol;
|
||||||
view_protocol_enabled= view_protocol;
|
view_protocol_enabled= view_protocol;
|
||||||
cursor_protocol_enabled= cursor_protocol;
|
cursor_protocol_enabled= cursor_protocol;
|
||||||
/* Cursor protcol implies ps protocol */
|
|
||||||
if (cursor_protocol_enabled)
|
|
||||||
ps_protocol_enabled= 1;
|
|
||||||
|
|
||||||
st_connection *con= connections;
|
st_connection *con= connections;
|
||||||
#ifdef EMBEDDED_LIBRARY
|
#ifdef EMBEDDED_LIBRARY
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
# Global constants, only to be changed between major releases.
|
# Global constants, only to be changed between major releases.
|
||||||
#
|
#
|
||||||
|
|
||||||
SET(SHARED_LIB_MAJOR_VERSION "16")
|
SET(SHARED_LIB_MAJOR_VERSION "18")
|
||||||
SET(PROTOCOL_VERSION "10")
|
SET(PROTOCOL_VERSION "10")
|
||||||
SET(DOT_FRM_VERSION "6")
|
SET(DOT_FRM_VERSION "6")
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Copyright (C) 2010 Sun Microsystems, Inc
|
# Copyright (C) 2010, 2011, 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
|
||||||
@ -192,3 +192,4 @@ IF(NOT HAVE_SIZE_OF_SSIZE_T)
|
|||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
SET(FN_NO_CASE_SENSE 1)
|
SET(FN_NO_CASE_SENSE 1)
|
||||||
|
SET(USE_SYMDIR 1)
|
||||||
|
@ -76,9 +76,6 @@ SET(HAVE_FTRUNCATE CACHE INTERNAL "")
|
|||||||
SET(HAVE_GETADDRINFO 1 CACHE INTERNAL "")
|
SET(HAVE_GETADDRINFO 1 CACHE INTERNAL "")
|
||||||
SET(HAVE_GETCWD 1 CACHE INTERNAL "")
|
SET(HAVE_GETCWD 1 CACHE INTERNAL "")
|
||||||
SET(HAVE_GETHOSTBYADDR_R CACHE INTERNAL "")
|
SET(HAVE_GETHOSTBYADDR_R CACHE INTERNAL "")
|
||||||
SET(HAVE_GETHOSTBYNAME_R CACHE INTERNAL "")
|
|
||||||
SET(HAVE_GETHOSTBYNAME_R_GLIBC2_STYLE CACHE INTERNAL "")
|
|
||||||
SET(HAVE_GETHOSTBYNAME_R_RETURN_INT CACHE INTERNAL "")
|
|
||||||
SET(HAVE_GETHRTIME CACHE INTERNAL "")
|
SET(HAVE_GETHRTIME CACHE INTERNAL "")
|
||||||
SET(HAVE_GETLINE CACHE INTERNAL "")
|
SET(HAVE_GETLINE CACHE INTERNAL "")
|
||||||
SET(HAVE_GETNAMEINFO CACHE INTERNAL "")
|
SET(HAVE_GETNAMEINFO CACHE INTERNAL "")
|
||||||
|
@ -157,7 +157,6 @@
|
|||||||
#cmakedefine HAVE_GETADDRINFO 1
|
#cmakedefine HAVE_GETADDRINFO 1
|
||||||
#cmakedefine HAVE_GETCWD 1
|
#cmakedefine HAVE_GETCWD 1
|
||||||
#cmakedefine HAVE_GETHOSTBYADDR_R 1
|
#cmakedefine HAVE_GETHOSTBYADDR_R 1
|
||||||
#cmakedefine HAVE_GETHOSTBYNAME_R 1
|
|
||||||
#cmakedefine HAVE_GETHRTIME 1
|
#cmakedefine HAVE_GETHRTIME 1
|
||||||
#cmakedefine HAVE_GETLINE 1
|
#cmakedefine HAVE_GETLINE 1
|
||||||
#cmakedefine HAVE_GETNAMEINFO 1
|
#cmakedefine HAVE_GETNAMEINFO 1
|
||||||
@ -448,8 +447,6 @@
|
|||||||
|
|
||||||
|
|
||||||
#cmakedefine HAVE_SOLARIS_STYLE_GETHOST 1
|
#cmakedefine HAVE_SOLARIS_STYLE_GETHOST 1
|
||||||
#cmakedefine HAVE_GETHOSTBYNAME_R_GLIBC2_STYLE 1
|
|
||||||
#cmakedefine HAVE_GETHOSTBYNAME_R_RETURN_INT 1
|
|
||||||
|
|
||||||
#cmakedefine MY_ATOMIC_MODE_DUMMY 1
|
#cmakedefine MY_ATOMIC_MODE_DUMMY 1
|
||||||
#cmakedefine MY_ATOMIC_MODE_RWLOCKS 1
|
#cmakedefine MY_ATOMIC_MODE_RWLOCKS 1
|
||||||
@ -513,6 +510,7 @@
|
|||||||
#cmakedefine EXTRA_DEBUG 1
|
#cmakedefine EXTRA_DEBUG 1
|
||||||
#cmakedefine BACKUP_TEST 1
|
#cmakedefine BACKUP_TEST 1
|
||||||
#cmakedefine CYBOZU 1
|
#cmakedefine CYBOZU 1
|
||||||
|
#cmakedefine USE_SYMDIR 1
|
||||||
|
|
||||||
/* Character sets and collations */
|
/* Character sets and collations */
|
||||||
#cmakedefine MYSQL_DEFAULT_CHARSET_NAME "@MYSQL_DEFAULT_CHARSET_NAME@"
|
#cmakedefine MYSQL_DEFAULT_CHARSET_NAME "@MYSQL_DEFAULT_CHARSET_NAME@"
|
||||||
|
@ -350,7 +350,6 @@ CHECK_FUNCTION_EXISTS (fseeko HAVE_FSEEKO)
|
|||||||
CHECK_FUNCTION_EXISTS (fsync HAVE_FSYNC)
|
CHECK_FUNCTION_EXISTS (fsync HAVE_FSYNC)
|
||||||
CHECK_FUNCTION_EXISTS (getcwd HAVE_GETCWD)
|
CHECK_FUNCTION_EXISTS (getcwd HAVE_GETCWD)
|
||||||
CHECK_FUNCTION_EXISTS (gethostbyaddr_r HAVE_GETHOSTBYADDR_R)
|
CHECK_FUNCTION_EXISTS (gethostbyaddr_r HAVE_GETHOSTBYADDR_R)
|
||||||
CHECK_FUNCTION_EXISTS (gethostbyname_r HAVE_GETHOSTBYNAME_R)
|
|
||||||
CHECK_FUNCTION_EXISTS (gethrtime HAVE_GETHRTIME)
|
CHECK_FUNCTION_EXISTS (gethrtime HAVE_GETHRTIME)
|
||||||
CHECK_FUNCTION_EXISTS (getnameinfo HAVE_GETNAMEINFO)
|
CHECK_FUNCTION_EXISTS (getnameinfo HAVE_GETNAMEINFO)
|
||||||
CHECK_FUNCTION_EXISTS (getpass HAVE_GETPASS)
|
CHECK_FUNCTION_EXISTS (getpass HAVE_GETPASS)
|
||||||
@ -921,44 +920,6 @@ CHECK_CXX_SOURCE_COMPILES("
|
|||||||
"
|
"
|
||||||
HAVE_SOLARIS_STYLE_GETHOST)
|
HAVE_SOLARIS_STYLE_GETHOST)
|
||||||
|
|
||||||
CHECK_CXX_SOURCE_COMPILES("
|
|
||||||
#undef inline
|
|
||||||
#if !defined(SCO) && !defined(__osf__) && !defined(_REENTRANT)
|
|
||||||
#define _REENTRANT
|
|
||||||
#endif
|
|
||||||
#include <pthread.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/socket.h>
|
|
||||||
#include <netinet/in.h>
|
|
||||||
#include <arpa/inet.h>
|
|
||||||
#include <netdb.h>
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
int ret = gethostbyname_r((const char *) 0,
|
|
||||||
(struct hostent*) 0, (char*) 0, 0, (struct hostent **) 0, (int *) 0);
|
|
||||||
return 0;
|
|
||||||
}"
|
|
||||||
HAVE_GETHOSTBYNAME_R_GLIBC2_STYLE)
|
|
||||||
|
|
||||||
CHECK_CXX_SOURCE_COMPILES("
|
|
||||||
#undef inline
|
|
||||||
#if !defined(SCO) && !defined(__osf__) && !defined(_REENTRANT)
|
|
||||||
#define _REENTRANT
|
|
||||||
#endif
|
|
||||||
#include <pthread.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/socket.h>
|
|
||||||
#include <netinet/in.h>
|
|
||||||
#include <arpa/inet.h>
|
|
||||||
#include <netdb.h>
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
int ret = gethostbyname_r((const char *) 0, (struct hostent*) 0, (struct hostent_data*) 0);
|
|
||||||
return 0;
|
|
||||||
}"
|
|
||||||
HAVE_GETHOSTBYNAME_R_RETURN_INT)
|
|
||||||
|
|
||||||
|
|
||||||
# Use of ALARMs to wakeup on timeout on sockets
|
# Use of ALARMs to wakeup on timeout on sockets
|
||||||
#
|
#
|
||||||
# This feature makes use of a mutex and is a scalability hog we
|
# This feature makes use of a mutex and is a scalability hog we
|
||||||
|
@ -32,7 +32,7 @@ static my_bool verbose, print_all_codes;
|
|||||||
|
|
||||||
#include "../include/my_base.h"
|
#include "../include/my_base.h"
|
||||||
#include "../mysys/my_handler_errors.h"
|
#include "../mysys/my_handler_errors.h"
|
||||||
#include "../include/my_handler.h"
|
// #include "../include/my_compare.h"
|
||||||
|
|
||||||
#ifdef WITH_NDBCLUSTER_STORAGE_ENGINE
|
#ifdef WITH_NDBCLUSTER_STORAGE_ENGINE
|
||||||
static my_bool ndb_code;
|
static my_bool ndb_code;
|
||||||
@ -240,7 +240,39 @@ static my_bool print_win_error_msg(DWORD error, my_bool verbose)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
Register handler error messages for usage with my_error()
|
||||||
|
|
||||||
|
NOTES
|
||||||
|
This is safe to call multiple times as my_error_register()
|
||||||
|
will ignore calls to register already registered error numbers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static const char **get_handler_error_messages()
|
||||||
|
{
|
||||||
|
return handler_error_messages;
|
||||||
|
}
|
||||||
|
|
||||||
|
void my_handler_error_register(void)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
If you got compilation error here about compile_time_assert array, check
|
||||||
|
that every HA_ERR_xxx constant has a corresponding error message in
|
||||||
|
handler_error_messages[] list (check mysys/ma_handler_errors.h and
|
||||||
|
include/my_base.h).
|
||||||
|
*/
|
||||||
|
compile_time_assert(HA_ERR_FIRST + array_elements(handler_error_messages) ==
|
||||||
|
HA_ERR_LAST + 1);
|
||||||
|
my_error_register(get_handler_error_messages, HA_ERR_FIRST,
|
||||||
|
HA_ERR_FIRST+ array_elements(handler_error_messages)-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void my_handler_error_unregister(void)
|
||||||
|
{
|
||||||
|
my_error_unregister(HA_ERR_FIRST,
|
||||||
|
HA_ERR_FIRST+ array_elements(handler_error_messages)-1);
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc,char *argv[])
|
int main(int argc,char *argv[])
|
||||||
{
|
{
|
||||||
|
@ -308,7 +308,7 @@ SSL::SSL(SSL_CTX* ctx)
|
|||||||
SetError(YasslError(err));
|
SetError(YasslError(err));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (serverSide) {
|
else if (serverSide && !(ctx->GetCiphers().setSuites_)) {
|
||||||
// remove RSA or DSA suites depending on cert key type
|
// remove RSA or DSA suites depending on cert key type
|
||||||
ProtocolVersion pv = secure_.get_connection().version_;
|
ProtocolVersion pv = secure_.get_connection().version_;
|
||||||
|
|
||||||
|
@ -29,14 +29,14 @@ typedef struct st_decimal_t {
|
|||||||
|
|
||||||
int internal_str2dec(const char *from, decimal_t *to, char **end,
|
int internal_str2dec(const char *from, decimal_t *to, char **end,
|
||||||
my_bool fixed);
|
my_bool fixed);
|
||||||
int decimal2string(decimal_t *from, char *to, int *to_len,
|
int decimal2string(const decimal_t *from, char *to, int *to_len,
|
||||||
int fixed_precision, int fixed_decimals,
|
int fixed_precision, int fixed_decimals,
|
||||||
char filler);
|
char filler);
|
||||||
int decimal2ulonglong(decimal_t *from, ulonglong *to);
|
int decimal2ulonglong(decimal_t *from, ulonglong *to);
|
||||||
int ulonglong2decimal(ulonglong from, decimal_t *to);
|
int ulonglong2decimal(ulonglong from, decimal_t *to);
|
||||||
int decimal2longlong(decimal_t *from, longlong *to);
|
int decimal2longlong(decimal_t *from, longlong *to);
|
||||||
int longlong2decimal(longlong from, decimal_t *to);
|
int longlong2decimal(longlong from, decimal_t *to);
|
||||||
int decimal2double(decimal_t *from, double *to);
|
int decimal2double(const decimal_t *from, double *to);
|
||||||
int double2decimal(double from, decimal_t *to);
|
int double2decimal(double from, decimal_t *to);
|
||||||
int decimal_actual_fraction(decimal_t *from);
|
int decimal_actual_fraction(decimal_t *from);
|
||||||
int decimal2bin(decimal_t *from, uchar *to, int precision, int scale);
|
int decimal2bin(decimal_t *from, uchar *to, int precision, int scale);
|
||||||
@ -47,17 +47,17 @@ int decimal_bin_size(int precision, int scale);
|
|||||||
int decimal_result_size(decimal_t *from1, decimal_t *from2, char op,
|
int decimal_result_size(decimal_t *from1, decimal_t *from2, char op,
|
||||||
int param);
|
int param);
|
||||||
|
|
||||||
int decimal_intg(decimal_t *from);
|
int decimal_intg(const decimal_t *from);
|
||||||
int decimal_add(decimal_t *from1, decimal_t *from2, decimal_t *to);
|
int decimal_add(const decimal_t *from1, const decimal_t *from2, decimal_t *to);
|
||||||
int decimal_sub(decimal_t *from1, decimal_t *from2, decimal_t *to);
|
int decimal_sub(const decimal_t *from1, const decimal_t *from2, decimal_t *to);
|
||||||
int decimal_cmp(decimal_t *from1, decimal_t *from2);
|
int decimal_cmp(const decimal_t *from1, const decimal_t *from2);
|
||||||
int decimal_mul(decimal_t *from1, decimal_t *from2, decimal_t *to);
|
int decimal_mul(const decimal_t *from1, const decimal_t *from2, decimal_t *to);
|
||||||
int decimal_div(decimal_t *from1, decimal_t *from2, decimal_t *to,
|
int decimal_div(const decimal_t *from1, const decimal_t *from2, decimal_t *to,
|
||||||
int scale_incr);
|
int scale_incr);
|
||||||
int decimal_mod(decimal_t *from1, decimal_t *from2, decimal_t *to);
|
int decimal_mod(const decimal_t *from1, const decimal_t *from2, decimal_t *to);
|
||||||
int decimal_round(decimal_t *from, decimal_t *to, int new_scale,
|
int decimal_round(const decimal_t *from, decimal_t *to, int new_scale,
|
||||||
decimal_round_mode mode);
|
decimal_round_mode mode);
|
||||||
int decimal_is_zero(decimal_t *from);
|
int decimal_is_zero(const decimal_t *from);
|
||||||
void max_decimal(int precision, int frac, decimal_t *to);
|
void max_decimal(int precision, int frac, decimal_t *to);
|
||||||
|
|
||||||
#define string2decimal(A,B,C) internal_str2dec((A), (B), (C), 0)
|
#define string2decimal(A,B,C) internal_str2dec((A), (B), (C), 0)
|
||||||
|
@ -30,7 +30,7 @@ extern "C" {
|
|||||||
#include <my_pthread.h>
|
#include <my_pthread.h>
|
||||||
#include <thr_lock.h>
|
#include <thr_lock.h>
|
||||||
|
|
||||||
#include "my_handler.h"
|
#include "my_compare.h"
|
||||||
#include "my_tree.h"
|
#include "my_tree.h"
|
||||||
|
|
||||||
/* defines used by heap-funktions */
|
/* defines used by heap-funktions */
|
||||||
|
@ -1,22 +1,20 @@
|
|||||||
/* Copyright (C) 2002-2006 MySQL AB
|
/* Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or
|
This program is free software; you can redistribute it and/or modify
|
||||||
modify it under the terms of the GNU Library General Public
|
it under the terms of the GNU General Public License as published by
|
||||||
License as published by the Free Software Foundation; version 2
|
the Free Software Foundation; version 2 of the License.
|
||||||
of the License.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
Library General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU Library General Public
|
You should have received a copy of the GNU General Public License
|
||||||
License along with this library; if not, write to the Free
|
along with this program; if not, write to the Free Software
|
||||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||||
MA 02111-1307, USA */
|
|
||||||
|
|
||||||
#ifndef _my_handler_h
|
#ifndef _my_compare_h
|
||||||
#define _my_handler_h
|
#define _my_compare_h
|
||||||
|
|
||||||
#include "myisampack.h"
|
#include "myisampack.h"
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@ -114,9 +112,6 @@ extern int ha_key_cmp(register HA_KEYSEG *keyseg, register uchar *a,
|
|||||||
register uchar *b, uint key_length, uint nextflag,
|
register uchar *b, uint key_length, uint nextflag,
|
||||||
uint *diff_pos);
|
uint *diff_pos);
|
||||||
|
|
||||||
extern HA_KEYSEG *ha_find_null(HA_KEYSEG *keyseg, uchar *a);
|
|
||||||
extern void my_handler_error_register(void);
|
|
||||||
extern void my_handler_error_unregister(void);
|
|
||||||
/*
|
/*
|
||||||
Inside an in-memory data record, memory pointers to pieces of the
|
Inside an in-memory data record, memory pointers to pieces of the
|
||||||
record (like BLOBs) are stored in their native byte order and in
|
record (like BLOBs) are stored in their native byte order and in
|
||||||
@ -127,4 +122,4 @@ extern void my_handler_error_unregister(void);
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* _my_handler_h */
|
#endif /* _my_compare_h */
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2000-2003 MySQL AB, 2009 Sun Microsystems, Inc
|
/* Copyright (c) 2000, 2011, 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
|
||||||
@ -285,7 +285,7 @@ C_MODE_END
|
|||||||
#define ulonglong2double(A) my_ulonglong2double(A)
|
#define ulonglong2double(A) my_ulonglong2double(A)
|
||||||
#define my_off_t2double(A) my_ulonglong2double(A)
|
#define my_off_t2double(A) my_ulonglong2double(A)
|
||||||
C_MODE_START
|
C_MODE_START
|
||||||
double my_ulonglong2double(unsigned long long A);
|
inline double my_ulonglong2double(unsigned long long A) { return (double A); }
|
||||||
C_MODE_END
|
C_MODE_END
|
||||||
#endif /* _AIX */
|
#endif /* _AIX */
|
||||||
|
|
||||||
@ -301,9 +301,6 @@ C_MODE_END
|
|||||||
#undef HAVE_PWRITE
|
#undef HAVE_PWRITE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef UNDEF_HAVE_GETHOSTBYNAME_R /* For OSF4.x */
|
|
||||||
#undef HAVE_GETHOSTBYNAME_R
|
|
||||||
#endif
|
|
||||||
#ifdef UNDEF_HAVE_INITGROUPS /* For AIX 4.3 */
|
#ifdef UNDEF_HAVE_INITGROUPS /* For AIX 4.3 */
|
||||||
#undef HAVE_INITGROUPS
|
#undef HAVE_INITGROUPS
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2000 MySQL AB
|
/* Copyright (c) 2000, 2011, 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
|
||||||
@ -73,38 +73,6 @@ C_MODE_START
|
|||||||
#define in_addr_t uint32
|
#define in_addr_t uint32
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
|
||||||
Handling of gethostbyname_r()
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if !defined(HAVE_GETHOSTBYNAME_R)
|
|
||||||
struct hostent *my_gethostbyname_r(const char *name,
|
|
||||||
struct hostent *result, char *buffer,
|
|
||||||
int buflen, int *h_errnop);
|
|
||||||
void my_gethostbyname_r_free();
|
|
||||||
#elif defined(HAVE_PTHREAD_ATTR_CREATE) || defined(_AIX) || defined(HAVE_GETHOSTBYNAME_R_GLIBC2_STYLE)
|
|
||||||
struct hostent *my_gethostbyname_r(const char *name,
|
|
||||||
struct hostent *result, char *buffer,
|
|
||||||
int buflen, int *h_errnop);
|
|
||||||
#define my_gethostbyname_r_free()
|
|
||||||
#if !defined(HAVE_GETHOSTBYNAME_R_GLIBC2_STYLE) && !defined(HPUX10)
|
|
||||||
#define GETHOSTBYNAME_BUFF_SIZE sizeof(struct hostent_data)
|
|
||||||
#endif /* !defined(HAVE_GETHOSTBYNAME_R_GLIBC2_STYLE) */
|
|
||||||
|
|
||||||
#elif defined(HAVE_GETHOSTBYNAME_R_RETURN_INT)
|
|
||||||
#define GETHOSTBYNAME_BUFF_SIZE sizeof(struct hostent_data)
|
|
||||||
struct hostent *my_gethostbyname_r(const char *name,
|
|
||||||
struct hostent *result, char *buffer,
|
|
||||||
int buflen, int *h_errnop);
|
|
||||||
#define my_gethostbyname_r_free()
|
|
||||||
#else
|
|
||||||
#define my_gethostbyname_r(A,B,C,D,E) gethostbyname_r((A),(B),(C),(D),(E))
|
|
||||||
#define my_gethostbyname_r_free()
|
|
||||||
#endif /* !defined(HAVE_GETHOSTBYNAME_R) */
|
|
||||||
|
|
||||||
#ifndef GETHOSTBYNAME_BUFF_SIZE
|
|
||||||
#define GETHOSTBYNAME_BUFF_SIZE 2048
|
|
||||||
#endif
|
|
||||||
|
|
||||||
C_MODE_END
|
C_MODE_END
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
/* Copyright (C) 2000 MySQL AB, 2008-2009 Sun Microsystems, Inc
|
/* Copyright (C) 2000, 2011, 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
|
||||||
@ -30,7 +31,7 @@ extern "C" {
|
|||||||
#ifndef _keycache_h
|
#ifndef _keycache_h
|
||||||
#include "keycache.h"
|
#include "keycache.h"
|
||||||
#endif
|
#endif
|
||||||
#include "my_handler.h"
|
#include "my_compare.h"
|
||||||
#include <mysql/plugin.h>
|
#include <mysql/plugin.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -227,7 +227,7 @@ typedef struct st_typelib {
|
|||||||
extern my_ulonglong find_typeset(char *x, TYPELIB *typelib,int *error_position);
|
extern my_ulonglong find_typeset(char *x, TYPELIB *typelib,int *error_position);
|
||||||
extern int find_type_or_exit(const char *x, TYPELIB *typelib,
|
extern int find_type_or_exit(const char *x, TYPELIB *typelib,
|
||||||
const char *option);
|
const char *option);
|
||||||
extern int find_type(char *x, const TYPELIB *typelib, unsigned int full_name);
|
extern int find_type(const char *x, const TYPELIB *typelib, unsigned int flags);
|
||||||
extern void make_type(char *to,unsigned int nr,TYPELIB *typelib);
|
extern void make_type(char *to,unsigned int nr,TYPELIB *typelib);
|
||||||
extern const char *get_type(TYPELIB *typelib,unsigned int nr);
|
extern const char *get_type(TYPELIB *typelib,unsigned int nr);
|
||||||
extern TYPELIB *copy_typelib(MEM_ROOT *root, TYPELIB *from);
|
extern TYPELIB *copy_typelib(MEM_ROOT *root, TYPELIB *from);
|
||||||
|
@ -114,6 +114,10 @@ enum enum_server_command
|
|||||||
#define FIELD_IN_PART_FUNC_FLAG (1 << 19)/* Field part of partition func */
|
#define FIELD_IN_PART_FUNC_FLAG (1 << 19)/* Field part of partition func */
|
||||||
#define FIELD_IN_ADD_INDEX (1<< 20) /* Intern: Field used in ADD INDEX */
|
#define FIELD_IN_ADD_INDEX (1<< 20) /* Intern: Field used in ADD INDEX */
|
||||||
#define FIELD_IS_RENAMED (1<< 21) /* Intern: Field is being renamed */
|
#define FIELD_IS_RENAMED (1<< 21) /* Intern: Field is being renamed */
|
||||||
|
#define FIELD_FLAGS_STORAGE_MEDIA 22 /* Field storage media, bit 22-23,
|
||||||
|
reserved by MySQL Cluster */
|
||||||
|
#define FIELD_FLAGS_COLUMN_FORMAT 24 /* Field column format, bit 24-25,
|
||||||
|
reserved by MySQL Cluster */
|
||||||
|
|
||||||
#define REFRESH_GRANT 1 /* Refresh grant tables */
|
#define REFRESH_GRANT 1 /* Refresh grant tables */
|
||||||
#define REFRESH_LOG 2 /* Start on new log file */
|
#define REFRESH_LOG 2 /* Start on new log file */
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2000 MySQL AB
|
/* Copyright (c) 2000, 2011, 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
|
||||||
@ -29,7 +29,17 @@ typedef struct st_typelib { /* Different types saved here */
|
|||||||
extern my_ulonglong find_typeset(char *x, TYPELIB *typelib,int *error_position);
|
extern my_ulonglong find_typeset(char *x, TYPELIB *typelib,int *error_position);
|
||||||
extern int find_type_or_exit(const char *x, TYPELIB *typelib,
|
extern int find_type_or_exit(const char *x, TYPELIB *typelib,
|
||||||
const char *option);
|
const char *option);
|
||||||
extern int find_type(char *x, const TYPELIB *typelib, unsigned int full_name);
|
#define FIND_TYPE_BASIC 0
|
||||||
|
/** makes @c find_type() require the whole name, no prefix */
|
||||||
|
#define FIND_TYPE_NO_PREFIX (1 << 0)
|
||||||
|
/** always implicitely on, so unused, but old code may pass it */
|
||||||
|
#define FIND_TYPE_NO_OVERWRITE (1 << 1)
|
||||||
|
/** makes @c find_type() accept a number */
|
||||||
|
#define FIND_TYPE_ALLOW_NUMBER (1 << 2)
|
||||||
|
/** makes @c find_type() treat ',' as terminator */
|
||||||
|
#define FIND_TYPE_COMMA_TERM (1 << 3)
|
||||||
|
|
||||||
|
extern int find_type(const char *x, const TYPELIB *typelib, unsigned int flags);
|
||||||
extern void make_type(char *to,unsigned int nr,TYPELIB *typelib);
|
extern void make_type(char *to,unsigned int nr,TYPELIB *typelib);
|
||||||
extern const char *get_type(TYPELIB *typelib,unsigned int nr);
|
extern const char *get_type(TYPELIB *typelib,unsigned int nr);
|
||||||
extern TYPELIB *copy_typelib(MEM_ROOT *root, TYPELIB *from);
|
extern TYPELIB *copy_typelib(MEM_ROOT *root, TYPELIB *from);
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2000 MySQL AB
|
/* Copyright (c) 2000, 2011, 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
|
||||||
@ -93,6 +93,8 @@ ssize_t vio_pending(Vio *vio);
|
|||||||
my_bool vio_get_normalized_ip_string(const struct sockaddr *addr, int addr_length,
|
my_bool vio_get_normalized_ip_string(const struct sockaddr *addr, int addr_length,
|
||||||
char *ip_string, size_t ip_string_size);
|
char *ip_string, size_t ip_string_size);
|
||||||
|
|
||||||
|
my_bool vio_is_no_name_error(int err_code);
|
||||||
|
|
||||||
int vio_getnameinfo(const struct sockaddr *sa,
|
int vio_getnameinfo(const struct sockaddr *sa,
|
||||||
char *hostname, size_t hostname_size,
|
char *hostname, size_t hostname_size,
|
||||||
char *port, size_t port_size,
|
char *port, size_t port_size,
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
|
|
||||||
perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=normal --vardir=var-normal --report-features
|
perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=normal --vardir=var-normal --report-features --skip-test-list=collections/disabled-daily.list --unit-tests
|
||||||
perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=n_mix --vardir=var-n_mix --mysqld=--binlog-format=mixed
|
perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=n_mix --vardir=var-n_mix --mysqld=--binlog-format=mixed --skip-test-list=collections/disabled-daily.list
|
||||||
perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=row --vardir=var-row --mysqld=--binlog-format=row
|
perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=row --vardir=var-row --mysqld=--binlog-format=row --skip-test-list=collections/disabled-daily.list
|
||||||
perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=ps_row --vardir=var-ps_row --mysqld=--binlog-format=row --ps-protocol
|
perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=ps_row --vardir=var-ps_row --mysqld=--binlog-format=row --ps-protocol --skip-test-list=collections/disabled-daily.list
|
||||||
perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=embedded --vardir=var-embedded --embedded
|
perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=embedded --vardir=var-embedded --embedded --skip-test-list=collections/disabled-daily.list
|
||||||
perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=ps --vardir=var-ps --ps-protocol
|
perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=ps --vardir=var-ps --ps-protocol --skip-test-list=collections/disabled-daily.list
|
||||||
perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=funcs_1 --vardir=var-funcs_1 --suite=funcs_1
|
perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=funcs_1 --vardir=var-funcs_1 --suite=funcs_1 --skip-test-list=collections/disabled-daily.list
|
||||||
perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=ps_funcs1 --vardir=var-ps_funcs_1 --suite=funcs_1 --ps-protocol
|
perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=ps_funcs1 --vardir=var-ps_funcs_1 --suite=funcs_1 --ps-protocol --skip-test-list=collections/disabled-daily.list
|
||||||
perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=funcs2 --vardir=var-funcs2 --suite=funcs_2
|
perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=funcs2 --vardir=var-funcs2 --suite=funcs_2 --skip-test-list=collections/disabled-daily.list
|
||||||
perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=partitions --vardir=var-parts --suite=parts
|
perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=partitions --vardir=var-parts --suite=parts --skip-test-list=collections/disabled-daily.list
|
||||||
perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=stress --vardir=var-stress --suite=stress
|
perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=stress --vardir=var-stress --suite=stress --skip-test-list=collections/disabled-daily.list
|
||||||
perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=jp --vardir=var-jp --suite=jp
|
perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=jp --vardir=var-jp --suite=jp --skip-test-list=collections/disabled-daily.list
|
||||||
perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=nist --vardir=var-nist --suite=nist
|
perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=nist --vardir=var-nist --suite=nist --skip-test-list=collections/disabled-daily.list
|
||||||
perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=nist+ps --vardir=var-ps_nist --suite=nist --ps-protocol
|
perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=nist+ps --vardir=var-ps_nist --suite=nist --ps-protocol
|
||||||
|
@ -2,6 +2,9 @@
|
|||||||
# in alphabetical order. This also helps with merge conflict resolution.
|
# in alphabetical order. This also helps with merge conflict resolution.
|
||||||
|
|
||||||
binlog.binlog_multi_engine # joro : NDB tests marked as experimental as agreed with bochklin
|
binlog.binlog_multi_engine # joro : NDB tests marked as experimental as agreed with bochklin
|
||||||
|
binlog.binlog_bug23533 # WL#5867: skozlov: test case moved from unused bugs suite
|
||||||
|
binlog.binlog_bug36391 # WL#5867: skozlov: test case moved from unused bugs suite
|
||||||
|
|
||||||
|
|
||||||
funcs_1.charset_collation_1 # depends on compile-time decisions
|
funcs_1.charset_collation_1 # depends on compile-time decisions
|
||||||
|
|
||||||
@ -15,16 +18,11 @@ main.type_float @freebsd # Bug#38965 2010-05-04 alik test cases
|
|||||||
main.wait_timeout @solaris # Bug#51244 2010-04-26 alik wait_timeout fails on OpenSolaris
|
main.wait_timeout @solaris # Bug#51244 2010-04-26 alik wait_timeout fails on OpenSolaris
|
||||||
|
|
||||||
rpl.rpl_innodb_bug28430 # Bug#46029
|
rpl.rpl_innodb_bug28430 # Bug#46029
|
||||||
|
rpl.rpl_bug37426 # WL#5867: skozlov: test case moved from unused bugs suite
|
||||||
|
|
||||||
sys_vars.max_sp_recursion_depth_func @solaris # Bug#47791 2010-01-20 alik Several test cases fail on Solaris with error Thread stack overrun
|
sys_vars.max_sp_recursion_depth_func @solaris # Bug#47791 2010-01-20 alik Several test cases fail on Solaris with error Thread stack overrun
|
||||||
sys_vars.plugin_dir_basic # Bug#52223 2010-11-24 alik Test "plugin_dir_basic" does not support RPM build (test) directory structure
|
sys_vars.plugin_dir_basic # Bug#52223 2010-11-24 alik Test "plugin_dir_basic" does not support RPM build (test) directory structure
|
||||||
sys_vars.slow_query_log_func @solaris # Bug#54819 2010-06-26 alik sys_vars.slow_query_log_func fails sporadically on Solaris 10
|
|
||||||
sys_vars.wait_timeout_func # Bug#41255 2010-04-26 alik wait_timeout_func fails
|
sys_vars.wait_timeout_func # Bug#41255 2010-04-26 alik wait_timeout_func fails
|
||||||
sys_vars.sys_vars # Bug #59148 2011-01-10 joro 'INSTALL PLUGIN rpl_semi_sync_master' fails in release build with debug binaries
|
|
||||||
sys_vars.rpl_semi_sync_master_enabled_basic # Bug #59148 2011-01-10 joro 'INSTALL PLUGIN rpl_semi_sync_master' fails in release build with debug binaries
|
|
||||||
sys_vars.rpl_semi_sync_master_timeout_basic # Bug #59148 2011-01-10 joro 'INSTALL PLUGIN rpl_semi_sync_master' fails in release build with debug binaries
|
|
||||||
sys_vars.rpl_semi_sync_master_trace_level_basic # Bug #59148 2011-01-10 joro 'INSTALL PLUGIN rpl_semi_sync_master' fails in release build with debug binaries
|
|
||||||
sys_vars.rpl_semi_sync_master_wait_no_slave_basic # Bug #59148 2011-01-10 joro 'INSTALL PLUGIN rpl_semi_sync_master' fails in release build with debug binaries
|
|
||||||
|
|
||||||
# BUG #59055 : All ndb tests should be removed from the repository
|
# BUG #59055 : All ndb tests should be removed from the repository
|
||||||
# Leaving the sys_vars tests for now. sys_vars.all_vars.test fails on removing ndb tests
|
# Leaving the sys_vars tests for now. sys_vars.all_vars.test fails on removing ndb tests
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
perl mysql-test-run.pl --timer --force --parallel=auto --comment=n_mix --vardir=var-n_mix --mysqld=--binlog-format=mixed --experimental=collections/default.experimental --skip-ndb --skip-test-list=collections/disabled-per-push.list
|
perl mysql-test-run.pl --timer --force --parallel=auto --comment=n_mix --vardir=var-n_mix --mysqld=--binlog-format=mixed --experimental=collections/default.experimental --skip-ndb --skip-test-list=collections/disabled-per-push.list --unit-tests
|
||||||
perl mysql-test-run.pl --timer --force --parallel=auto --comment=ps_row --vardir=var-ps_row --ps-protocol --mysqld=--binlog-format=row --experimental=collections/default.experimental --skip-ndb --skip-test-list=collections/disabled-per-push.list
|
perl mysql-test-run.pl --timer --force --parallel=auto --comment=ps_row --vardir=var-ps_row --ps-protocol --mysqld=--binlog-format=row --experimental=collections/default.experimental --skip-ndb --skip-test-list=collections/disabled-per-push.list
|
||||||
perl mysql-test-run.pl --timer --force --parallel=auto --comment=embedded --vardir=var-emebbed --embedded --experimental=collections/default.experimental --skip-ndb
|
perl mysql-test-run.pl --timer --force --parallel=auto --comment=embedded --vardir=var-emebbed --embedded --experimental=collections/default.experimental --skip-ndb
|
||||||
perl mysql-test-run.pl --timer --force --parallel=auto --comment=rpl_binlog_row --vardir=var-rpl_binlog_row --suite=rpl,binlog --mysqld=--binlog-format=row --experimental=collections/default.experimental --skip-ndb --skip-test-list=collections/disabled-per-push.list
|
perl mysql-test-run.pl --timer --force --parallel=auto --comment=rpl_binlog_row --vardir=var-rpl_binlog_row --suite=rpl,binlog --mysqld=--binlog-format=row --experimental=collections/default.experimental --skip-ndb --skip-test-list=collections/disabled-per-push.list
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
perl mysql-test-run.pl --timer --force --debug-server --parallel=auto --comment=big-tests --experimental=collections/default.experimental --vardir=var-big-tests --big-test --testcase-timeout=60 --suite-timeout=600 main.alter_table-big main.archive-big main.count_distinct3 main.create-big main.events_stress main.events_time_zone main.information_schema-big main.log_tables-big main.merge-big main.mysqlbinlog_row_big main.read_many_rows_innodb main.ssl-big main.sum_distinct-big main.type_newdecimal-big main.variables-big parts.part_supported_sql_func_innodb parts.partition_alter1_1_2_innodb parts.partition_alter1_2_innodb parts.partition_alter2_1_1_innodb parts.partition_alter2_1_2_innodb parts.partition_alter2_2_2_innodb parts.partition_alter4_innodb funcs_1.myisam_views-big
|
perl mysql-test-run.pl --timer --force --debug-server --parallel=auto --comment=big-tests --experimental=collections/default.experimental --vardir=var-big-tests --big-test --testcase-timeout=60 --suite-timeout=600 main.alter_table-big main.archive-big main.count_distinct3 main.create-big main.events_stress main.events_time_zone main.information_schema-big main.log_tables-big main.merge-big main.mysqlbinlog_row_big main.read_many_rows_innodb main.ssl-big main.sum_distinct-big main.type_newdecimal-big main.variables-big parts.part_supported_sql_func_innodb parts.partition_alter1_1_2_innodb parts.partition_alter1_2_innodb parts.partition_alter2_1_1_innodb parts.partition_alter2_1_2_innodb parts.partition_alter2_2_2_innodb parts.partition_alter4_innodb funcs_1.myisam_views-big --skip-test-list=collections/disabled-weekly.list
|
||||||
perl mysql-test-run.pl --timer --force --debug-server --parallel=auto --comment=eits-tests-myisam-engine --experimental=collections/default.experimental --vardir=var-stmt-eits-tests-myisam-engine --suite=engines/iuds,engines/funcs --suite-timeout=500 --max-test-fail=0 --retry-failure=0 --mysqld=--default-storage-engine=myisam
|
perl mysql-test-run.pl --timer --force --debug-server --parallel=auto --comment=eits-tests-myisam-engine --experimental=collections/default.experimental --vardir=var-stmt-eits-tests-myisam-engine --suite=engines/iuds,engines/funcs --suite-timeout=500 --max-test-fail=0 --retry-failure=0 --mysqld=--default-storage-engine=myisam --skip-test-list=collections/disabled-weekly.list
|
||||||
perl mysql-test-run.pl --timer --force --debug-server --parallel=auto --comment=eits-rpl-binlog-row-tests-myisam-engine --experimental=collections/default.experimental --vardir=var-binlog-row-eits-tests-myisam-engine --suite=engines/iuds,engines/funcs --suite-timeout=500 --max-test-fail=0 --retry-failure=0 --mysqld=--default-storage-engine=myisam --do-test=rpl --mysqld=--binlog-format=row
|
perl mysql-test-run.pl --timer --force --debug-server --parallel=auto --comment=eits-rpl-binlog-row-tests-myisam-engine --experimental=collections/default.experimental --vardir=var-binlog-row-eits-tests-myisam-engine --suite=engines/iuds,engines/funcs --suite-timeout=500 --max-test-fail=0 --retry-failure=0 --mysqld=--default-storage-engine=myisam --do-test=rpl --mysqld=--binlog-format=row --skip-test-list=collections/disabled-weekly.list
|
||||||
perl mysql-test-run.pl --timer --force --debug-server --parallel=auto --comment=eits-rpl-binlog-mixed-tests-myisam-engine --experimental=collections/default.experimental --vardir=var-binlog-mixed-eits-tests-myisam-engine --suite=engines/iuds,engines/funcs --suite-timeout=500 --max-test-fail=0 --retry-failure=0 --mysqld=--default-storage-engine=myisam --do-test=rpl --mysqld=--binlog-format=mixed
|
perl mysql-test-run.pl --timer --force --debug-server --parallel=auto --comment=eits-rpl-binlog-mixed-tests-myisam-engine --experimental=collections/default.experimental --vardir=var-binlog-mixed-eits-tests-myisam-engine --suite=engines/iuds,engines/funcs --suite-timeout=500 --max-test-fail=0 --retry-failure=0 --mysqld=--default-storage-engine=myisam --do-test=rpl --mysqld=--binlog-format=mixed --skip-test-list=collections/disabled-weekly.list
|
||||||
perl mysql-test-run.pl --timer --force --debug-server --parallel=auto --comment=eits-tests-innodb-engine --experimental=collections/default.experimental --vardir=var-stmt-eits-tests-innodb-engine --suite=engines/iuds,engines/funcs --suite-timeout=500 --max-test-fail=0 --retry-failure=0 --mysqld=--default-storage-engine=innodb --mysqld=--innodb
|
perl mysql-test-run.pl --timer --force --debug-server --parallel=auto --comment=eits-tests-innodb-engine --experimental=collections/default.experimental --vardir=var-stmt-eits-tests-innodb-engine --suite=engines/iuds,engines/funcs --suite-timeout=500 --max-test-fail=0 --retry-failure=0 --mysqld=--default-storage-engine=innodb --mysqld=--innodb --skip-test-list=collections/disabled-weekly.list
|
||||||
perl mysql-test-run.pl --timer --force --debug-server --parallel=auto --comment=eits-rpl-binlog-row-tests-innodb-engine --experimental=collections/default.experimental --vardir=var-binlog-row-eits-tests-innodb-engine --suite=engines/iuds,engines/funcs --suite-timeout=500 --max-test-fail=0 --retry-failure=0 --mysqld=--default-storage-engine=innodb --mysqld=--innodb --do-test=rpl --mysqld=--binlog-format=row
|
perl mysql-test-run.pl --timer --force --debug-server --parallel=auto --comment=eits-rpl-binlog-row-tests-innodb-engine --experimental=collections/default.experimental --vardir=var-binlog-row-eits-tests-innodb-engine --suite=engines/iuds,engines/funcs --suite-timeout=500 --max-test-fail=0 --retry-failure=0 --mysqld=--default-storage-engine=innodb --mysqld=--innodb --do-test=rpl --mysqld=--binlog-format=row --skip-test-list=collections/disabled-weekly.list
|
||||||
perl mysql-test-run.pl --timer --force --debug-server --parallel=auto --comment=eits-rpl-binlog-mixed-tests-innodb-engine --experimental=collections/default.experimental --vardir=var-binlog-mixed-eits-tests-innodb-engine --suite=engines/iuds,engines/funcs --suite-timeout=500 --max-test-fail=0 --retry-failure=0 --mysqld=--default-storage-engine=innodb --mysqld=--innodb --do-test=rpl --mysqld=--binlog-format=mixed
|
perl mysql-test-run.pl --timer --force --debug-server --parallel=auto --comment=eits-rpl-binlog-mixed-tests-innodb-engine --experimental=collections/default.experimental --vardir=var-binlog-mixed-eits-tests-innodb-engine --suite=engines/iuds,engines/funcs --suite-timeout=500 --max-test-fail=0 --retry-failure=0 --mysqld=--default-storage-engine=innodb --mysqld=--innodb --do-test=rpl --mysqld=--binlog-format=mixed --skip-test-list=collections/disabled-weekly.list
|
||||||
|
@ -345,6 +345,7 @@ SHOW SESSION VARIABLES LIKE "%_checks";
|
|||||||
--echo # INSERT INTO t1 VALUES(2)
|
--echo # INSERT INTO t1 VALUES(2)
|
||||||
--echo # foreign_key_checks=1 and unique_checks=1
|
--echo # foreign_key_checks=1 and unique_checks=1
|
||||||
--echo # It should not change current session's variables, even error happens
|
--echo # It should not change current session's variables, even error happens
|
||||||
|
call mtr.add_suppression("Slave SQL.*Could not execute Write_rows event on table test.t1; Duplicate entry .2. for key .PRIMARY., Error_code: 1062");
|
||||||
--error 1062
|
--error 1062
|
||||||
BINLOG '
|
BINLOG '
|
||||||
dfLtTBMBAAAAKQAAAKsBAAAAABcAAAAAAAEABHRlc3QAAnQxAAEDAAE=
|
dfLtTBMBAAAAKQAAAKsBAAAAABcAAAAAAAEABHRlc3QAAnQxAAEDAAE=
|
||||||
|
@ -30,3 +30,30 @@ drop table tt1, t1;
|
|||||||
source include/show_binlog_events.inc;
|
source include/show_binlog_events.inc;
|
||||||
|
|
||||||
FLUSH STATUS;
|
FLUSH STATUS;
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#11765416 58381: FAILED DROP DATABASE CAN BREAK STATEMENT
|
||||||
|
--echo # BASED REPLICATION
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--disable_warnings
|
||||||
|
DROP DATABASE IF EXISTS db1;
|
||||||
|
DROP TABLE IF EXISTS t3;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
CREATE DATABASE db1;
|
||||||
|
CREATE TABLE db1.t1 (a INT);
|
||||||
|
CREATE TABLE db1.t2 (b INT, KEY(b)) engine=innodb;
|
||||||
|
CREATE TABLE t3 (a INT, KEY (a), FOREIGN KEY(a) REFERENCES db1.t2(b))
|
||||||
|
engine=innodb;
|
||||||
|
RESET MASTER;
|
||||||
|
|
||||||
|
--error ER_ROW_IS_REFERENCED
|
||||||
|
DROP DATABASE db1; # Fails because of the fk
|
||||||
|
SHOW TABLES FROM db1; # t1 was dropped, t2 remains
|
||||||
|
--source include/show_binlog_events.inc # Check that the binlog drops t1
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
DROP TABLE t3;
|
||||||
|
DROP DATABASE db1;
|
||||||
|
@ -382,6 +382,7 @@ source include/start_slave.inc;
|
|||||||
CALL mtr.add_suppression("Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage.*");
|
CALL mtr.add_suppression("Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage.*");
|
||||||
CALL mtr.add_suppression("Multi-statement transaction required more than 'max_binlog_stmt_cache_size' bytes of storage.*");
|
CALL mtr.add_suppression("Multi-statement transaction required more than 'max_binlog_stmt_cache_size' bytes of storage.*");
|
||||||
CALL mtr.add_suppression("Writing one row to the row-based binary log failed.*");
|
CALL mtr.add_suppression("Writing one row to the row-based binary log failed.*");
|
||||||
|
CALL mtr.add_suppression("Slave SQL.*The incident LOST_EVENTS occured on the master. Message: error writing to the binary log");
|
||||||
|
|
||||||
connection master;
|
connection master;
|
||||||
TRUNCATE t1;
|
TRUNCATE t1;
|
||||||
|
@ -97,6 +97,7 @@ if (`SELECT @@global.binlog_format != 'ROW' OR @@global.slave_exec_mode = 'STRIC
|
|||||||
--disable_query_log
|
--disable_query_log
|
||||||
--eval SELECT "$err" as 'Last_SQL_Error (expected "duplicate key" error)'
|
--eval SELECT "$err" as 'Last_SQL_Error (expected "duplicate key" error)'
|
||||||
--enable_query_log
|
--enable_query_log
|
||||||
|
call mtr.add_suppression("Slave SQL.*Duplicate entry .1. for key .PRIMARY.* Error_code: 1062");
|
||||||
|
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
|
|
||||||
@ -142,6 +143,7 @@ connection slave;
|
|||||||
# replication continues.
|
# replication continues.
|
||||||
if (`SELECT @@global.binlog_format = 'ROW' AND @@global.slave_exec_mode = 'STRICT'`) {
|
if (`SELECT @@global.binlog_format = 'ROW' AND @@global.slave_exec_mode = 'STRICT'`) {
|
||||||
--echo ---- Wait until slave stops with an error ----
|
--echo ---- Wait until slave stops with an error ----
|
||||||
|
call mtr.add_suppression("Slave SQL.*Can.t find record in .t1., Error_code: 1032");
|
||||||
let $slave_sql_errno= 1032; # ER_KEY_NOT_FOUND
|
let $slave_sql_errno= 1032; # ER_KEY_NOT_FOUND
|
||||||
source include/wait_for_slave_sql_error.inc;
|
source include/wait_for_slave_sql_error.inc;
|
||||||
|
|
||||||
|
@ -121,6 +121,15 @@ SELECT f1,f2,f3,f4,f5,f6,f7,f8,f9,
|
|||||||
hex(f10),hex(f11) FROM t1 ORDER BY f3 LIMIT 20;
|
hex(f10),hex(f11) FROM t1 ORDER BY f3 LIMIT 20;
|
||||||
|
|
||||||
#connection slave;
|
#connection slave;
|
||||||
|
|
||||||
|
--disable_query_log
|
||||||
|
call mtr.add_suppression("Slave SQL.*Table definition on master and slave does not match: Column 2 type mismatch.* 1535");
|
||||||
|
call mtr.add_suppression("Slave.*Can.t DROP .c7.; check that column.key exists.* Error_code: 1091");
|
||||||
|
call mtr.add_suppression("Slave.*Unknown column .c7. in .t15.* Error_code: 1054");
|
||||||
|
call mtr.add_suppression("Slave.*Key column .c6. doesn.t exist in table.* Error_code: 1072");
|
||||||
|
call mtr.add_suppression("Slave SQL.*Column 2 of table .test.t1.. cannot be converted from type.* Error_code: 1677");
|
||||||
|
--enable_query_log
|
||||||
|
|
||||||
sync_slave_with_master;
|
sync_slave_with_master;
|
||||||
--echo
|
--echo
|
||||||
--echo * Select count and 20 rows from Slave *
|
--echo * Select count and 20 rows from Slave *
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
#################################################
|
#################################################
|
||||||
|
|
||||||
call mtr.add_suppression("Slave: Unknown table 't6' Error_code: 1051");
|
call mtr.add_suppression("Slave: Unknown table 't6' Error_code: 1051");
|
||||||
|
call mtr.add_suppression("Slave SQL.*Column [0-9] of table .test.t[0-9]*. cannot be converted from type.* Error_code: 1677");
|
||||||
|
|
||||||
--echo **** Diff Table Def Start ****
|
--echo **** Diff Table Def Start ****
|
||||||
|
|
||||||
@ -769,6 +770,10 @@ RESET MASTER;
|
|||||||
connection slave;
|
connection slave;
|
||||||
START SLAVE;
|
START SLAVE;
|
||||||
|
|
||||||
|
call mtr.add_suppression("Error .Unknown table .t6.. on query.* Error_code: 1051");
|
||||||
|
call mtr.add_suppression("Error .Duplicate column name .c6.. on query.* Error_code: 1060");
|
||||||
|
call mtr.add_suppression("Table definition on master and slave does not match: Column . ...e mismatch.* Error_code: 1535");
|
||||||
|
|
||||||
--echo *** Master Data Insert ***
|
--echo *** Master Data Insert ***
|
||||||
connection master;
|
connection master;
|
||||||
set @b1 = 'b1b1b1b1';
|
set @b1 = 'b1b1b1b1';
|
||||||
|
@ -69,6 +69,8 @@ eval $lower_stmt_head infile '../../std_data/rpl_loaddata.dat' into table t1;
|
|||||||
save_master_pos;
|
save_master_pos;
|
||||||
connection slave;
|
connection slave;
|
||||||
# 1062 = ER_DUP_ENTRY
|
# 1062 = ER_DUP_ENTRY
|
||||||
|
call mtr.add_suppression("Slave SQL.*Error .Duplicate entry .10. for key .b.. on query.* Error_code: 1062");
|
||||||
|
call mtr.add_suppression("Slave SQL.*Query caused different errors on master and slave.*Error on master:.*error code=1062.*Error on slave:.*Error_code: 0");
|
||||||
--let $slave_sql_errno= 1062
|
--let $slave_sql_errno= 1062
|
||||||
--source include/wait_for_slave_sql_error_and_skip.inc
|
--source include/wait_for_slave_sql_error_and_skip.inc
|
||||||
|
|
||||||
|
@ -62,4 +62,24 @@ 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
|
||||||
|
@ -382,6 +382,9 @@ source include/diff_tables.inc;
|
|||||||
|
|
||||||
connection slave;
|
connection slave;
|
||||||
SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions;
|
SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions;
|
||||||
|
call mtr.add_suppression("Slave SQL.*Table definition on master and slave does not match: Column 1 size mismatch.* Error_code: 1535");
|
||||||
|
call mtr.add_suppression("Slave SQL.*Could not execute Delete_rows event on table test.t1.* Error_code: 1032");
|
||||||
|
call mtr.add_suppression("Slave SQL.*Column 1 of table .test.t.. cannot be converted from type.*, Error_code: 1677");
|
||||||
|
|
||||||
--let $rpl_only_running_threads= 1
|
--let $rpl_only_running_threads= 1
|
||||||
--source include/rpl_reset.inc
|
--source include/rpl_reset.inc
|
||||||
|
@ -147,6 +147,8 @@ sync_slave_with_master;
|
|||||||
connection master;
|
connection master;
|
||||||
INSERT INTO t4 VALUES (4);
|
INSERT INTO t4 VALUES (4);
|
||||||
connection slave;
|
connection slave;
|
||||||
|
call mtr.add_suppression("Slave SQL.*Table definition on master and slave does not match: Column [012] type mismatch.* Error_code: 1535");
|
||||||
|
call mtr.add_suppression("Slave SQL.*Column [0-9] of table .test.t[0-9]. cannot be converted from type.* Error_code: 1677");
|
||||||
--let $slave_skip_counter= 2
|
--let $slave_skip_counter= 2
|
||||||
--let $slave_sql_errno= 1677
|
--let $slave_sql_errno= 1677
|
||||||
--let $show_slave_sql_error= 1
|
--let $show_slave_sql_error= 1
|
||||||
|
@ -25,6 +25,7 @@ drop table t1;
|
|||||||
|
|
||||||
connection slave;
|
connection slave;
|
||||||
--source include/wait_for_slave_sql_to_stop.inc
|
--source include/wait_for_slave_sql_to_stop.inc
|
||||||
|
call mtr.add_suppression("Slave SQL.*Query caused different errors on master and slave.*Error on master:.* error code=1062.*Error on slave:.* Error_code: 0");
|
||||||
let $error= query_get_value(SHOW SLAVE STATUS, Last_SQL_Error, 1);
|
let $error= query_get_value(SHOW SLAVE STATUS, Last_SQL_Error, 1);
|
||||||
let $errno= query_get_value(SHOW SLAVE STATUS, Last_SQL_Errno, 1);
|
let $errno= query_get_value(SHOW SLAVE STATUS, Last_SQL_Errno, 1);
|
||||||
--echo Error: "$error" (expected different error codes on master and slave)
|
--echo Error: "$error" (expected different error codes on master and slave)
|
||||||
|
@ -23,6 +23,8 @@ insert into tm set a=null; # to simulate killed status on the slave
|
|||||||
commit;
|
commit;
|
||||||
|
|
||||||
connection slave;
|
connection slave;
|
||||||
|
call mtr.add_suppression("Slave SQL.*Request to stop slave SQL Thread received while applying a group that has non-transactional changes; waiting for completion of the group");
|
||||||
|
call mtr.add_suppression("Slave SQL.*Slave SQL Thread stopped with incomplete event group having non-transactional changes");
|
||||||
|
|
||||||
# slave will catch the killed status but won't shut down immediately
|
# slave will catch the killed status but won't shut down immediately
|
||||||
# only after the whole group has done (commit)
|
# only after the whole group has done (commit)
|
||||||
|
@ -1765,6 +1765,22 @@ SELECT
|
|||||||
HEX(DATE_SUB(DATE('2007-08-03'), INTERVAL 1 DAY)) AS field_date,
|
HEX(DATE_SUB(DATE('2007-08-03'), INTERVAL 1 DAY)) AS field_date,
|
||||||
HEX(DATE_SUB(CAST('2007-08-03 17:33:00' AS DATETIME), INTERVAL 1 MINUTE)) AS field_datetime;
|
HEX(DATE_SUB(CAST('2007-08-03 17:33:00' AS DATETIME), INTERVAL 1 MINUTE)) AS field_datetime;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#11926811 / Bug#60625 Illegal mix of collations
|
||||||
|
--echo #
|
||||||
|
SELECT @@collation_connection;
|
||||||
|
DELIMITER //;
|
||||||
|
CREATE PROCEDURE p1()
|
||||||
|
BEGIN
|
||||||
|
DECLARE v_LastPaymentDate DATETIME DEFAULT NULL;
|
||||||
|
SELECT v_LastPaymentDate < NOW();
|
||||||
|
EXPLAIN EXTENDED SELECT v_LastPaymentDate < NOW();
|
||||||
|
SHOW WARNINGS;
|
||||||
|
EXPLAIN EXTENDED SELECT CONCAT(v_LastPaymentDate, NOW());
|
||||||
|
END//
|
||||||
|
DELIMITER ;//
|
||||||
|
CALL p1;
|
||||||
|
DROP PROCEDURE p1;
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # Bug#52159 returning time type from function and empty left join causes debug assertion
|
--echo # Bug#52159 returning time type from function and empty left join causes debug assertion
|
||||||
|
@ -2,3 +2,4 @@ disable_query_log;
|
|||||||
--require r/true.require
|
--require r/true.require
|
||||||
select (PLUGIN_LIBRARY LIKE 'auth_test_plugin%') as `TRUE` FROM INFORMATION_SCHEMA.PLUGINS
|
select (PLUGIN_LIBRARY LIKE 'auth_test_plugin%') as `TRUE` FROM INFORMATION_SCHEMA.PLUGINS
|
||||||
WHERE PLUGIN_NAME='test_plugin_server';
|
WHERE PLUGIN_NAME='test_plugin_server';
|
||||||
|
enable_query_log;
|
||||||
|
@ -634,6 +634,10 @@ drop table t1;
|
|||||||
drop table bug29807;
|
drop table bug29807;
|
||||||
create table bug29807 (a int);
|
create table bug29807 (a int);
|
||||||
drop table bug29807;
|
drop table bug29807;
|
||||||
|
--disable_query_log
|
||||||
|
call mtr.add_suppression("InnoDB: Error: table .test...bug29807. does not exist in the InnoDB internal");
|
||||||
|
call mtr.add_suppression("Cannot find or open table test\/bug29807 from");
|
||||||
|
--enable_query_log
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -71,7 +71,7 @@ SET @@collation_connection = @collation_connection_saved||
|
|||||||
-- Insert patterns that should always be suppressed
|
-- Insert patterns that should always be suppressed
|
||||||
--
|
--
|
||||||
INSERT INTO global_suppressions VALUES
|
INSERT INTO global_suppressions VALUES
|
||||||
("'SELECT UNIX_TIMESTAMP\\(\\)' failed on master"),
|
(".SELECT UNIX_TIMESTAMP... failed on master"),
|
||||||
("Aborted connection"),
|
("Aborted connection"),
|
||||||
("Client requested master to start replication from impossible position"),
|
("Client requested master to start replication from impossible position"),
|
||||||
("Could not find first log file name in binary log"),
|
("Could not find first log file name in binary log"),
|
||||||
@ -125,11 +125,9 @@ INSERT INTO global_suppressions VALUES
|
|||||||
("Slave: The incident LOST_EVENTS occured on the master"),
|
("Slave: The incident LOST_EVENTS occured on the master"),
|
||||||
("Slave: Unknown error.* 1105"),
|
("Slave: Unknown error.* 1105"),
|
||||||
("Slave: Can't drop database.* database doesn't exist"),
|
("Slave: Can't drop database.* database doesn't exist"),
|
||||||
("Slave SQL:.*(Error_code: \[\[:digit:\]\]+|Query:.*)"),
|
|
||||||
("Sort aborted"),
|
("Sort aborted"),
|
||||||
("Time-out in NDB"),
|
("Time-out in NDB"),
|
||||||
("Warning:\s+One can only use the --user.*root"),
|
("Warning:\s+One can only use the --user.*root"),
|
||||||
("Warning:\s+Setting lower_case_table_names=2"),
|
|
||||||
("Warning:\s+Table:.* on (delete|rename)"),
|
("Warning:\s+Table:.* on (delete|rename)"),
|
||||||
("You have an error in your SQL syntax"),
|
("You have an error in your SQL syntax"),
|
||||||
("deprecated"),
|
("deprecated"),
|
||||||
@ -142,53 +140,20 @@ INSERT INTO global_suppressions VALUES
|
|||||||
("slave SQL thread aborted"),
|
("slave SQL thread aborted"),
|
||||||
("Slave: .*Duplicate entry"),
|
("Slave: .*Duplicate entry"),
|
||||||
|
|
||||||
/*
|
|
||||||
Special case, made as specific as possible, for:
|
|
||||||
Bug #28436: Incorrect position in SHOW BINLOG EVENTS causes
|
|
||||||
server coredump
|
|
||||||
*/
|
|
||||||
|
|
||||||
("Error in Log_event::read_log_event\\\(\\\): 'Sanity check failed', data_len: 258, event_type: 49"),
|
|
||||||
|
|
||||||
("Statement may not be safe to log in statement format"),
|
("Statement may not be safe to log in statement format"),
|
||||||
|
|
||||||
/* test case for Bug#bug29807 copies a stray frm into database */
|
|
||||||
("InnoDB: Error: table `test`.`bug29807` does not exist in the InnoDB internal"),
|
|
||||||
("Cannot find or open table test\/bug29807 from"),
|
|
||||||
|
|
||||||
/* innodb foreign key tests that fail in ALTER or RENAME produce this */
|
/* innodb foreign key tests that fail in ALTER or RENAME produce this */
|
||||||
("InnoDB: Error: in ALTER TABLE `test`.`t[123]`"),
|
("InnoDB: Error: in ALTER TABLE `test`.`t[123]`"),
|
||||||
("InnoDB: Error: in RENAME TABLE table `test`.`t1`"),
|
("InnoDB: Error: in RENAME TABLE table `test`.`t1`"),
|
||||||
("InnoDB: Error: table `test`.`t[123]` does not exist in the InnoDB internal"),
|
("InnoDB: Error: table `test`.`t[123]` does not exist in the InnoDB internal"),
|
||||||
|
|
||||||
/* Test case for Bug#14233 produces the following warnings: */
|
|
||||||
("Stored routine 'test'.'bug14233_1': invalid value in column mysql.proc"),
|
|
||||||
("Stored routine 'test'.'bug14233_2': invalid value in column mysql.proc"),
|
|
||||||
("Stored routine 'test'.'bug14233_3': invalid value in column mysql.proc"),
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
BUG#32080 - Excessive warnings on Solaris: setrlimit could not
|
BUG#32080 - Excessive warnings on Solaris: setrlimit could not
|
||||||
change the size of core files
|
change the size of core files
|
||||||
*/
|
*/
|
||||||
("setrlimit could not change the size of core files to 'infinity'"),
|
("setrlimit could not change the size of core files to 'infinity'"),
|
||||||
|
|
||||||
/*
|
|
||||||
rpl_extrColmaster_*.test, the slave thread produces warnings
|
|
||||||
when it get updates to a table that has more columns on the
|
|
||||||
master
|
|
||||||
*/
|
|
||||||
("Slave: Unknown column 'c7' in 't15' Error_code: 1054"),
|
|
||||||
("Slave: Can't DROP 'c7'.* 1091"),
|
|
||||||
("Slave: Key column 'c6'.* 1072"),
|
|
||||||
("The slave I.O thread stops because a fatal error is encountered when it try to get the value of SERVER_ID variable from master."),
|
("The slave I.O thread stops because a fatal error is encountered when it try to get the value of SERVER_ID variable from master."),
|
||||||
(".SELECT UNIX_TIMESTAMP... failed on master, do not trust column Seconds_Behind_Master of SHOW SLAVE STATUS"),
|
|
||||||
|
|
||||||
/* Special case for Bug #26402 in show_check.test
|
|
||||||
- Question marks are not valid file name parts on Windows. Ignore
|
|
||||||
this error message.
|
|
||||||
*/
|
|
||||||
("Can't find file: '.\\\\test\\\\\\?{8}.frm'"),
|
|
||||||
("Slave: Unknown table 't1' Error_code: 1051"),
|
|
||||||
|
|
||||||
/* Added 2009-08-XX after fixing Bug #42408 */
|
/* Added 2009-08-XX after fixing Bug #42408 */
|
||||||
|
|
||||||
@ -216,14 +181,6 @@ INSERT INTO global_suppressions VALUES
|
|||||||
("==[0-9]*== Warning: invalid file descriptor -1 in syscall write()"),
|
("==[0-9]*== Warning: invalid file descriptor -1 in syscall write()"),
|
||||||
("==[0-9]*== Warning: invalid file descriptor -1 in syscall read()"),
|
("==[0-9]*== Warning: invalid file descriptor -1 in syscall read()"),
|
||||||
|
|
||||||
/*
|
|
||||||
Transient network failures that cause warnings on reconnect.
|
|
||||||
BUG#47743 and BUG#47983.
|
|
||||||
*/
|
|
||||||
("Slave I/O: Get master SERVER_ID failed with error:.*"),
|
|
||||||
("Slave I/O: Get master clock failed with error:.*"),
|
|
||||||
("Slave I/O: Get master COLLATION_SERVER failed with error:.*"),
|
|
||||||
("Slave I/O: Get master TIME_ZONE failed with error:.*"),
|
|
||||||
/*
|
/*
|
||||||
BUG#42147 - Concurrent DML and LOCK TABLE ... READ for InnoDB
|
BUG#42147 - Concurrent DML and LOCK TABLE ... READ for InnoDB
|
||||||
table cause warnings in errlog
|
table cause warnings in errlog
|
||||||
|
24
mysql-test/include/not_crashrep.inc
Normal file
24
mysql-test/include/not_crashrep.inc
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# Check if CrashReporter is enabled and would open a window
|
||||||
|
|
||||||
|
perl;
|
||||||
|
sub skip_test {
|
||||||
|
# Only relevant on Mac OS X
|
||||||
|
return 0 unless $^O eq 'darwin';
|
||||||
|
my $crep= `defaults read com.apple.CrashReporter DialogType`;
|
||||||
|
return 0 if $?;
|
||||||
|
chomp ($crep);
|
||||||
|
$crep= lc $crep;
|
||||||
|
return ($crep eq 'basic' || $crep eq 'developer');
|
||||||
|
}
|
||||||
|
my $skip= skip_test();
|
||||||
|
open (F, ">" . $ENV{'MYSQL_TMP_DIR'} . "/crashrep.inc");
|
||||||
|
print F "let \$crashrep= $skip;\n";
|
||||||
|
close F;
|
||||||
|
EOF
|
||||||
|
|
||||||
|
--source $MYSQL_TMP_DIR/crashrep.inc
|
||||||
|
--remove_file $MYSQL_TMP_DIR/crashrep.inc
|
||||||
|
|
||||||
|
if ($crashrep) {
|
||||||
|
--skip CrashReporter would popup a window
|
||||||
|
}
|
@ -81,7 +81,7 @@ while (`$_query`)
|
|||||||
sleep 0.1;
|
sleep 0.1;
|
||||||
let $_show_status_value= query_get_value("SHOW $status_type STATUS LIKE '$status_var'", Value, 1);
|
let $_show_status_value= query_get_value("SHOW $status_type STATUS LIKE '$status_var'", Value, 1);
|
||||||
let $_query= SELECT NOT('$_show_status_value' $_status_var_comparsion '$status_var_value');
|
let $_query= SELECT NOT('$_show_status_value' $_status_var_comparsion '$status_var_value');
|
||||||
if ($is_number)
|
if ($_is_number)
|
||||||
{
|
{
|
||||||
let $_query= SELECT NOT($_show_status_value $_status_var_comparsion $status_var_value);
|
let $_query= SELECT NOT($_show_status_value $_status_var_comparsion $status_var_value);
|
||||||
}
|
}
|
||||||
|
@ -28,8 +28,6 @@ use My::Platform;
|
|||||||
use base qw(Exporter);
|
use base qw(Exporter);
|
||||||
our @EXPORT= qw(my_find_bin my_find_dir my_find_file NOT_REQUIRED);
|
our @EXPORT= qw(my_find_bin my_find_dir my_find_file NOT_REQUIRED);
|
||||||
|
|
||||||
our $vs_config_dir;
|
|
||||||
|
|
||||||
my $bin_extension= ".exe" if IS_WINDOWS;
|
my $bin_extension= ".exe" if IS_WINDOWS;
|
||||||
|
|
||||||
# Helper function to be used for fourth parameter to find functions
|
# Helper function to be used for fourth parameter to find functions
|
||||||
@ -158,7 +156,8 @@ sub my_find_paths {
|
|||||||
# User can select to look in a special build dir
|
# User can select to look in a special build dir
|
||||||
# which is a subdirectory of any of the paths
|
# which is a subdirectory of any of the paths
|
||||||
my @extra_dirs;
|
my @extra_dirs;
|
||||||
my $build_dir= $vs_config_dir || $ENV{MTR_VS_CONFIG} || $ENV{MTR_BUILD_DIR};
|
my $build_dir= $::opt_config_dir || $ENV{MTR_VS_CONFIG}
|
||||||
|
|| $ENV{MTR_BUILD_DIR};
|
||||||
push(@extra_dirs, $build_dir) if defined $build_dir;
|
push(@extra_dirs, $build_dir) if defined $build_dir;
|
||||||
|
|
||||||
if (defined $extension){
|
if (defined $extension){
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# -*- cperl -*-
|
# -*- cperl -*-
|
||||||
# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the GNU Library General Public
|
# modify it under the terms of the GNU Library General Public
|
||||||
@ -36,6 +36,7 @@ sub start_timer($);
|
|||||||
sub has_expired($);
|
sub has_expired($);
|
||||||
sub init_timers();
|
sub init_timers();
|
||||||
sub mark_time_used($);
|
sub mark_time_used($);
|
||||||
|
sub mark_time_idle();
|
||||||
sub add_total_times($);
|
sub add_total_times($);
|
||||||
sub print_times_used($$);
|
sub print_times_used($$);
|
||||||
sub print_total_times($);
|
sub print_total_times($);
|
||||||
@ -224,6 +225,7 @@ my %time_used= (
|
|||||||
'ch-warn' => 0,
|
'ch-warn' => 0,
|
||||||
'test' => 0,
|
'test' => 0,
|
||||||
'init' => 0,
|
'init' => 0,
|
||||||
|
'admin' => 0,
|
||||||
);
|
);
|
||||||
|
|
||||||
my %time_text= (
|
my %time_text= (
|
||||||
@ -232,7 +234,8 @@ my %time_text= (
|
|||||||
'check' => "Check-testcase",
|
'check' => "Check-testcase",
|
||||||
'ch-warn' => "Check for warnings",
|
'ch-warn' => "Check for warnings",
|
||||||
'test' => "Test execution",
|
'test' => "Test execution",
|
||||||
'init' => "Initialization etc.",
|
'init' => "Initialization/cleanup",
|
||||||
|
'admin' => "Test administration",
|
||||||
);
|
);
|
||||||
|
|
||||||
# Counts number of reports from workers
|
# Counts number of reports from workers
|
||||||
@ -255,6 +258,10 @@ sub mark_time_used($) {
|
|||||||
$last_timer_set= $curr_time;
|
$last_timer_set= $curr_time;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub mark_time_idle() {
|
||||||
|
$last_timer_set= gettimeofday() if $opt_report_times;
|
||||||
|
}
|
||||||
|
|
||||||
sub add_total_times($) {
|
sub add_total_times($) {
|
||||||
my ($dummy, $num, @line)= split (" ", $_[0]);
|
my ($dummy, $num, @line)= split (" ", $_[0]);
|
||||||
|
|
||||||
|
@ -32,6 +32,7 @@ our @EXPORT= qw(report_option mtr_print_line mtr_print_thick_line
|
|||||||
use mtr_match;
|
use mtr_match;
|
||||||
use My::Platform;
|
use My::Platform;
|
||||||
use POSIX qw[ _exit ];
|
use POSIX qw[ _exit ];
|
||||||
|
use IO::Handle qw[ flush ];
|
||||||
require "mtr_io.pl";
|
require "mtr_io.pl";
|
||||||
|
|
||||||
my $tot_real_time= 0;
|
my $tot_real_time= 0;
|
||||||
@ -72,7 +73,7 @@ sub _mtr_report_test_name ($) {
|
|||||||
print _name(). _timestamp();
|
print _name(). _timestamp();
|
||||||
printf "%-40s ", $tname;
|
printf "%-40s ", $tname;
|
||||||
my $worker = $tinfo->{worker};
|
my $worker = $tinfo->{worker};
|
||||||
printf "w$worker " if $worker;
|
print "w$worker " if defined $worker;
|
||||||
|
|
||||||
return $tname;
|
return $tname;
|
||||||
}
|
}
|
||||||
@ -487,6 +488,7 @@ sub mtr_warning (@) {
|
|||||||
|
|
||||||
# Print error to screen and then exit
|
# Print error to screen and then exit
|
||||||
sub mtr_error (@) {
|
sub mtr_error (@) {
|
||||||
|
IO::Handle::flush(\*STDOUT) if IS_WINDOWS;
|
||||||
print STDERR _name(). _timestamp().
|
print STDERR _name(). _timestamp().
|
||||||
"mysql-test-run: *** ERROR: ". join(" ", @_). "\n";
|
"mysql-test-run: *** ERROR: ". join(" ", @_). "\n";
|
||||||
if (IS_WINDOWS)
|
if (IS_WINDOWS)
|
||||||
|
@ -194,6 +194,10 @@ my $opt_debug_common;
|
|||||||
our $opt_debug_server;
|
our $opt_debug_server;
|
||||||
our @opt_cases; # The test cases names in argv
|
our @opt_cases; # The test cases names in argv
|
||||||
our $opt_embedded_server;
|
our $opt_embedded_server;
|
||||||
|
# -1 indicates use default, override with env.var.
|
||||||
|
my $opt_ctest= env_or_val(MTR_UNIT_TESTS => -1);
|
||||||
|
# Unit test report stored here for delayed printing
|
||||||
|
my $ctest_report;
|
||||||
|
|
||||||
# Options used when connecting to an already running server
|
# Options used when connecting to an already running server
|
||||||
my %opts_extern;
|
my %opts_extern;
|
||||||
@ -215,9 +219,12 @@ our %gprof_dirs;
|
|||||||
our $glob_debugger= 0;
|
our $glob_debugger= 0;
|
||||||
our $opt_gdb;
|
our $opt_gdb;
|
||||||
our $opt_client_gdb;
|
our $opt_client_gdb;
|
||||||
|
our $opt_dbx;
|
||||||
|
our $opt_client_dbx;
|
||||||
our $opt_ddd;
|
our $opt_ddd;
|
||||||
our $opt_client_ddd;
|
our $opt_client_ddd;
|
||||||
our $opt_manual_gdb;
|
our $opt_manual_gdb;
|
||||||
|
our $opt_manual_dbx;
|
||||||
our $opt_manual_ddd;
|
our $opt_manual_ddd;
|
||||||
our $opt_manual_debug;
|
our $opt_manual_debug;
|
||||||
our $opt_debugger;
|
our $opt_debugger;
|
||||||
@ -493,6 +500,10 @@ sub main {
|
|||||||
mtr_error("Not all tests completed");
|
mtr_error("Not all tests completed");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mark_time_used('init');
|
||||||
|
|
||||||
|
push @$completed, run_ctest() if $opt_ctest;
|
||||||
|
|
||||||
mtr_print_line();
|
mtr_print_line();
|
||||||
|
|
||||||
if ( $opt_gcov ) {
|
if ( $opt_gcov ) {
|
||||||
@ -500,6 +511,11 @@ sub main {
|
|||||||
$opt_gcov_msg, $opt_gcov_err);
|
$opt_gcov_msg, $opt_gcov_err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($ctest_report) {
|
||||||
|
print "$ctest_report\n";
|
||||||
|
mtr_print_line();
|
||||||
|
}
|
||||||
|
|
||||||
print_total_times($opt_parallel) if $opt_report_times;
|
print_total_times($opt_parallel) if $opt_report_times;
|
||||||
|
|
||||||
mtr_report_stats("Completed", $completed);
|
mtr_report_stats("Completed", $completed);
|
||||||
@ -533,7 +549,9 @@ sub run_test_server ($$$) {
|
|||||||
my $s= IO::Select->new();
|
my $s= IO::Select->new();
|
||||||
$s->add($server);
|
$s->add($server);
|
||||||
while (1) {
|
while (1) {
|
||||||
|
mark_time_used('admin');
|
||||||
my @ready = $s->can_read(1); # Wake up once every second
|
my @ready = $s->can_read(1); # Wake up once every second
|
||||||
|
mark_time_idle();
|
||||||
foreach my $sock (@ready) {
|
foreach my $sock (@ready) {
|
||||||
if ($sock == $server) {
|
if ($sock == $server) {
|
||||||
# New client connected
|
# New client connected
|
||||||
@ -875,7 +893,7 @@ sub run_worker ($) {
|
|||||||
if ( $opt_gprof ) {
|
if ( $opt_gprof ) {
|
||||||
gprof_collect (find_mysqld($basedir), keys %gprof_dirs);
|
gprof_collect (find_mysqld($basedir), keys %gprof_dirs);
|
||||||
}
|
}
|
||||||
mark_time_used('init');
|
mark_time_used('admin');
|
||||||
print_times_used($server, $thread_num);
|
print_times_used($server, $thread_num);
|
||||||
exit($valgrind_reports);
|
exit($valgrind_reports);
|
||||||
}
|
}
|
||||||
@ -988,6 +1006,9 @@ sub command_line_setup {
|
|||||||
'ddd' => \$opt_ddd,
|
'ddd' => \$opt_ddd,
|
||||||
'client-ddd' => \$opt_client_ddd,
|
'client-ddd' => \$opt_client_ddd,
|
||||||
'manual-ddd' => \$opt_manual_ddd,
|
'manual-ddd' => \$opt_manual_ddd,
|
||||||
|
'dbx' => \$opt_dbx,
|
||||||
|
'client-dbx' => \$opt_client_dbx,
|
||||||
|
'manual-dbx' => \$opt_manual_dbx,
|
||||||
'debugger=s' => \$opt_debugger,
|
'debugger=s' => \$opt_debugger,
|
||||||
'client-debugger=s' => \$opt_client_debugger,
|
'client-debugger=s' => \$opt_client_debugger,
|
||||||
'strace-client:s' => \$opt_strace_client,
|
'strace-client:s' => \$opt_strace_client,
|
||||||
@ -1055,6 +1076,7 @@ sub command_line_setup {
|
|||||||
'max-connections=i' => \$opt_max_connections,
|
'max-connections=i' => \$opt_max_connections,
|
||||||
'default-myisam!' => \&collect_option,
|
'default-myisam!' => \&collect_option,
|
||||||
'report-times' => \$opt_report_times,
|
'report-times' => \$opt_report_times,
|
||||||
|
'unit-tests!' => \$opt_ctest,
|
||||||
|
|
||||||
'help|h' => \$opt_usage,
|
'help|h' => \$opt_usage,
|
||||||
# list-options is internal, not listed in help
|
# list-options is internal, not listed in help
|
||||||
@ -1412,6 +1434,12 @@ sub command_line_setup {
|
|||||||
$opt_ddd= undef;
|
$opt_ddd= undef;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($opt_dbx) {
|
||||||
|
mtr_warning("Silently converting --dbx to --client-dbx in embedded mode");
|
||||||
|
$opt_client_dbx= $opt_dbx;
|
||||||
|
$opt_dbx= undef;
|
||||||
|
}
|
||||||
|
|
||||||
if ($opt_debugger)
|
if ($opt_debugger)
|
||||||
{
|
{
|
||||||
mtr_warning("Silently converting --debugger to --client-debugger in embedded mode");
|
mtr_warning("Silently converting --debugger to --client-debugger in embedded mode");
|
||||||
@ -1420,7 +1448,7 @@ sub command_line_setup {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ( $opt_gdb || $opt_ddd || $opt_manual_gdb || $opt_manual_ddd ||
|
if ( $opt_gdb || $opt_ddd || $opt_manual_gdb || $opt_manual_ddd ||
|
||||||
$opt_manual_debug || $opt_debugger )
|
$opt_manual_debug || $opt_debugger || $opt_dbx || $opt_manual_dbx)
|
||||||
{
|
{
|
||||||
mtr_error("You need to use the client debug options for the",
|
mtr_error("You need to use the client debug options for the",
|
||||||
"embedded server. Ex: --client-gdb");
|
"embedded server. Ex: --client-gdb");
|
||||||
@ -1448,6 +1476,7 @@ sub command_line_setup {
|
|||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
if ( $opt_gdb || $opt_client_gdb || $opt_ddd || $opt_client_ddd ||
|
if ( $opt_gdb || $opt_client_gdb || $opt_ddd || $opt_client_ddd ||
|
||||||
$opt_manual_gdb || $opt_manual_ddd || $opt_manual_debug ||
|
$opt_manual_gdb || $opt_manual_ddd || $opt_manual_debug ||
|
||||||
|
$opt_dbx || $opt_client_dbx || $opt_manual_dbx ||
|
||||||
$opt_debugger || $opt_client_debugger )
|
$opt_debugger || $opt_client_debugger )
|
||||||
{
|
{
|
||||||
# Indicate that we are using debugger
|
# Indicate that we are using debugger
|
||||||
@ -1484,6 +1513,14 @@ sub command_line_setup {
|
|||||||
if $opt_suites || @opt_cases;
|
if $opt_suites || @opt_cases;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# --------------------------------------------------------------------------
|
||||||
|
# Don't run ctest if tests or suites named
|
||||||
|
# --------------------------------------------------------------------------
|
||||||
|
|
||||||
|
$opt_ctest= 0 if $opt_ctest == -1 && ($opt_suites || @opt_cases);
|
||||||
|
# Override: disable if running in the PB test environment
|
||||||
|
$opt_ctest= 0 if $opt_ctest == -1 && defined $ENV{PB2WORKDIR};
|
||||||
|
|
||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
# Check use of wait-all
|
# Check use of wait-all
|
||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
@ -3740,7 +3777,7 @@ sub run_testcase ($) {
|
|||||||
|
|
||||||
do_before_run_mysqltest($tinfo);
|
do_before_run_mysqltest($tinfo);
|
||||||
|
|
||||||
mark_time_used('init');
|
mark_time_used('admin');
|
||||||
|
|
||||||
if ( $opt_check_testcases and check_testcase($tinfo, "before") ){
|
if ( $opt_check_testcases and check_testcase($tinfo, "before") ){
|
||||||
# Failed to record state of server or server crashed
|
# Failed to record state of server or server crashed
|
||||||
@ -4682,6 +4719,9 @@ sub mysqld_start ($$) {
|
|||||||
{
|
{
|
||||||
ddd_arguments(\$args, \$exe, $mysqld->name());
|
ddd_arguments(\$args, \$exe, $mysqld->name());
|
||||||
}
|
}
|
||||||
|
if ( $opt_dbx || $opt_manual_dbx ) {
|
||||||
|
dbx_arguments(\$args, \$exe, $mysqld->name());
|
||||||
|
}
|
||||||
elsif ( $opt_debugger )
|
elsif ( $opt_debugger )
|
||||||
{
|
{
|
||||||
debugger_arguments(\$args, \$exe, $mysqld->name());
|
debugger_arguments(\$args, \$exe, $mysqld->name());
|
||||||
@ -5210,7 +5250,7 @@ sub start_mysqltest ($) {
|
|||||||
my $exe= $exe_mysqltest;
|
my $exe= $exe_mysqltest;
|
||||||
my $args;
|
my $args;
|
||||||
|
|
||||||
mark_time_used('init');
|
mark_time_used('admin');
|
||||||
|
|
||||||
mtr_init_args(\$args);
|
mtr_init_args(\$args);
|
||||||
|
|
||||||
@ -5352,6 +5392,9 @@ sub start_mysqltest ($) {
|
|||||||
{
|
{
|
||||||
ddd_arguments(\$args, \$exe, "client");
|
ddd_arguments(\$args, \$exe, "client");
|
||||||
}
|
}
|
||||||
|
if ( $opt_client_dbx ) {
|
||||||
|
dbx_arguments(\$args, \$exe, "client");
|
||||||
|
}
|
||||||
elsif ( $opt_client_debugger )
|
elsif ( $opt_client_debugger )
|
||||||
{
|
{
|
||||||
debugger_arguments(\$args, \$exe, "client");
|
debugger_arguments(\$args, \$exe, "client");
|
||||||
@ -5386,23 +5429,11 @@ sub gdb_arguments {
|
|||||||
# Remove the old gdbinit file
|
# Remove the old gdbinit file
|
||||||
unlink($gdb_init_file);
|
unlink($gdb_init_file);
|
||||||
|
|
||||||
if ( $type eq "client" )
|
# write init file for mysqld or client
|
||||||
{
|
mtr_tofile($gdb_init_file,
|
||||||
# write init file for client
|
"set args $str\n" .
|
||||||
mtr_tofile($gdb_init_file,
|
"break main\n" .
|
||||||
"set args $str\n" .
|
"run");
|
||||||
"break main\n");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
# write init file for mysqld
|
|
||||||
mtr_tofile($gdb_init_file,
|
|
||||||
"set args $str\n" .
|
|
||||||
"break mysql_parse\n" .
|
|
||||||
"commands 1\n" .
|
|
||||||
"disable 1\n" .
|
|
||||||
"end\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( $opt_manual_gdb )
|
if ( $opt_manual_gdb )
|
||||||
{
|
{
|
||||||
@ -5449,24 +5480,12 @@ sub ddd_arguments {
|
|||||||
# Remove the old gdbinit file
|
# Remove the old gdbinit file
|
||||||
unlink($gdb_init_file);
|
unlink($gdb_init_file);
|
||||||
|
|
||||||
if ( $type eq "client" )
|
# write init file for mysqld or client
|
||||||
{
|
mtr_tofile($gdb_init_file,
|
||||||
# write init file for client
|
"file $$exe\n" .
|
||||||
mtr_tofile($gdb_init_file,
|
"set args $str\n" .
|
||||||
"set args $str\n" .
|
"break main\n" .
|
||||||
"break main\n");
|
"run");
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
# write init file for mysqld
|
|
||||||
mtr_tofile($gdb_init_file,
|
|
||||||
"file $$exe\n" .
|
|
||||||
"set args $str\n" .
|
|
||||||
"break mysql_parse\n" .
|
|
||||||
"commands 1\n" .
|
|
||||||
"disable 1\n" .
|
|
||||||
"end");
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( $opt_manual_ddd )
|
if ( $opt_manual_ddd )
|
||||||
{
|
{
|
||||||
@ -5495,6 +5514,46 @@ sub ddd_arguments {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Modify the exe and args so that program is run in dbx in xterm
|
||||||
|
#
|
||||||
|
sub dbx_arguments {
|
||||||
|
my $args= shift;
|
||||||
|
my $exe= shift;
|
||||||
|
my $type= shift;
|
||||||
|
|
||||||
|
# Put $args into a single string
|
||||||
|
my $str= join " ", @$$args;
|
||||||
|
|
||||||
|
if ( $opt_manual_dbx ) {
|
||||||
|
print "\nTo start dbx for $type, type in another window:\n";
|
||||||
|
print "cd $glob_mysql_test_dir; dbx -c \"stop in main; " .
|
||||||
|
"run $str\" $$exe\n";
|
||||||
|
|
||||||
|
# Indicate the exe should not be started
|
||||||
|
$$exe= undef;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$$args= [];
|
||||||
|
mtr_add_arg($$args, "-title");
|
||||||
|
mtr_add_arg($$args, "$type");
|
||||||
|
mtr_add_arg($$args, "-e");
|
||||||
|
|
||||||
|
if ( $exe_libtool ) {
|
||||||
|
mtr_add_arg($$args, $exe_libtool);
|
||||||
|
mtr_add_arg($$args, "--mode=execute");
|
||||||
|
}
|
||||||
|
|
||||||
|
mtr_add_arg($$args, "dbx");
|
||||||
|
mtr_add_arg($$args, "-c");
|
||||||
|
mtr_add_arg($$args, "stop in main; run $str");
|
||||||
|
mtr_add_arg($$args, "$$exe");
|
||||||
|
|
||||||
|
$$exe= "xterm";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Modify the exe and args so that program is run in the selected debugger
|
# Modify the exe and args so that program is run in the selected debugger
|
||||||
#
|
#
|
||||||
@ -5525,18 +5584,6 @@ sub debugger_arguments {
|
|||||||
# Set exe to debuggername
|
# Set exe to debuggername
|
||||||
$$exe= $debugger;
|
$$exe= $debugger;
|
||||||
|
|
||||||
}
|
|
||||||
elsif ( $debugger eq "dbx" )
|
|
||||||
{
|
|
||||||
# xterm -e dbx -r exe arg1 .. argn
|
|
||||||
|
|
||||||
unshift(@$$args, $$exe);
|
|
||||||
unshift(@$$args, "-r");
|
|
||||||
unshift(@$$args, $debugger);
|
|
||||||
unshift(@$$args, "-e");
|
|
||||||
|
|
||||||
$$exe= "xterm";
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -5648,6 +5695,78 @@ sub valgrind_exit_reports() {
|
|||||||
return $found_err;
|
return $found_err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub run_ctest() {
|
||||||
|
my $olddir= getcwd();
|
||||||
|
chdir ($bindir) or die ("Could not chdir to $bindir");
|
||||||
|
my $tinfo;
|
||||||
|
my $no_ctest= (IS_WINDOWS) ? 256 : -1;
|
||||||
|
my $ctest_vs= "";
|
||||||
|
|
||||||
|
# Just ignore if not configured/built to run ctest
|
||||||
|
if (! -f "CTestTestfile.cmake") {
|
||||||
|
chdir($olddir);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Add vs-config option if needed
|
||||||
|
$ctest_vs= "-C $opt_vs_config" if $opt_vs_config;
|
||||||
|
|
||||||
|
# Also silently ignore if we don't have ctest and didn't insist
|
||||||
|
# Special override: also ignore in Pushbuild, some platforms may not have it
|
||||||
|
# Now, run ctest and collect output
|
||||||
|
my $ctest_out= `ctest $ctest_vs 2>&1`;
|
||||||
|
if ($? == $no_ctest && $opt_ctest == -1 && ! defined $ENV{PB2WORKDIR}) {
|
||||||
|
chdir($olddir);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create minimalistic "test" for the reporting
|
||||||
|
$tinfo = My::Test->new
|
||||||
|
(
|
||||||
|
name => 'unit_tests',
|
||||||
|
);
|
||||||
|
# Set dummy worker id to align report with normal tests
|
||||||
|
$tinfo->{worker} = 0 if $opt_parallel > 1;
|
||||||
|
|
||||||
|
my $ctfail= 0; # Did ctest fail?
|
||||||
|
if ($?) {
|
||||||
|
$ctfail= 1;
|
||||||
|
$tinfo->{result}= 'MTR_RES_FAILED';
|
||||||
|
$tinfo->{comment}= "ctest failed with exit code $?, see result below";
|
||||||
|
$ctest_out= "" unless $ctest_out;
|
||||||
|
}
|
||||||
|
my $ctfile= "$opt_vardir/ctest.log";
|
||||||
|
my $ctres= 0; # Did ctest produce report summary?
|
||||||
|
|
||||||
|
open (CTEST, " > $ctfile") or die ("Could not open output file $ctfile");
|
||||||
|
|
||||||
|
# Put ctest output in log file, while analyzing results
|
||||||
|
for (split ('\n', $ctest_out)) {
|
||||||
|
print CTEST "$_\n";
|
||||||
|
if (/tests passed/) {
|
||||||
|
$ctres= 1;
|
||||||
|
$ctest_report .= "\nUnit tests: $_\n";
|
||||||
|
}
|
||||||
|
if ( /FAILED/ or /\(Failed\)/ ) {
|
||||||
|
$ctfail= 1;
|
||||||
|
$ctest_report .= " $_\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
close CTEST;
|
||||||
|
|
||||||
|
# Set needed 'attributes' for test reporting
|
||||||
|
$tinfo->{comment}.= "\nctest did not pruduce report summary" if ! $ctres;
|
||||||
|
$tinfo->{result}= ($ctres && !$ctfail)
|
||||||
|
? 'MTR_RES_PASSED' : 'MTR_RES_FAILED';
|
||||||
|
$ctest_report .= "Report from unit tests in $ctfile";
|
||||||
|
$tinfo->{failures}= ($tinfo->{result} eq 'MTR_RES_FAILED');
|
||||||
|
|
||||||
|
mark_time_used('test');
|
||||||
|
mtr_report_test($tinfo);
|
||||||
|
chdir($olddir);
|
||||||
|
return $tinfo;
|
||||||
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
# Usage
|
# Usage
|
||||||
#
|
#
|
||||||
@ -5766,6 +5885,7 @@ Options for debugging the product
|
|||||||
client-ddd Start mysqltest client in ddd
|
client-ddd Start mysqltest client in ddd
|
||||||
client-debugger=NAME Start mysqltest in the selected debugger
|
client-debugger=NAME Start mysqltest in the selected debugger
|
||||||
client-gdb Start mysqltest client in gdb
|
client-gdb Start mysqltest client in gdb
|
||||||
|
client-dbx Start mysqltest client in dbx
|
||||||
ddd Start mysqld in ddd
|
ddd Start mysqld in ddd
|
||||||
debug Dump trace output for all servers and client programs
|
debug Dump trace output for all servers and client programs
|
||||||
debug-common Same as debug, but sets 'd' debug flags to
|
debug-common Same as debug, but sets 'd' debug flags to
|
||||||
@ -5774,12 +5894,15 @@ Options for debugging the product
|
|||||||
tracing
|
tracing
|
||||||
debugger=NAME Start mysqld in the selected debugger
|
debugger=NAME Start mysqld in the selected debugger
|
||||||
gdb Start the mysqld(s) in gdb
|
gdb Start the mysqld(s) in gdb
|
||||||
|
dbx Start the mysqld(s) in dbx
|
||||||
manual-debug Let user manually start mysqld in debugger, before
|
manual-debug Let user manually start mysqld in debugger, before
|
||||||
running test(s)
|
running test(s)
|
||||||
manual-gdb Let user manually start mysqld in gdb, before running
|
manual-gdb Let user manually start mysqld in gdb, before running
|
||||||
test(s)
|
test(s)
|
||||||
manual-ddd Let user manually start mysqld in ddd, before running
|
manual-ddd Let user manually start mysqld in ddd, before running
|
||||||
test(s)
|
test(s)
|
||||||
|
manual-dbx Let user manually start mysqld in dbx, before running
|
||||||
|
test(s)
|
||||||
strace-client[=path] Create strace output for mysqltest client, optionally
|
strace-client[=path] Create strace output for mysqltest client, optionally
|
||||||
specifying name and path to the trace program to use.
|
specifying name and path to the trace program to use.
|
||||||
Example: $0 --strace-client=ktrace
|
Example: $0 --strace-client=ktrace
|
||||||
@ -5866,6 +5989,9 @@ Misc options
|
|||||||
engine to InnoDB.
|
engine to InnoDB.
|
||||||
report-times Report how much time has been spent on different
|
report-times Report how much time has been spent on different
|
||||||
phases of test execution.
|
phases of test execution.
|
||||||
|
nounit-tests Do not run unit tests. Normally run if configured
|
||||||
|
and if not running named tests/suites
|
||||||
|
unit-tests Run unit tests even if they would otherwise not be run
|
||||||
|
|
||||||
Some options that control enabling a feature for normal test runs,
|
Some options that control enabling a feature for normal test runs,
|
||||||
can be turned off by prepending 'no' to the option, e.g. --notimer.
|
can be turned off by prepending 'no' to the option, e.g. --notimer.
|
||||||
|
@ -1391,3 +1391,16 @@ CREATE DATABASE db1 CHARACTER SET utf8;
|
|||||||
CREATE TABLE db1.t1 (bar TINYTEXT, KEY (bar(100)));
|
CREATE TABLE db1.t1 (bar TINYTEXT, KEY (bar(100)));
|
||||||
ALTER TABLE db1.t1 ADD baz INT;
|
ALTER TABLE db1.t1 ADD baz INT;
|
||||||
DROP DATABASE db1;
|
DROP DATABASE db1;
|
||||||
|
#
|
||||||
|
# Bug#11938039 RE-EXECUTION OF FRM-ONLY ALTER TABLE WITH RENAME
|
||||||
|
# CLAUSE FAILS OR ABORTS SERVER.
|
||||||
|
#
|
||||||
|
drop table if exists t1;
|
||||||
|
create table t1 (a int);
|
||||||
|
prepare stmt1 from 'alter table t1 alter column a set default 1, rename to t2';
|
||||||
|
execute stmt1;
|
||||||
|
rename table t2 to t1;
|
||||||
|
# The below statement should succeed and not emit error or abort server.
|
||||||
|
execute stmt1;
|
||||||
|
deallocate prepare stmt1;
|
||||||
|
drop table t2;
|
||||||
|
@ -10,6 +10,9 @@ UNINSTALL PLUGIN archive;
|
|||||||
INSTALL PLUGIN archive SONAME 'ha_archive.so';
|
INSTALL PLUGIN archive SONAME 'ha_archive.so';
|
||||||
CREATE TABLE t1(a int) ENGINE=ARCHIVE;
|
CREATE TABLE t1(a int) ENGINE=ARCHIVE;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
SELECT 1;
|
||||||
|
1
|
||||||
|
1
|
||||||
UNINSTALL PLUGIN archive;
|
UNINSTALL PLUGIN archive;
|
||||||
UNINSTALL PLUGIN archive;
|
UNINSTALL PLUGIN archive;
|
||||||
ERROR 42000: PLUGIN archive does not exist
|
ERROR 42000: PLUGIN archive does not exist
|
||||||
|
@ -10,6 +10,9 @@ UNINSTALL PLUGIN blackhole;
|
|||||||
INSTALL PLUGIN blackhole SONAME 'ha_blackhole.so';
|
INSTALL PLUGIN blackhole SONAME 'ha_blackhole.so';
|
||||||
CREATE TABLE t1(a int) ENGINE=BLACKHOLE;
|
CREATE TABLE t1(a int) ENGINE=BLACKHOLE;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
SELECT 1;
|
||||||
|
1
|
||||||
|
1
|
||||||
UNINSTALL PLUGIN blackhole;
|
UNINSTALL PLUGIN blackhole;
|
||||||
UNINSTALL PLUGIN blackhole;
|
UNINSTALL PLUGIN blackhole;
|
||||||
ERROR 42000: PLUGIN blackhole does not exist
|
ERROR 42000: PLUGIN blackhole does not exist
|
||||||
|
@ -6,3 +6,15 @@ set @my_max_allowed_packet= @@max_allowed_packet;
|
|||||||
set global max_allowed_packet=100*@@max_allowed_packet;
|
set global max_allowed_packet=100*@@max_allowed_packet;
|
||||||
set global max_allowed_packet=@my_max_allowed_packet;
|
set global max_allowed_packet=@my_max_allowed_packet;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
End of 5.1 tests
|
||||||
|
#
|
||||||
|
# Bug #11766306: 59393: HAVE_INNODB=YES WHEN MYSQLD
|
||||||
|
# STARTED WITH --SKIP-INNODB
|
||||||
|
#
|
||||||
|
SHOW VARIABLES LIKE 'have_innodb';
|
||||||
|
Variable_name Value
|
||||||
|
have_innodb DISABLED
|
||||||
|
SELECT SUPPORT FROM INFORMATION_SCHEMA.ENGINES WHERE engine='innodb';
|
||||||
|
SUPPORT
|
||||||
|
NO
|
||||||
|
End of 5.5 tests
|
||||||
|
@ -2807,6 +2807,32 @@ HEX(DATE_SUB(CAST('2007-08-03 17:33:00' AS DATETIME), INTERVAL 1 MINUTE)) AS fie
|
|||||||
field_str1 field1_str2 field_date field_datetime
|
field_str1 field1_str2 field_date field_datetime
|
||||||
323030372D30382D30322032333A35393A3030 323030372D30382D30332031373A33323A3030 323030372D30382D3032 323030372D30382D30332031373A33323A3030
|
323030372D30382D30322032333A35393A3030 323030372D30382D30332031373A33323A3030 323030372D30382D3032 323030372D30382D30332031373A33323A3030
|
||||||
#
|
#
|
||||||
|
# Bug#11926811 / Bug#60625 Illegal mix of collations
|
||||||
|
#
|
||||||
|
SELECT @@collation_connection;
|
||||||
|
@@collation_connection
|
||||||
|
binary
|
||||||
|
CREATE PROCEDURE p1()
|
||||||
|
BEGIN
|
||||||
|
DECLARE v_LastPaymentDate DATETIME DEFAULT NULL;
|
||||||
|
SELECT v_LastPaymentDate < NOW();
|
||||||
|
EXPLAIN EXTENDED SELECT v_LastPaymentDate < NOW();
|
||||||
|
SHOW WARNINGS;
|
||||||
|
EXPLAIN EXTENDED SELECT CONCAT(v_LastPaymentDate, NOW());
|
||||||
|
END//
|
||||||
|
CALL p1;
|
||||||
|
v_LastPaymentDate < NOW()
|
||||||
|
NULL
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
|
Level Code Message
|
||||||
|
Note 1003 select (v_LastPaymentDate@0 < now()) AS `v_LastPaymentDate < NOW()`
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select concat(v_LastPaymentDate@0,now()) AS `CONCAT(v_LastPaymentDate, NOW())`
|
||||||
|
DROP PROCEDURE p1;
|
||||||
|
#
|
||||||
# Bug#52159 returning time type from function and empty left join causes debug assertion
|
# Bug#52159 returning time type from function and empty left join causes debug assertion
|
||||||
#
|
#
|
||||||
CREATE FUNCTION f1() RETURNS TIME RETURN 1;
|
CREATE FUNCTION f1() RETURNS TIME RETURN 1;
|
||||||
|
@ -3199,6 +3199,32 @@ HEX(DATE_SUB(CAST('2007-08-03 17:33:00' AS DATETIME), INTERVAL 1 MINUTE)) AS fie
|
|||||||
field_str1 field1_str2 field_date field_datetime
|
field_str1 field1_str2 field_date field_datetime
|
||||||
323030372D30382D30322032333A35393A3030 323030372D30382D30332031373A33323A3030 323030372D30382D3032 323030372D30382D30332031373A33323A3030
|
323030372D30382D30322032333A35393A3030 323030372D30382D30332031373A33323A3030 323030372D30382D3032 323030372D30382D30332031373A33323A3030
|
||||||
#
|
#
|
||||||
|
# Bug#11926811 / Bug#60625 Illegal mix of collations
|
||||||
|
#
|
||||||
|
SELECT @@collation_connection;
|
||||||
|
@@collation_connection
|
||||||
|
cp1251_general_ci
|
||||||
|
CREATE PROCEDURE p1()
|
||||||
|
BEGIN
|
||||||
|
DECLARE v_LastPaymentDate DATETIME DEFAULT NULL;
|
||||||
|
SELECT v_LastPaymentDate < NOW();
|
||||||
|
EXPLAIN EXTENDED SELECT v_LastPaymentDate < NOW();
|
||||||
|
SHOW WARNINGS;
|
||||||
|
EXPLAIN EXTENDED SELECT CONCAT(v_LastPaymentDate, NOW());
|
||||||
|
END//
|
||||||
|
CALL p1;
|
||||||
|
v_LastPaymentDate < NOW()
|
||||||
|
NULL
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
|
Level Code Message
|
||||||
|
Note 1003 select (v_LastPaymentDate@0 < now()) AS `v_LastPaymentDate < NOW()`
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select concat(convert(v_LastPaymentDate@0 using cp1251),now()) AS `CONCAT(v_LastPaymentDate, NOW())`
|
||||||
|
DROP PROCEDURE p1;
|
||||||
|
#
|
||||||
# Bug#52159 returning time type from function and empty left join causes debug assertion
|
# Bug#52159 returning time type from function and empty left join causes debug assertion
|
||||||
#
|
#
|
||||||
CREATE FUNCTION f1() RETURNS TIME RETURN 1;
|
CREATE FUNCTION f1() RETURNS TIME RETURN 1;
|
||||||
|
@ -3226,6 +3226,32 @@ HEX(DATE_SUB(CAST('2007-08-03 17:33:00' AS DATETIME), INTERVAL 1 MINUTE)) AS fie
|
|||||||
field_str1 field1_str2 field_date field_datetime
|
field_str1 field1_str2 field_date field_datetime
|
||||||
323030372D30382D30322032333A35393A3030 323030372D30382D30332031373A33323A3030 323030372D30382D3032 323030372D30382D30332031373A33323A3030
|
323030372D30382D30322032333A35393A3030 323030372D30382D30332031373A33323A3030 323030372D30382D3032 323030372D30382D30332031373A33323A3030
|
||||||
#
|
#
|
||||||
|
# Bug#11926811 / Bug#60625 Illegal mix of collations
|
||||||
|
#
|
||||||
|
SELECT @@collation_connection;
|
||||||
|
@@collation_connection
|
||||||
|
latin1_swedish_ci
|
||||||
|
CREATE PROCEDURE p1()
|
||||||
|
BEGIN
|
||||||
|
DECLARE v_LastPaymentDate DATETIME DEFAULT NULL;
|
||||||
|
SELECT v_LastPaymentDate < NOW();
|
||||||
|
EXPLAIN EXTENDED SELECT v_LastPaymentDate < NOW();
|
||||||
|
SHOW WARNINGS;
|
||||||
|
EXPLAIN EXTENDED SELECT CONCAT(v_LastPaymentDate, NOW());
|
||||||
|
END//
|
||||||
|
CALL p1;
|
||||||
|
v_LastPaymentDate < NOW()
|
||||||
|
NULL
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
|
Level Code Message
|
||||||
|
Note 1003 select (v_LastPaymentDate@0 < now()) AS `v_LastPaymentDate < NOW()`
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select concat(v_LastPaymentDate@0,now()) AS `CONCAT(v_LastPaymentDate, NOW())`
|
||||||
|
DROP PROCEDURE p1;
|
||||||
|
#
|
||||||
# Bug#52159 returning time type from function and empty left join causes debug assertion
|
# Bug#52159 returning time type from function and empty left join causes debug assertion
|
||||||
#
|
#
|
||||||
CREATE FUNCTION f1() RETURNS TIME RETURN 1;
|
CREATE FUNCTION f1() RETURNS TIME RETURN 1;
|
||||||
@ -3246,5 +3272,20 @@ maketime(`a`,`a`,`a`)
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET sql_mode=default;
|
SET sql_mode=default;
|
||||||
#
|
#
|
||||||
|
# Bug#11764503 (Bug#57341) Query in EXPLAIN EXTENDED shows wrong characters
|
||||||
|
#
|
||||||
|
SET NAMES utf8;
|
||||||
|
EXPLAIN EXTENDED SELECT 'abcdó', _latin1'abcdó', _utf8'abcdó';
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select 'abcdó' AS `abcdó`,_latin1'abcd\xC3\xB3' AS `abcdó`,_utf8'abcd\xC3\xB3' AS `abcdó`
|
||||||
|
SET NAMES latin1;
|
||||||
|
EXPLAIN EXTENDED SELECT 'abcdó', _latin1'abcdó', _utf8'abcdó';
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select 'abcdó' AS `abcdó`,_latin1'abcd\xC3\xB3' AS `abcdó`,_utf8'abcd\xC3\xB3' AS `abcd<63>`
|
||||||
|
#
|
||||||
# End of 5.5 tests
|
# End of 5.5 tests
|
||||||
#
|
#
|
||||||
|
@ -4060,6 +4060,32 @@ HEX(DATE_SUB(CAST('2007-08-03 17:33:00' AS DATETIME), INTERVAL 1 MINUTE)) AS fie
|
|||||||
field_str1 field1_str2 field_date field_datetime
|
field_str1 field1_str2 field_date field_datetime
|
||||||
0032003000300037002D00300038002D00300032002000320033003A00350039003A00300030 0032003000300037002D00300038002D00300033002000310037003A00330032003A00300030 323030372D30382D3032 323030372D30382D30332031373A33323A3030
|
0032003000300037002D00300038002D00300032002000320033003A00350039003A00300030 0032003000300037002D00300038002D00300033002000310037003A00330032003A00300030 323030372D30382D3032 323030372D30382D30332031373A33323A3030
|
||||||
#
|
#
|
||||||
|
# Bug#11926811 / Bug#60625 Illegal mix of collations
|
||||||
|
#
|
||||||
|
SELECT @@collation_connection;
|
||||||
|
@@collation_connection
|
||||||
|
ucs2_general_ci
|
||||||
|
CREATE PROCEDURE p1()
|
||||||
|
BEGIN
|
||||||
|
DECLARE v_LastPaymentDate DATETIME DEFAULT NULL;
|
||||||
|
SELECT v_LastPaymentDate < NOW();
|
||||||
|
EXPLAIN EXTENDED SELECT v_LastPaymentDate < NOW();
|
||||||
|
SHOW WARNINGS;
|
||||||
|
EXPLAIN EXTENDED SELECT CONCAT(v_LastPaymentDate, NOW());
|
||||||
|
END//
|
||||||
|
CALL p1;
|
||||||
|
v_LastPaymentDate < NOW()
|
||||||
|
NULL
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
|
Level Code Message
|
||||||
|
Note 1003 select (v_LastPaymentDate@0 < now()) AS `v_LastPaymentDate < NOW()`
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select concat(convert(v_LastPaymentDate@0 using ucs2),convert(now() using ucs2)) AS `CONCAT(v_LastPaymentDate, NOW())`
|
||||||
|
DROP PROCEDURE p1;
|
||||||
|
#
|
||||||
# Bug#52159 returning time type from function and empty left join causes debug assertion
|
# Bug#52159 returning time type from function and empty left join causes debug assertion
|
||||||
#
|
#
|
||||||
CREATE FUNCTION f1() RETURNS TIME RETURN 1;
|
CREATE FUNCTION f1() RETURNS TIME RETURN 1;
|
||||||
|
@ -4938,6 +4938,32 @@ HEX(DATE_SUB(CAST('2007-08-03 17:33:00' AS DATETIME), INTERVAL 1 MINUTE)) AS fie
|
|||||||
field_str1 field1_str2 field_date field_datetime
|
field_str1 field1_str2 field_date field_datetime
|
||||||
323030372D30382D30322032333A35393A3030 323030372D30382D30332031373A33323A3030 323030372D30382D3032 323030372D30382D30332031373A33323A3030
|
323030372D30382D30322032333A35393A3030 323030372D30382D30332031373A33323A3030 323030372D30382D3032 323030372D30382D30332031373A33323A3030
|
||||||
#
|
#
|
||||||
|
# Bug#11926811 / Bug#60625 Illegal mix of collations
|
||||||
|
#
|
||||||
|
SELECT @@collation_connection;
|
||||||
|
@@collation_connection
|
||||||
|
utf8_general_ci
|
||||||
|
CREATE PROCEDURE p1()
|
||||||
|
BEGIN
|
||||||
|
DECLARE v_LastPaymentDate DATETIME DEFAULT NULL;
|
||||||
|
SELECT v_LastPaymentDate < NOW();
|
||||||
|
EXPLAIN EXTENDED SELECT v_LastPaymentDate < NOW();
|
||||||
|
SHOW WARNINGS;
|
||||||
|
EXPLAIN EXTENDED SELECT CONCAT(v_LastPaymentDate, NOW());
|
||||||
|
END//
|
||||||
|
CALL p1;
|
||||||
|
v_LastPaymentDate < NOW()
|
||||||
|
NULL
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
|
Level Code Message
|
||||||
|
Note 1003 select (v_LastPaymentDate@0 < now()) AS `v_LastPaymentDate < NOW()`
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select concat(convert(v_LastPaymentDate@0 using utf8),now()) AS `CONCAT(v_LastPaymentDate, NOW())`
|
||||||
|
DROP PROCEDURE p1;
|
||||||
|
#
|
||||||
# Bug#52159 returning time type from function and empty left join causes debug assertion
|
# Bug#52159 returning time type from function and empty left join causes debug assertion
|
||||||
#
|
#
|
||||||
CREATE FUNCTION f1() RETURNS TIME RETURN 1;
|
CREATE FUNCTION f1() RETURNS TIME RETURN 1;
|
||||||
@ -4969,5 +4995,20 @@ GROUP BY INSERT('', t2.a, t1.a, (@@global.max_binlog_size));
|
|||||||
ERROR 23000: Duplicate entry '107374182410737418241' for key 'group_key'
|
ERROR 23000: Duplicate entry '107374182410737418241' for key 'group_key'
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
|
# Bug#11764503 (Bug#57341) Query in EXPLAIN EXTENDED shows wrong characters
|
||||||
|
#
|
||||||
|
SET NAMES latin1;
|
||||||
|
EXPLAIN EXTENDED SELECT 'abcdÁÂÃÄÅ', _latin1'abcdÁÂÃÄÅ', _utf8'abcdÁÂÃÄÅ' AS u;
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select 'abcdÁÂÃÄÅ' AS `abcdÁÂÃÄÅ`,_latin1'abcd\xC3\x81\xC3\x82\xC3\x83\xC3\x84\xC3\x85' AS `abcdÁÂÃÄÅ`,_utf8'abcd\xC3\x81\xC3\x82\xC3\x83\xC3\x84\xC3\x85' AS `u`
|
||||||
|
SET NAMES utf8;
|
||||||
|
EXPLAIN EXTENDED SELECT 'abcdÁÂÃÄÅ', _latin1'abcdÁÂÃÄÅ', _utf8'abcdÁÂÃÄÅ';
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select 'abcdÁÂÃÄÅ' AS `abcdÁÂÃÄÅ`,_latin1'abcd\xC3\x81\xC3\x82\xC3\x83\xC3\x84\xC3\x85' AS `abcdÃÂÃÄÅ`,_utf8'abcd\xC3\x81\xC3\x82\xC3\x83\xC3\x84\xC3\x85' AS `abcdÁÂÃÄÅ`
|
||||||
|
#
|
||||||
# End of 5.5 tests
|
# End of 5.5 tests
|
||||||
#
|
#
|
||||||
|
@ -747,6 +747,15 @@ event_name originator
|
|||||||
ev1 4294967295
|
ev1 4294967295
|
||||||
DROP EVENT ev1;
|
DROP EVENT ev1;
|
||||||
SET GLOBAL server_id = @old_server_id;
|
SET GLOBAL server_id = @old_server_id;
|
||||||
|
CREATE DATABASE event_test12;
|
||||||
|
USE event_test12;
|
||||||
|
CREATE EVENT ev1 ON SCHEDULE EVERY 1 DAY DO SELECT 1;
|
||||||
|
CREATE DATABASE event_test1;
|
||||||
|
USE event_test1;
|
||||||
|
SHOW EVENTS;
|
||||||
|
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
|
||||||
|
DROP DATABASE event_test1;
|
||||||
|
DROP DATABASE event_test12;
|
||||||
DROP DATABASE events_test;
|
DROP DATABASE events_test;
|
||||||
SET GLOBAL event_scheduler= 'ON';
|
SET GLOBAL event_scheduler= 'ON';
|
||||||
SET @@global.concurrent_insert= @concurrent_insert;
|
SET @@global.concurrent_insert= @concurrent_insert;
|
||||||
|
@ -451,3 +451,18 @@ unlock tables;
|
|||||||
handler t1 close;
|
handler t1 close;
|
||||||
# Cleanup.
|
# Cleanup.
|
||||||
drop tables t1, t2;
|
drop tables t1, t2;
|
||||||
|
#
|
||||||
|
# Bug#57649 FLUSH TABLES under FLUSH TABLES <list> WITH READ LOCK leads
|
||||||
|
# to assert failure.
|
||||||
|
#
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 (a INT);
|
||||||
|
FLUSH TABLES t1 WITH READ LOCK;
|
||||||
|
FLUSH TABLES;
|
||||||
|
ERROR HY000: Table 't1' was locked with a READ lock and can't be updated
|
||||||
|
CREATE TRIGGER t1_bi BEFORE INSERT ON t1 FOR EACH ROW SET @a= 1;
|
||||||
|
ERROR HY000: Table 't1' was locked with a READ lock and can't be updated
|
||||||
|
ALTER TABLE t1 COMMENT 'test';
|
||||||
|
ERROR HY000: Table 't1' was locked with a READ lock and can't be updated
|
||||||
|
UNLOCK TABLES;
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -431,6 +431,7 @@ Success: Was able to run 'execute stmt1' under FTWRL.
|
|||||||
Success: Was able to run 'execute stmt1' with FTWRL active in another connection.
|
Success: Was able to run 'execute stmt1' with FTWRL active in another connection.
|
||||||
Success: Was able to run FTWRL while 'execute stmt1' was active in another connection.
|
Success: Was able to run FTWRL while 'execute stmt1' was active in another connection.
|
||||||
deallocate prepare stmt1;
|
deallocate prepare stmt1;
|
||||||
|
call mtr.add_suppression("Slave SQL.*Can.t execute the query because you have a conflicting read lock., Error_code: 1223");
|
||||||
#
|
#
|
||||||
# 9.2.b) EXECUTE for statement which is incompatible with FTWRL
|
# 9.2.b) EXECUTE for statement which is incompatible with FTWRL
|
||||||
# should be also incompatible.
|
# should be also incompatible.
|
||||||
|
@ -123,3 +123,29 @@ CREATE TABLE t2 SELECT 1 FROM t1, t1 t3 GROUP BY t3.a PROCEDURE ANALYSE();
|
|||||||
ERROR HY000: Incorrect usage of PROCEDURE and non-SELECT
|
ERROR HY000: Incorrect usage of PROCEDURE and non-SELECT
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
#
|
||||||
|
# Bug#11765202: Dbug_violation_helper::~Dbug_violation_helper(): Assertion `!_entered' failed.
|
||||||
|
#
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
Warnings:
|
||||||
|
Note 1051 Unknown table 't1'
|
||||||
|
CREATE TABLE t1 (a VARCHAR(2) CHARSET UTF8 NOT NULL);
|
||||||
|
INSERT INTO t1 VALUES ('e'),('e'),('e-');
|
||||||
|
SELECT * FROM t1 PROCEDURE ANALYSE();
|
||||||
|
Field_name Min_value Max_value Min_length Max_length Empties_or_zeros Nulls Avg_value_or_avg_length Std Optimal_fieldtype
|
||||||
|
test.t1.a e e- 1 2 0 0 1.3333 NULL ENUM('e','e-') NOT NULL
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug#11756242 48137: PROCEDURE ANALYSE() LEAKS MEMORY WHEN RETURNING NULL
|
||||||
|
#
|
||||||
|
CREATE TABLE t1(f1 INT) ENGINE=MYISAM;
|
||||||
|
CREATE TABLE t2(f2 INT) ENGINE=INNODB;
|
||||||
|
INSERT INTO t2 VALUES (1);
|
||||||
|
SELECT DISTINCTROW f1 FROM t1 NATURAL RIGHT OUTER JOIN t2 PROCEDURE ANALYSE();
|
||||||
|
Field_name Min_value Max_value Min_length Max_length Empties_or_zeros Nulls Avg_value_or_avg_length Std Optimal_fieldtype
|
||||||
|
test.t1.f1 NULL NULL 0 0 0 1 0.0 0.0 CHAR(0)
|
||||||
|
SELECT * FROM t2 LIMIT 1 PROCEDURE ANALYSE();
|
||||||
|
Field_name Min_value Max_value Min_length Max_length Empties_or_zeros Nulls Avg_value_or_avg_length Std Optimal_fieldtype
|
||||||
|
test.t2.f2 1 1 1 1 0 0 1.0000 0.0000 ENUM('1') NOT NULL
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
End of 5.1 tests
|
||||||
|
@ -1737,6 +1737,26 @@ SELECT MIN(GET_LOCK('aaaaaaaaaaaaaaaaa',0) / '0b11111111111111111111111111111111
|
|||||||
SELECT MIN(GET_LOCK('aaaaaaaaaaaaaaaaa',0) / '0b1111111111111111111111111111111111111111111111111111111111111111111111111' ^ (RAND()));
|
SELECT MIN(GET_LOCK('aaaaaaaaaaaaaaaaa',0) / '0b1111111111111111111111111111111111111111111111111111111111111111111111111' ^ (RAND()));
|
||||||
SELECT RELEASE_LOCK('aaaaaaaaaaaaaaaaa');
|
SELECT RELEASE_LOCK('aaaaaaaaaaaaaaaaa');
|
||||||
#
|
#
|
||||||
|
# Bug #11766094 - 59132: MIN() AND MAX() REMOVE UNSIGNEDNESS
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a BIGINT UNSIGNED);
|
||||||
|
INSERT INTO t1 VALUES (18446668621106209655);
|
||||||
|
SELECT MAX(LENGTH(a)), LENGTH(MAX(a)), MIN(a), MAX(a), CONCAT(MIN(a)), CONCAT(MAX(a)) FROM t1;
|
||||||
|
MAX(LENGTH(a)) LENGTH(MAX(a)) MIN(a) MAX(a) CONCAT(MIN(a)) CONCAT(MAX(a))
|
||||||
|
20 20 18446668621106209655 18446668621106209655 18446668621106209655 18446668621106209655
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug #11766270 59343: YEAR(4): INCORRECT RESULT AND VALGRIND WARNINGS WITH MIN/MAX, UNION
|
||||||
|
#
|
||||||
|
CREATE TABLE t1(f1 YEAR(4));
|
||||||
|
INSERT INTO t1 VALUES (0000),(2001);
|
||||||
|
(SELECT MAX(f1) FROM t1) UNION (SELECT MAX(f1) FROM t1);
|
||||||
|
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||||
|
def MAX(f1) MAX(f1) 13 4 4 Y 32864 0 63
|
||||||
|
MAX(f1)
|
||||||
|
2001
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
#
|
#
|
||||||
# Bug#52123 Assertion failed: aggregator == aggr->Aggrtype(),
|
# Bug#52123 Assertion failed: aggregator == aggr->Aggrtype(),
|
||||||
|
@ -770,4 +770,10 @@ CASE a WHEN a THEN a END
|
|||||||
NULL
|
NULL
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
|
# Bug #11766212 59270: NOT IN (YEAR( ... ), ... ) PRODUCES MANY VALGRIND WARNINGS
|
||||||
|
#
|
||||||
|
SELECT 1 IN (YEAR(FROM_UNIXTIME(NULL)) ,1);
|
||||||
|
1 IN (YEAR(FROM_UNIXTIME(NULL)) ,1)
|
||||||
|
1
|
||||||
|
#
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -514,6 +514,13 @@ t1 CREATE TABLE `t1` (
|
|||||||
`C` varchar(23) DEFAULT NULL
|
`C` varchar(23) DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug#11764994 57900: CREATE TABLE .. SELECT ASSERTS SCALE >= 0 && PRECISION > 0 && SCALE <= PR
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 SELECT CEIL(LINESTRINGFROMWKB(1) DIV NULL);
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 SELECT FLOOR(LINESTRINGFROMWKB(1) DIV NULL);
|
||||||
|
DROP TABLE t1;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
#
|
#
|
||||||
# Bug #8433: Overflow must be an error
|
# Bug #8433: Overflow must be an error
|
||||||
@ -656,3 +663,11 @@ Warning 1366 Incorrect decimal value: '' for column '' at row -1
|
|||||||
SELECT 1 div null;
|
SELECT 1 div null;
|
||||||
1 div null
|
1 div null
|
||||||
NULL
|
NULL
|
||||||
|
#
|
||||||
|
# Bug #11792200 - DIVIDING LARGE NUMBERS CAUSES STACK CORRUPTIONS
|
||||||
|
#
|
||||||
|
select (1.175494351E-37 div 1.7976931348623157E+308);
|
||||||
|
(1.175494351E-37 div 1.7976931348623157E+308)
|
||||||
|
0
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect DECIMAL value: ''
|
||||||
|
@ -159,3 +159,45 @@ SELECT CONVERT( a USING latin1 ) FROM t2;
|
|||||||
CONVERT( a USING latin1 )
|
CONVERT( a USING latin1 )
|
||||||
|
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
|
#
|
||||||
|
# BUG#59405: FIND_IN_SET won't work normaly after upgrade from 5.1 to 5.5
|
||||||
|
#
|
||||||
|
CREATE TABLE t1(days set('1','2','3','4','5','6','7'));
|
||||||
|
INSERT INTO t1 VALUES('1,2,3,4,5,6,7'), (NULL), ('1,2,3,4,5,6,7');
|
||||||
|
|
||||||
|
SELECT * FROM t1 WHERE FIND_IN_SET(DAYOFWEEK(CURRENT_DATE()), days);
|
||||||
|
days
|
||||||
|
1,2,3,4,5,6,7
|
||||||
|
1,2,3,4,5,6,7
|
||||||
|
SELECT * FROM t1 WHERE FIND_IN_SET(DAYOFWEEK(CURRENT_DATE()), days) IS UNKNOWN;
|
||||||
|
days
|
||||||
|
NULL
|
||||||
|
SELECT * FROM t1 WHERE FIND_IN_SET(DAYOFWEEK(CURRENT_DATE()), NULL);
|
||||||
|
days
|
||||||
|
SELECT * FROM t1 WHERE FIND_IN_SET(DAYOFWEEK(CURRENT_DATE()), NULL) IS UNKNOWN;
|
||||||
|
days
|
||||||
|
1,2,3,4,5,6,7
|
||||||
|
NULL
|
||||||
|
1,2,3,4,5,6,7
|
||||||
|
SELECT * FROM t1 WHERE FIND_IN_SET(7, days);
|
||||||
|
days
|
||||||
|
1,2,3,4,5,6,7
|
||||||
|
1,2,3,4,5,6,7
|
||||||
|
SELECT * FROM t1 WHERE FIND_IN_SET(8, days);
|
||||||
|
days
|
||||||
|
SELECT * FROM t1 WHERE FIND_IN_SET(NULL, days);
|
||||||
|
days
|
||||||
|
SELECT * FROM t1 WHERE FIND_IN_SET(NULL, days) IS UNKNOWN;
|
||||||
|
days
|
||||||
|
1,2,3,4,5,6,7
|
||||||
|
NULL
|
||||||
|
1,2,3,4,5,6,7
|
||||||
|
SELECT * FROM t1 WHERE FIND_IN_SET(NULL, NULL);
|
||||||
|
days
|
||||||
|
SELECT * FROM t1 WHERE FIND_IN_SET(NULL, NULL) IS UNKNOWN;
|
||||||
|
days
|
||||||
|
1,2,3,4,5,6,7
|
||||||
|
NULL
|
||||||
|
1,2,3,4,5,6,7
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -1347,6 +1347,36 @@ Warning 1292 Truncated incorrect time value: ''
|
|||||||
Warning 1292 Truncated incorrect time value: ''
|
Warning 1292 Truncated incorrect time value: ''
|
||||||
Warning 1292 Truncated incorrect time value: ''
|
Warning 1292 Truncated incorrect time value: ''
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug#11766112 59151:UNINITIALIZED VALUES IN EXTRACT_DATE_TIME WITH STR_TO_DATE(SPACE(..) ...
|
||||||
|
#
|
||||||
|
SELECT STR_TO_DATE(SPACE(2),'1');
|
||||||
|
STR_TO_DATE(SPACE(2),'1')
|
||||||
|
0000-00-00
|
||||||
|
#
|
||||||
|
# Bug#11765216 58154: UNINITIALIZED VARIABLE FORMAT IN STR_TO_DATE FUNCTION
|
||||||
|
#
|
||||||
|
SET GLOBAL SQL_MODE='';
|
||||||
|
DO STR_TO_DATE((''), FROM_DAYS(@@GLOBAL.SQL_MODE));
|
||||||
|
SET GLOBAL SQL_MODE=DEFAULT;
|
||||||
|
#
|
||||||
|
# Bug#11766087 59125: VALGRIND UNINITIALISED VALUE WARNING IN ULL2DEC, LONGLONG2DECIMAL
|
||||||
|
#
|
||||||
|
SELECT FORMAT(YEAR(STR_TO_DATE('',GET_FORMAT(TIME,''))),1);
|
||||||
|
FORMAT(YEAR(STR_TO_DATE('',GET_FORMAT(TIME,''))),1)
|
||||||
|
NULL
|
||||||
|
#
|
||||||
|
# Bug#11766126 59166: ANOTHER DATETIME VALGRIND UNINITIALIZED WARNING
|
||||||
|
#
|
||||||
|
SELECT CAST((MONTH(FROM_UNIXTIME(@@GLOBAL.SQL_MODE))) AS BINARY(1025));
|
||||||
|
CAST((MONTH(FROM_UNIXTIME(@@GLOBAL.SQL_MODE))) AS BINARY(1025))
|
||||||
|
NULL
|
||||||
|
#
|
||||||
|
# Bug#11766124 59164: VALGRIND: UNINITIALIZED VALUE IN NUMBER_TO_DATETIME
|
||||||
|
#
|
||||||
|
SELECT ADDDATE(MONTH(FROM_UNIXTIME(NULL)),INTERVAL 1 HOUR);
|
||||||
|
ADDDATE(MONTH(FROM_UNIXTIME(NULL)),INTERVAL 1 HOUR)
|
||||||
|
NULL
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
#
|
#
|
||||||
# Bug#57039: constant subtime expression returns incorrect result.
|
# Bug#57039: constant subtime expression returns incorrect result.
|
||||||
@ -1376,3 +1406,15 @@ NULL 1 NULL
|
|||||||
SET storage_engine=NULL;
|
SET storage_engine=NULL;
|
||||||
ERROR 42000: Variable 'storage_engine' can't be set to the value of 'NULL'
|
ERROR 42000: Variable 'storage_engine' can't be set to the value of 'NULL'
|
||||||
#
|
#
|
||||||
|
# Bug #59686 crash in String::copy() with time data type
|
||||||
|
#
|
||||||
|
SELECT min(timestampadd(month, 1>'', from_days('%Z')));
|
||||||
|
min(timestampadd(month, 1>'', from_days('%Z')))
|
||||||
|
NULL
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect INTEGER value: '%Z'
|
||||||
|
create table t1(a time);
|
||||||
|
insert into t1 values ('00:00:00'),('00:01:00');
|
||||||
|
select 1 from t1 where 1 < some (select cast(a as datetime) from t1);
|
||||||
|
1
|
||||||
|
drop table t1;
|
||||||
|
@ -54,7 +54,7 @@ max_updates 0
|
|||||||
max_connections 0
|
max_connections 0
|
||||||
max_user_connections 0
|
max_user_connections 0
|
||||||
plugin
|
plugin
|
||||||
authentication_string
|
authentication_string NULL
|
||||||
show grants for mysqltest_1@localhost;
|
show grants for mysqltest_1@localhost;
|
||||||
Grants for mysqltest_1@localhost
|
Grants for mysqltest_1@localhost
|
||||||
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' REQUIRE CIPHER 'EDH-RSA-DES-CBC3-SHA'
|
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' REQUIRE CIPHER 'EDH-RSA-DES-CBC3-SHA'
|
||||||
@ -125,7 +125,7 @@ max_updates 0
|
|||||||
max_connections 0
|
max_connections 0
|
||||||
max_user_connections 0
|
max_user_connections 0
|
||||||
plugin
|
plugin
|
||||||
authentication_string
|
authentication_string NULL
|
||||||
show grants for mysqltest_1@localhost;
|
show grants for mysqltest_1@localhost;
|
||||||
Grants for mysqltest_1@localhost
|
Grants for mysqltest_1@localhost
|
||||||
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' WITH MAX_QUERIES_PER_HOUR 10
|
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' WITH MAX_QUERIES_PER_HOUR 10
|
||||||
@ -172,7 +172,7 @@ max_updates 20
|
|||||||
max_connections 30
|
max_connections 30
|
||||||
max_user_connections 0
|
max_user_connections 0
|
||||||
plugin
|
plugin
|
||||||
authentication_string
|
authentication_string NULL
|
||||||
show grants for mysqltest_1@localhost;
|
show grants for mysqltest_1@localhost;
|
||||||
Grants for mysqltest_1@localhost
|
Grants for mysqltest_1@localhost
|
||||||
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' WITH MAX_QUERIES_PER_HOUR 10 MAX_UPDATES_PER_HOUR 20 MAX_CONNECTIONS_PER_HOUR 30
|
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' WITH MAX_QUERIES_PER_HOUR 10 MAX_UPDATES_PER_HOUR 20 MAX_CONNECTIONS_PER_HOUR 30
|
||||||
@ -284,7 +284,6 @@ Warnings:
|
|||||||
Warning 1364 Field 'ssl_cipher' doesn't have a default value
|
Warning 1364 Field 'ssl_cipher' doesn't have a default value
|
||||||
Warning 1364 Field 'x509_issuer' doesn't have a default value
|
Warning 1364 Field 'x509_issuer' doesn't have a default value
|
||||||
Warning 1364 Field 'x509_subject' doesn't have a default value
|
Warning 1364 Field 'x509_subject' doesn't have a default value
|
||||||
Warning 1364 Field 'authentication_string' doesn't have a default value
|
|
||||||
insert into mysql.db (host, db, user, select_priv) values
|
insert into mysql.db (host, db, user, select_priv) values
|
||||||
('localhost', 'a%', 'test11', 'Y'), ('localhost', 'ab%', 'test11', 'Y');
|
('localhost', 'a%', 'test11', 'Y'), ('localhost', 'ab%', 'test11', 'Y');
|
||||||
alter table mysql.db order by db asc;
|
alter table mysql.db order by db asc;
|
||||||
@ -1452,6 +1451,199 @@ DROP DATABASE mysqltest2;
|
|||||||
DROP USER testuser@localhost;
|
DROP USER testuser@localhost;
|
||||||
use test;
|
use test;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Test for bug #36544 "DROP USER does not remove stored function
|
||||||
|
# privileges".
|
||||||
|
#
|
||||||
|
create database mysqltest1;
|
||||||
|
create function mysqltest1.f1() returns int return 0;
|
||||||
|
create procedure mysqltest1.p1() begin end;
|
||||||
|
#
|
||||||
|
# 1) Check that DROP USER properly removes privileges on both
|
||||||
|
# stored procedures and functions.
|
||||||
|
#
|
||||||
|
create user mysqluser1@localhost;
|
||||||
|
grant execute on function mysqltest1.f1 to mysqluser1@localhost;
|
||||||
|
grant execute on procedure mysqltest1.p1 to mysqluser1@localhost;
|
||||||
|
# Quick test that granted privileges are properly reflected
|
||||||
|
# in privilege tables and in in-memory structures.
|
||||||
|
show grants for mysqluser1@localhost;
|
||||||
|
Grants for mysqluser1@localhost
|
||||||
|
GRANT USAGE ON *.* TO 'mysqluser1'@'localhost'
|
||||||
|
GRANT EXECUTE ON PROCEDURE `mysqltest1`.`p1` TO 'mysqluser1'@'localhost'
|
||||||
|
GRANT EXECUTE ON FUNCTION `mysqltest1`.`f1` TO 'mysqluser1'@'localhost'
|
||||||
|
select db, routine_name, routine_type, proc_priv from mysql.procs_priv where user='mysqluser1' and host='localhost';
|
||||||
|
db routine_name routine_type proc_priv
|
||||||
|
mysqltest1 f1 FUNCTION Execute
|
||||||
|
mysqltest1 p1 PROCEDURE Execute
|
||||||
|
#
|
||||||
|
# Create connection 'bug_36544_con1' as 'mysqluser1@localhost'.
|
||||||
|
call mysqltest1.p1();
|
||||||
|
select mysqltest1.f1();
|
||||||
|
mysqltest1.f1()
|
||||||
|
0
|
||||||
|
#
|
||||||
|
# Switch to connection 'default'.
|
||||||
|
drop user mysqluser1@localhost;
|
||||||
|
#
|
||||||
|
# Test that dropping of user is properly reflected in
|
||||||
|
# both privilege tables and in in-memory structures.
|
||||||
|
#
|
||||||
|
# Switch to connection 'bug36544_con1'.
|
||||||
|
# The connection cold be alive but should not be able to
|
||||||
|
# access to any of the stored routines.
|
||||||
|
call mysqltest1.p1();
|
||||||
|
ERROR 42000: execute command denied to user 'mysqluser1'@'localhost' for routine 'mysqltest1.p1'
|
||||||
|
select mysqltest1.f1();
|
||||||
|
ERROR 42000: execute command denied to user 'mysqluser1'@'localhost' for routine 'mysqltest1.f1'
|
||||||
|
#
|
||||||
|
# Switch to connection 'default'.
|
||||||
|
#
|
||||||
|
# Now create user with the same name and check that he
|
||||||
|
# has not inherited privileges.
|
||||||
|
create user mysqluser1@localhost;
|
||||||
|
show grants for mysqluser1@localhost;
|
||||||
|
Grants for mysqluser1@localhost
|
||||||
|
GRANT USAGE ON *.* TO 'mysqluser1'@'localhost'
|
||||||
|
select db, routine_name, routine_type, proc_priv from mysql.procs_priv where user='mysqluser1' and host='localhost';
|
||||||
|
db routine_name routine_type proc_priv
|
||||||
|
#
|
||||||
|
# Create connection 'bug_36544_con2' as 'mysqluser1@localhost'.
|
||||||
|
# Newly created user should not be able to access any of the routines.
|
||||||
|
call mysqltest1.p1();
|
||||||
|
ERROR 42000: execute command denied to user 'mysqluser1'@'localhost' for routine 'mysqltest1.p1'
|
||||||
|
select mysqltest1.f1();
|
||||||
|
ERROR 42000: execute command denied to user 'mysqluser1'@'localhost' for routine 'mysqltest1.f1'
|
||||||
|
#
|
||||||
|
# Switch to connection 'default'.
|
||||||
|
#
|
||||||
|
# 2) Check that RENAME USER properly updates privileges on both
|
||||||
|
# stored procedures and functions.
|
||||||
|
#
|
||||||
|
grant execute on function mysqltest1.f1 to mysqluser1@localhost;
|
||||||
|
grant execute on procedure mysqltest1.p1 to mysqluser1@localhost;
|
||||||
|
#
|
||||||
|
# Create one more user to make in-memory hashes non-trivial.
|
||||||
|
# User names 'mysqluser11' and 'mysqluser10' were selected
|
||||||
|
# to trigger bug discovered during code inspection.
|
||||||
|
create user mysqluser11@localhost;
|
||||||
|
grant execute on function mysqltest1.f1 to mysqluser11@localhost;
|
||||||
|
grant execute on procedure mysqltest1.p1 to mysqluser11@localhost;
|
||||||
|
# Also create a couple of tables to test for another bug
|
||||||
|
# discovered during code inspection (again table names were
|
||||||
|
# chosen especially to trigger the bug).
|
||||||
|
create table mysqltest1.t11 (i int);
|
||||||
|
create table mysqltest1.t22 (i int);
|
||||||
|
grant select on mysqltest1.t22 to mysqluser1@localhost;
|
||||||
|
grant select on mysqltest1.t11 to mysqluser1@localhost;
|
||||||
|
# Quick test that granted privileges are properly reflected
|
||||||
|
# in privilege tables and in in-memory structures.
|
||||||
|
show grants for mysqluser1@localhost;
|
||||||
|
Grants for mysqluser1@localhost
|
||||||
|
GRANT USAGE ON *.* TO 'mysqluser1'@'localhost'
|
||||||
|
GRANT SELECT ON `mysqltest1`.`t11` TO 'mysqluser1'@'localhost'
|
||||||
|
GRANT SELECT ON `mysqltest1`.`t22` TO 'mysqluser1'@'localhost'
|
||||||
|
GRANT EXECUTE ON PROCEDURE `mysqltest1`.`p1` TO 'mysqluser1'@'localhost'
|
||||||
|
GRANT EXECUTE ON FUNCTION `mysqltest1`.`f1` TO 'mysqluser1'@'localhost'
|
||||||
|
select db, routine_name, routine_type, proc_priv from mysql.procs_priv where user='mysqluser1' and host='localhost';
|
||||||
|
db routine_name routine_type proc_priv
|
||||||
|
mysqltest1 f1 FUNCTION Execute
|
||||||
|
mysqltest1 p1 PROCEDURE Execute
|
||||||
|
select db, table_name, table_priv from mysql.tables_priv where user='mysqluser1' and host='localhost';
|
||||||
|
db table_name table_priv
|
||||||
|
mysqltest1 t11 Select
|
||||||
|
mysqltest1 t22 Select
|
||||||
|
#
|
||||||
|
# Switch to connection 'bug36544_con2'.
|
||||||
|
call mysqltest1.p1();
|
||||||
|
select mysqltest1.f1();
|
||||||
|
mysqltest1.f1()
|
||||||
|
0
|
||||||
|
select * from mysqltest1.t11;
|
||||||
|
i
|
||||||
|
select * from mysqltest1.t22;
|
||||||
|
i
|
||||||
|
#
|
||||||
|
# Switch to connection 'default'.
|
||||||
|
rename user mysqluser1@localhost to mysqluser10@localhost;
|
||||||
|
#
|
||||||
|
# Test that there are no privileges left for mysqluser1.
|
||||||
|
#
|
||||||
|
# Switch to connection 'bug36544_con2'.
|
||||||
|
# The connection cold be alive but should not be able to
|
||||||
|
# access to any of the stored routines or tables.
|
||||||
|
call mysqltest1.p1();
|
||||||
|
ERROR 42000: execute command denied to user 'mysqluser1'@'localhost' for routine 'mysqltest1.p1'
|
||||||
|
select mysqltest1.f1();
|
||||||
|
ERROR 42000: execute command denied to user 'mysqluser1'@'localhost' for routine 'mysqltest1.f1'
|
||||||
|
select * from mysqltest1.t11;
|
||||||
|
ERROR 42000: SELECT command denied to user 'mysqluser1'@'localhost' for table 't11'
|
||||||
|
select * from mysqltest1.t22;
|
||||||
|
ERROR 42000: SELECT command denied to user 'mysqluser1'@'localhost' for table 't22'
|
||||||
|
#
|
||||||
|
# Switch to connection 'default'.
|
||||||
|
#
|
||||||
|
# Now create user with the old name and check that he
|
||||||
|
# has not inherited privileges.
|
||||||
|
create user mysqluser1@localhost;
|
||||||
|
show grants for mysqluser1@localhost;
|
||||||
|
Grants for mysqluser1@localhost
|
||||||
|
GRANT USAGE ON *.* TO 'mysqluser1'@'localhost'
|
||||||
|
select db, routine_name, routine_type, proc_priv from mysql.procs_priv where user='mysqluser1' and host='localhost';
|
||||||
|
db routine_name routine_type proc_priv
|
||||||
|
select db, table_name, table_priv from mysql.tables_priv where user='mysqluser1' and host='localhost';
|
||||||
|
db table_name table_priv
|
||||||
|
#
|
||||||
|
# Create connection 'bug_36544_con3' as 'mysqluser1@localhost'.
|
||||||
|
# Newly created user should not be able to access to any of the
|
||||||
|
# stored routines or tables.
|
||||||
|
call mysqltest1.p1();
|
||||||
|
ERROR 42000: execute command denied to user 'mysqluser1'@'localhost' for routine 'mysqltest1.p1'
|
||||||
|
select mysqltest1.f1();
|
||||||
|
ERROR 42000: execute command denied to user 'mysqluser1'@'localhost' for routine 'mysqltest1.f1'
|
||||||
|
select * from mysqltest1.t11;
|
||||||
|
ERROR 42000: SELECT command denied to user 'mysqluser1'@'localhost' for table 't11'
|
||||||
|
select * from mysqltest1.t22;
|
||||||
|
ERROR 42000: SELECT command denied to user 'mysqluser1'@'localhost' for table 't22'
|
||||||
|
#
|
||||||
|
# Switch to connection 'default'.
|
||||||
|
#
|
||||||
|
# Now check that privileges became associated with a new user
|
||||||
|
# name - mysqluser10.
|
||||||
|
#
|
||||||
|
show grants for mysqluser10@localhost;
|
||||||
|
Grants for mysqluser10@localhost
|
||||||
|
GRANT USAGE ON *.* TO 'mysqluser10'@'localhost'
|
||||||
|
GRANT SELECT ON `mysqltest1`.`t22` TO 'mysqluser10'@'localhost'
|
||||||
|
GRANT SELECT ON `mysqltest1`.`t11` TO 'mysqluser10'@'localhost'
|
||||||
|
GRANT EXECUTE ON PROCEDURE `mysqltest1`.`p1` TO 'mysqluser10'@'localhost'
|
||||||
|
GRANT EXECUTE ON FUNCTION `mysqltest1`.`f1` TO 'mysqluser10'@'localhost'
|
||||||
|
select db, routine_name, routine_type, proc_priv from mysql.procs_priv where user='mysqluser10' and host='localhost';
|
||||||
|
db routine_name routine_type proc_priv
|
||||||
|
mysqltest1 f1 FUNCTION Execute
|
||||||
|
mysqltest1 p1 PROCEDURE Execute
|
||||||
|
select db, table_name, table_priv from mysql.tables_priv where user='mysqluser10' and host='localhost';
|
||||||
|
db table_name table_priv
|
||||||
|
mysqltest1 t11 Select
|
||||||
|
mysqltest1 t22 Select
|
||||||
|
#
|
||||||
|
# Create connection 'bug_36544_con4' as 'mysqluser10@localhost'.
|
||||||
|
call mysqltest1.p1();
|
||||||
|
select mysqltest1.f1();
|
||||||
|
mysqltest1.f1()
|
||||||
|
0
|
||||||
|
select * from mysqltest1.t11;
|
||||||
|
i
|
||||||
|
select * from mysqltest1.t22;
|
||||||
|
i
|
||||||
|
#
|
||||||
|
# Switch to connection 'default'.
|
||||||
|
#
|
||||||
|
# Clean-up.
|
||||||
|
drop user mysqluser1@localhost;
|
||||||
|
drop user mysqluser10@localhost;
|
||||||
|
drop user mysqluser11@localhost;
|
||||||
|
drop database mysqltest1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
set names utf8;
|
set names utf8;
|
||||||
grant select on test.* to юзер_юзер@localhost;
|
grant select on test.* to юзер_юзер@localhost;
|
||||||
@ -1546,11 +1738,7 @@ fn2()
|
|||||||
2
|
2
|
||||||
DROP USER 'userbug33464'@'localhost';
|
DROP USER 'userbug33464'@'localhost';
|
||||||
DROP FUNCTION fn1;
|
DROP FUNCTION fn1;
|
||||||
Warnings:
|
|
||||||
Warning 1403 There is no such grant defined for user 'userbug33464' on host 'localhost' on routine 'fn1'
|
|
||||||
DROP FUNCTION fn2;
|
DROP FUNCTION fn2;
|
||||||
Warnings:
|
|
||||||
Warning 1403 There is no such grant defined for user 'userbug33464' on host 'localhost' on routine 'fn2'
|
|
||||||
DROP PROCEDURE sp3;
|
DROP PROCEDURE sp3;
|
||||||
DROP USER 'userbug33464'@'localhost';
|
DROP USER 'userbug33464'@'localhost';
|
||||||
USE test;
|
USE test;
|
||||||
|
@ -287,7 +287,6 @@ Warnings:
|
|||||||
Warning 1364 Field 'ssl_cipher' doesn't have a default value
|
Warning 1364 Field 'ssl_cipher' doesn't have a default value
|
||||||
Warning 1364 Field 'x509_issuer' doesn't have a default value
|
Warning 1364 Field 'x509_issuer' doesn't have a default value
|
||||||
Warning 1364 Field 'x509_subject' doesn't have a default value
|
Warning 1364 Field 'x509_subject' doesn't have a default value
|
||||||
Warning 1364 Field 'authentication_string' doesn't have a default value
|
|
||||||
create user mysqltest_A@'%';
|
create user mysqltest_A@'%';
|
||||||
rename user mysqltest_B@'%' to mysqltest_C@'%';
|
rename user mysqltest_B@'%' to mysqltest_C@'%';
|
||||||
drop user mysqltest_C@'%';
|
drop user mysqltest_C@'%';
|
||||||
@ -355,7 +354,6 @@ Warnings:
|
|||||||
Warning 1364 Field 'ssl_cipher' doesn't have a default value
|
Warning 1364 Field 'ssl_cipher' doesn't have a default value
|
||||||
Warning 1364 Field 'x509_issuer' doesn't have a default value
|
Warning 1364 Field 'x509_issuer' doesn't have a default value
|
||||||
Warning 1364 Field 'x509_subject' doesn't have a default value
|
Warning 1364 Field 'x509_subject' doesn't have a default value
|
||||||
Warning 1364 Field 'authentication_string' doesn't have a default value
|
|
||||||
INSERT INTO mysql.db (host, db, user, select_priv) VALUES
|
INSERT INTO mysql.db (host, db, user, select_priv) VALUES
|
||||||
('%','TESTDB','mysqltest_1','Y');
|
('%','TESTDB','mysqltest_1','Y');
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
|
@ -148,3 +148,25 @@ COMMIT;
|
|||||||
# Connection default
|
# Connection default
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
|
#
|
||||||
|
# Bug#11815600 [ERROR] INNODB COULD NOT FIND INDEX PRIMARY
|
||||||
|
# KEY NO 0 FOR TABLE IN ERROR LOG
|
||||||
|
#
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
# Connection default
|
||||||
|
CREATE TABLE t1 (id INT PRIMARY KEY, value INT) ENGINE = InnoDB;
|
||||||
|
INSERT INTO t1 VALUES (1, 12345);
|
||||||
|
START TRANSACTION;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
id value
|
||||||
|
1 12345
|
||||||
|
# Connection con1
|
||||||
|
SET lock_wait_timeout=1;
|
||||||
|
ALTER TABLE t1 ADD INDEX idx(value);
|
||||||
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
||||||
|
# Connection default
|
||||||
|
SELECT * FROM t1;
|
||||||
|
id value
|
||||||
|
1 12345
|
||||||
|
COMMIT;
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -94,64 +94,6 @@ SET DEBUG_SYNC= 'RESET';
|
|||||||
# Bug#42230 during add index, cannot do queries on storage engines
|
# Bug#42230 during add index, cannot do queries on storage engines
|
||||||
# that implement add_index
|
# that implement add_index
|
||||||
#
|
#
|
||||||
DROP DATABASE IF EXISTS db1;
|
#
|
||||||
DROP TABLE IF EXISTS t1;
|
# DISABLED due to Bug#11815600
|
||||||
# Test 1: Secondary index, should not block reads (original test case).
|
#
|
||||||
# Connection default
|
|
||||||
CREATE DATABASE db1;
|
|
||||||
CREATE TABLE db1.t1(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, value INT) engine=innodb;
|
|
||||||
INSERT INTO db1.t1(value) VALUES (1), (2);
|
|
||||||
SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query";
|
|
||||||
# Sending:
|
|
||||||
ALTER TABLE db1.t1 ADD INDEX(value);
|
|
||||||
# Connection con1
|
|
||||||
SET DEBUG_SYNC= "now WAIT_FOR manage";
|
|
||||||
USE db1;
|
|
||||||
SELECT * FROM t1;
|
|
||||||
id value
|
|
||||||
1 1
|
|
||||||
2 2
|
|
||||||
SET DEBUG_SYNC= "now SIGNAL query";
|
|
||||||
# Connection default
|
|
||||||
# Reaping: ALTER TABLE db1.t1 ADD INDEX(value)
|
|
||||||
DROP DATABASE db1;
|
|
||||||
# Test 2: Primary index (implicit), should block reads.
|
|
||||||
CREATE TABLE t1(a INT NOT NULL, b INT NOT NULL) engine=innodb;
|
|
||||||
SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query";
|
|
||||||
# Sending:
|
|
||||||
ALTER TABLE t1 ADD UNIQUE INDEX(a);
|
|
||||||
# Connection con1
|
|
||||||
SET DEBUG_SYNC= "now WAIT_FOR manage";
|
|
||||||
USE test;
|
|
||||||
# Sending:
|
|
||||||
SELECT * FROM t1;
|
|
||||||
# Connection con2
|
|
||||||
# Waiting for SELECT to be blocked by the metadata lock on t1
|
|
||||||
SET DEBUG_SYNC= "now SIGNAL query";
|
|
||||||
# Connection default
|
|
||||||
# Reaping: ALTER TABLE t1 ADD UNIQUE INDEX(a)
|
|
||||||
# Connection con1
|
|
||||||
# Reaping: SELECT * FROM t1
|
|
||||||
a b
|
|
||||||
# Test 3: Primary index (explicit), should block reads.
|
|
||||||
# Connection default
|
|
||||||
ALTER TABLE t1 DROP INDEX a;
|
|
||||||
SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query";
|
|
||||||
# Sending:
|
|
||||||
ALTER TABLE t1 ADD PRIMARY KEY (a);
|
|
||||||
# Connection con1
|
|
||||||
SET DEBUG_SYNC= "now WAIT_FOR manage";
|
|
||||||
# Sending:
|
|
||||||
SELECT * FROM t1;
|
|
||||||
# Connection con2
|
|
||||||
# Waiting for SELECT to be blocked by the metadata lock on t1
|
|
||||||
SET DEBUG_SYNC= "now SIGNAL query";
|
|
||||||
# Connection default
|
|
||||||
# Reaping: ALTER TABLE t1 ADD PRIMARY KEY (a)
|
|
||||||
# Connection con1
|
|
||||||
# Reaping: SELECT * FROM t1
|
|
||||||
a b
|
|
||||||
# Test 4: Secondary unique index, should not block reads.
|
|
||||||
# Connection default
|
|
||||||
SET DEBUG_SYNC= "RESET";
|
|
||||||
DROP TABLE t1;
|
|
||||||
|
@ -532,4 +532,11 @@ a
|
|||||||
0
|
0
|
||||||
1
|
1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug#11765139 58069: LOAD DATA INFILE: VALGRIND REPORTS INVALID MEMORY READS AND WRITES WITH U
|
||||||
|
#
|
||||||
|
CREATE TABLE t1(f1 INT);
|
||||||
|
SELECT 0xE1BB30 INTO OUTFILE 't1.dat';
|
||||||
|
LOAD DATA INFILE 't1.dat' IGNORE INTO TABLE t1 CHARACTER SET utf8;
|
||||||
|
DROP TABLE t1;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -175,6 +175,35 @@ TABLE_SCHEMA TABLE_NAME
|
|||||||
mysqltest_lc2 myUC
|
mysqltest_lc2 myUC
|
||||||
use test;
|
use test;
|
||||||
drop database mysqltest_LC2;
|
drop database mysqltest_LC2;
|
||||||
|
#
|
||||||
|
# Bug #11758687: 50924: object names not resolved correctly
|
||||||
|
# on lctn2 systems
|
||||||
|
#
|
||||||
|
CREATE DATABASE BUP_XPFM_COMPAT_DB2;
|
||||||
|
CREATE TABLE BUP_XPFM_COMPAT_DB2.TABLE2 (c13 INT) DEFAULT CHARSET latin1;
|
||||||
|
CREATE TABLE BUP_XPFM_COMPAT_DB2.table1 (c13 INT) DEFAULT CHARSET latin1;
|
||||||
|
CREATE TABLE bup_xpfm_compat_db2.table3 (c13 INT) DEFAULT CHARSET latin1;
|
||||||
|
CREATE TRIGGER BUP_XPFM_COMPAT_DB2.trigger1 AFTER INSERT
|
||||||
|
ON BUP_XPFM_COMPAT_DB2.table1 FOR EACH ROW
|
||||||
|
update BUP_XPFM_COMPAT_DB2.table1 set c13=12;
|
||||||
|
|
|
||||||
|
CREATE TRIGGER BUP_XPFM_COMPAT_DB2.TRIGGER2 AFTER INSERT
|
||||||
|
ON BUP_XPFM_COMPAT_DB2.TABLE2 FOR EACH ROW
|
||||||
|
update BUP_XPFM_COMPAT_DB2.table1 set c13=12;
|
||||||
|
|
|
||||||
|
CREATE TRIGGER BUP_XPFM_COMPAT_DB2.TrigGer3 AFTER INSERT
|
||||||
|
ON BUP_XPFM_COMPAT_DB2.TaBle3 FOR EACH ROW
|
||||||
|
update BUP_XPFM_COMPAT_DB2.table1 set c13=12;
|
||||||
|
|
|
||||||
|
SELECT trigger_schema, trigger_name, event_object_table FROM
|
||||||
|
INFORMATION_SCHEMA.TRIGGERS
|
||||||
|
WHERE trigger_schema COLLATE utf8_bin = 'BUP_XPFM_COMPAT_DB2'
|
||||||
|
ORDER BY trigger_schema, trigger_name;
|
||||||
|
trigger_schema trigger_name event_object_table
|
||||||
|
BUP_XPFM_COMPAT_DB2 trigger1 table1
|
||||||
|
BUP_XPFM_COMPAT_DB2 TRIGGER2 TABLE2
|
||||||
|
BUP_XPFM_COMPAT_DB2 TrigGer3 table3
|
||||||
|
DROP DATABASE BUP_XPFM_COMPAT_DB2;
|
||||||
# End of 5.1 tests
|
# End of 5.1 tests
|
||||||
#
|
#
|
||||||
# Test for bug #44738 "fill_schema_table_from_frm() opens tables without
|
# Test for bug #44738 "fill_schema_table_from_frm() opens tables without
|
||||||
|
@ -10,3 +10,10 @@ mysqld is alive
|
|||||||
# Displaying the output :
|
# Displaying the output :
|
||||||
mysqld is alive
|
mysqld is alive
|
||||||
mysqld is alive
|
mysqld is alive
|
||||||
|
#
|
||||||
|
# BUG#11766184 - 59234: cmdline clients crash --defaults-extra-file
|
||||||
|
# with no .cnf or .ini extension.
|
||||||
|
#
|
||||||
|
# Creating an empty file 'cnf_file'
|
||||||
|
# Using --defaults-extra-file option with 'cnf_file'.
|
||||||
|
mysqld is alive
|
||||||
|
@ -903,3 +903,15 @@ master-bin.000002 # Query # # CREATE DATABASE test1
|
|||||||
master-bin.000002 # Query # # use `test1`; CREATE TABLE t1(id int)
|
master-bin.000002 # Query # # use `test1`; CREATE TABLE t1(id int)
|
||||||
master-bin.000002 # Query # # use `test1`; DROP TABLE `t1` /* generated by server */
|
master-bin.000002 # Query # # use `test1`; DROP TABLE `t1` /* generated by server */
|
||||||
master-bin.000002 # Query # # DROP DATABASE test1
|
master-bin.000002 # Query # # DROP DATABASE test1
|
||||||
|
RESET MASTER;
|
||||||
|
USE test;
|
||||||
|
CREATE TABLE t1 (a INT);
|
||||||
|
SET GLOBAL SERVER_ID = 2;
|
||||||
|
DROP TABLE t1;
|
||||||
|
FLUSH LOGS;
|
||||||
|
SHOW TABLES IN test;
|
||||||
|
Tables_in_test
|
||||||
|
t1
|
||||||
|
SHOW TABLES IN test;
|
||||||
|
Tables_in_test
|
||||||
|
SET GLOBAL SERVER_ID = 1;
|
||||||
|
@ -109,7 +109,7 @@ mysql.time_zone_name Table is already up to date
|
|||||||
mysql.time_zone_transition Table is already up to date
|
mysql.time_zone_transition Table is already up to date
|
||||||
mysql.time_zone_transition_type Table is already up to date
|
mysql.time_zone_transition_type Table is already up to date
|
||||||
mysql.user Table is already up to date
|
mysql.user Table is already up to date
|
||||||
create table t1 (a int);
|
create table t1 (a int) engine=myisam;
|
||||||
create view v1 as select * from t1;
|
create view v1 as select * from t1;
|
||||||
test.t1 OK
|
test.t1 OK
|
||||||
test.t1 Table is already up to date
|
test.t1 Table is already up to date
|
||||||
@ -117,14 +117,14 @@ test.t1 OK
|
|||||||
test.t1 Table is already up to date
|
test.t1 Table is already up to date
|
||||||
drop view v1;
|
drop view v1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table `t``1`(a int);
|
create table `t``1`(a int) engine=myisam;
|
||||||
create table `t 1`(a int);
|
create table `t 1`(a int) engine=myisam;
|
||||||
test.t 1 OK
|
test.t 1 OK
|
||||||
test.t`1 OK
|
test.t`1 OK
|
||||||
drop table `t``1`, `t 1`;
|
drop table `t``1`, `t 1`;
|
||||||
create database d_bug25347;
|
create database d_bug25347;
|
||||||
use d_bug25347;
|
use d_bug25347;
|
||||||
create table t_bug25347 (a int);
|
create table t_bug25347 (a int) engine=myisam;
|
||||||
create view v_bug25347 as select * from t_bug25347;
|
create view v_bug25347 as select * from t_bug25347;
|
||||||
insert into t_bug25347 values (1),(2),(3);
|
insert into t_bug25347 values (1),(2),(3);
|
||||||
flush tables;
|
flush tables;
|
||||||
@ -164,15 +164,15 @@ Table Op Msg_type Msg_text
|
|||||||
test.v1 check status OK
|
test.v1 check status OK
|
||||||
information_schema.routines check note The storage engine for the table doesn't support check
|
information_schema.routines check note The storage engine for the table doesn't support check
|
||||||
drop view v1;
|
drop view v1;
|
||||||
CREATE TABLE t1(a INT);
|
CREATE TABLE t1(a INT) engine=myisam;
|
||||||
CREATE TABLE t2(a INT);
|
CREATE TABLE t2(a INT) engine=myisam;
|
||||||
test.t1
|
test.t1
|
||||||
Error : Incorrect information in file: './test/t1.frm'
|
Error : Incorrect information in file: './test/t1.frm'
|
||||||
error : Corrupt
|
error : Corrupt
|
||||||
test.t2 OK
|
test.t2 OK
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
create table t1(a int);
|
create table t1(a int) engine=myisam;
|
||||||
create view v1 as select * from t1;
|
create view v1 as select * from t1;
|
||||||
show tables;
|
show tables;
|
||||||
Tables_in_test
|
Tables_in_test
|
||||||
@ -192,7 +192,7 @@ v-1
|
|||||||
drop view v1, `v-1`;
|
drop view v1, `v-1`;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
SET NAMES utf8;
|
SET NAMES utf8;
|
||||||
CREATE TABLE `#mysql50#@` (a INT);
|
CREATE TABLE `#mysql50#@` (a INT) engine=myisam;
|
||||||
SHOW TABLES;
|
SHOW TABLES;
|
||||||
Tables_in_test
|
Tables_in_test
|
||||||
#mysql50#@
|
#mysql50#@
|
||||||
@ -203,7 +203,7 @@ SHOW TABLES;
|
|||||||
Tables_in_test
|
Tables_in_test
|
||||||
@
|
@
|
||||||
DROP TABLE `@`;
|
DROP TABLE `@`;
|
||||||
CREATE TABLE `я` (a INT);
|
CREATE TABLE `я` (a INT) engine=myisam;
|
||||||
SET NAMES DEFAULT;
|
SET NAMES DEFAULT;
|
||||||
mysqlcheck --default-character-set="latin1" --databases test
|
mysqlcheck --default-character-set="latin1" --databases test
|
||||||
test.?
|
test.?
|
||||||
@ -216,8 +216,8 @@ DROP TABLE `я`;
|
|||||||
SET NAMES DEFAULT;
|
SET NAMES DEFAULT;
|
||||||
CREATE DATABASE `#mysql50#a@b`;
|
CREATE DATABASE `#mysql50#a@b`;
|
||||||
USE `#mysql50#a@b`;
|
USE `#mysql50#a@b`;
|
||||||
CREATE TABLE `#mysql50#c@d` (a INT);
|
CREATE TABLE `#mysql50#c@d` (a INT) engine=myisam;
|
||||||
CREATE TABLE t1 (a INT);
|
CREATE TABLE t1 (a INT) engine=myisam;
|
||||||
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS
|
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS
|
||||||
WHERE TRIGGER_SCHEMA="#mysql50#a@b" ORDER BY trigger_name;
|
WHERE TRIGGER_SCHEMA="#mysql50#a@b" ORDER BY trigger_name;
|
||||||
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||||
@ -246,12 +246,12 @@ USE test;
|
|||||||
# Bug #31821: --all-in-1 and --fix-table-names don't work together
|
# Bug #31821: --all-in-1 and --fix-table-names don't work together
|
||||||
#
|
#
|
||||||
drop table if exists `#mysql50#t1-1`;
|
drop table if exists `#mysql50#t1-1`;
|
||||||
create table `#mysql50#t1-1` (a int);
|
create table `#mysql50#t1-1` (a int) engine=myisam;
|
||||||
show tables like 't1-1';
|
show tables like 't1-1';
|
||||||
Tables_in_test (t1-1)
|
Tables_in_test (t1-1)
|
||||||
t1-1
|
t1-1
|
||||||
drop table `t1-1`;
|
drop table `t1-1`;
|
||||||
create table `#mysql50#t1-1` (a int);
|
create table `#mysql50#t1-1` (a int) engine=myisam;
|
||||||
show tables like 't1-1';
|
show tables like 't1-1';
|
||||||
Tables_in_test (t1-1)
|
Tables_in_test (t1-1)
|
||||||
t1-1
|
t1-1
|
||||||
@ -260,3 +260,67 @@ End of 5.1 tests
|
|||||||
#
|
#
|
||||||
# Bug #35269: mysqlcheck behaves different depending on order of parameters
|
# Bug #35269: mysqlcheck behaves different depending on order of parameters
|
||||||
#
|
#
|
||||||
|
#
|
||||||
|
# Bug#11755431 47205: MAP 'REPAIR TABLE' TO RECREATE +ANALYZE FOR
|
||||||
|
# ENGINES NOT SUPPORTING NATIVE
|
||||||
|
#
|
||||||
|
DROP TABLE IF EXISTS bug47205;
|
||||||
|
#
|
||||||
|
# Test 1: Check that ALTER TABLE ... rebuilds the table
|
||||||
|
CREATE TABLE bug47205(a VARCHAR(20) PRIMARY KEY)
|
||||||
|
DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci engine=innodb;
|
||||||
|
INSERT INTO bug47205 VALUES ("foobar");
|
||||||
|
FLUSH TABLE bug47205;
|
||||||
|
# Replace the FRM with a 5.0 FRM that will require upgrade
|
||||||
|
# Should indicate that ALTER TABLE ... FORCE is needed
|
||||||
|
CHECK TABLE bug47205 FOR UPGRADE;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.bug47205 check error Table rebuild required. Please do "ALTER TABLE `bug47205` FORCE" or dump/reload to fix it!
|
||||||
|
# ALTER TABLE ... FORCE should rebuild the table
|
||||||
|
# and therefore output "affected rows: 1"
|
||||||
|
ALTER TABLE bug47205 FORCE;
|
||||||
|
affected rows: 1
|
||||||
|
info: Records: 1 Duplicates: 0 Warnings: 0
|
||||||
|
# Table should now be ok
|
||||||
|
CHECK TABLE bug47205 FOR UPGRADE;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.bug47205 check status OK
|
||||||
|
DROP TABLE bug47205;
|
||||||
|
#
|
||||||
|
# Test 2: InnoDB - REPAIR not supported
|
||||||
|
CREATE TABLE bug47205(a VARCHAR(20) PRIMARY KEY)
|
||||||
|
DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci engine=innodb;
|
||||||
|
FLUSH TABLE bug47205;
|
||||||
|
# Replace the FRM with a 5.0 FRM that will require upgrade
|
||||||
|
# Should indicate that ALTER TABLE .. FORCE is needed
|
||||||
|
CHECK TABLE bug47205 FOR UPGRADE;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.bug47205 check error Table rebuild required. Please do "ALTER TABLE `bug47205` FORCE" or dump/reload to fix it!
|
||||||
|
# Running mysqlcheck to check and upgrade
|
||||||
|
test.bug47205
|
||||||
|
error : Table rebuild required. Please do "ALTER TABLE `bug47205` FORCE" or dump/reload to fix it!
|
||||||
|
|
||||||
|
Repairing tables
|
||||||
|
# Table should now be ok
|
||||||
|
CHECK TABLE bug47205 FOR UPGRADE;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.bug47205 check status OK
|
||||||
|
DROP TABLE bug47205;
|
||||||
|
#
|
||||||
|
# Test 3: MyISAM - REPAIR supported
|
||||||
|
# Use an old FRM that will require upgrade
|
||||||
|
# Should indicate that REPAIR TABLE is needed
|
||||||
|
CHECK TABLE bug47205 FOR UPGRADE;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.bug47205 check error Table upgrade required. Please do "REPAIR TABLE `bug47205`" or dump/reload to fix it!
|
||||||
|
# Running mysqlcheck to check and upgrade
|
||||||
|
test.bug47205
|
||||||
|
error : Table upgrade required. Please do "REPAIR TABLE `bug47205`" or dump/reload to fix it!
|
||||||
|
|
||||||
|
Repairing tables
|
||||||
|
test.bug47205 OK
|
||||||
|
# Table should now be ok
|
||||||
|
CHECK TABLE bug47205 FOR UPGRADE;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.bug47205 check status OK
|
||||||
|
DROP TABLE bug47205;
|
||||||
|
@ -309,6 +309,10 @@ The following options may be given as the first argument:
|
|||||||
max_join_size records return an error
|
max_join_size records return an error
|
||||||
--max-length-for-sort-data=#
|
--max-length-for-sort-data=#
|
||||||
Max number of bytes in sorted records
|
Max number of bytes in sorted records
|
||||||
|
--max-long-data-size=#
|
||||||
|
The maximum BLOB length to send to server from
|
||||||
|
mysql_send_long_data API. Deprecated option; use
|
||||||
|
max_allowed_packet instead.
|
||||||
--max-prepared-stmt-count=#
|
--max-prepared-stmt-count=#
|
||||||
Maximum number of prepared statements in the server
|
Maximum number of prepared statements in the server
|
||||||
--max-relay-log-size=#
|
--max-relay-log-size=#
|
||||||
@ -830,6 +834,7 @@ max-error-count 64
|
|||||||
max-heap-table-size 16777216
|
max-heap-table-size 16777216
|
||||||
max-join-size 18446744073709551615
|
max-join-size 18446744073709551615
|
||||||
max-length-for-sort-data 1024
|
max-length-for-sort-data 1024
|
||||||
|
max-long-data-size 1048576
|
||||||
max-prepared-stmt-count 16382
|
max-prepared-stmt-count 16382
|
||||||
max-relay-log-size 0
|
max-relay-log-size 0
|
||||||
max-seeks-for-key 18446744073709551615
|
max-seeks-for-key 18446744073709551615
|
||||||
|
@ -308,6 +308,10 @@ The following options may be given as the first argument:
|
|||||||
max_join_size records return an error
|
max_join_size records return an error
|
||||||
--max-length-for-sort-data=#
|
--max-length-for-sort-data=#
|
||||||
Max number of bytes in sorted records
|
Max number of bytes in sorted records
|
||||||
|
--max-long-data-size=#
|
||||||
|
The maximum BLOB length to send to server from
|
||||||
|
mysql_send_long_data API. Deprecated option; use
|
||||||
|
max_allowed_packet instead.
|
||||||
--max-prepared-stmt-count=#
|
--max-prepared-stmt-count=#
|
||||||
Maximum number of prepared statements in the server
|
Maximum number of prepared statements in the server
|
||||||
--max-relay-log-size=#
|
--max-relay-log-size=#
|
||||||
@ -833,6 +837,7 @@ max-error-count 64
|
|||||||
max-heap-table-size 16777216
|
max-heap-table-size 16777216
|
||||||
max-join-size 18446744073709551615
|
max-join-size 18446744073709551615
|
||||||
max-length-for-sort-data 1024
|
max-length-for-sort-data 1024
|
||||||
|
max-long-data-size 1048576
|
||||||
max-prepared-stmt-count 16382
|
max-prepared-stmt-count 16382
|
||||||
max-relay-log-size 0
|
max-relay-log-size 0
|
||||||
max-seeks-for-key 18446744073709551615
|
max-seeks-for-key 18446744073709551615
|
||||||
|
@ -4626,6 +4626,39 @@ DELIMITER ;
|
|||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
ALTER DATABASE `test-database` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
ALTER DATABASE `test-database` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
||||||
DROP DATABASE `test-database`;
|
DROP DATABASE `test-database`;
|
||||||
|
USE `test`;
|
||||||
#
|
#
|
||||||
# End of 5.1 tests
|
# End of 5.1 tests
|
||||||
#
|
#
|
||||||
|
#
|
||||||
|
# Verify that two modes can be given in --compatible;
|
||||||
|
# and are reflected in SET SQL_MODE in the mysqldump output.
|
||||||
|
# Also verify that a prefix of the mode's name is enough.
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT);
|
||||||
|
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||||
|
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||||
|
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||||
|
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||||
|
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS' */;
|
||||||
|
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||||
|
DROP TABLE IF EXISTS `t1`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!40101 SET character_set_client = utf8 */;
|
||||||
|
CREATE TABLE `t1` (
|
||||||
|
`a` int(11) DEFAULT NULL
|
||||||
|
);
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
LOCK TABLES `t1` WRITE;
|
||||||
|
/*!40000 ALTER TABLE `t1` DISABLE KEYS */;
|
||||||
|
/*!40000 ALTER TABLE `t1` ENABLE KEYS */;
|
||||||
|
UNLOCK TABLES;
|
||||||
|
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||||
|
|
||||||
|
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||||
|
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||||
|
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
||||||
|
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -225,3 +225,25 @@ DROP SCHEMA IF EXISTS `mysqlslap`;
|
|||||||
DROP PROCEDURE IF EXISTS p1;
|
DROP PROCEDURE IF EXISTS p1;
|
||||||
CREATE PROCEDURE p1() SELECT 1;
|
CREATE PROCEDURE p1() SELECT 1;
|
||||||
DROP PROCEDURE p1;
|
DROP PROCEDURE p1;
|
||||||
|
#
|
||||||
|
# Bug #11765157 - 58090: mysqlslap drops schema specified in
|
||||||
|
# create_schema if auto-generate-sql also set.
|
||||||
|
#
|
||||||
|
# 'bug58090' database should not be present.
|
||||||
|
SHOW DATABASES;
|
||||||
|
Database
|
||||||
|
information_schema
|
||||||
|
mtr
|
||||||
|
mysql
|
||||||
|
performance_schema
|
||||||
|
test
|
||||||
|
# 'bug58090' database should be present.
|
||||||
|
SHOW DATABASES;
|
||||||
|
Database
|
||||||
|
information_schema
|
||||||
|
bug58090
|
||||||
|
mtr
|
||||||
|
mysql
|
||||||
|
performance_schema
|
||||||
|
test
|
||||||
|
DROP DATABASE bug58090;
|
||||||
|
@ -1429,6 +1429,7 @@ CALL mtr.add_suppression("Out of sort memory");
|
|||||||
select * from t1 order by b;
|
select * from t1 order by b;
|
||||||
ERROR HY001: Out of sort memory, consider increasing server sort buffer size
|
ERROR HY001: Out of sort memory, consider increasing server sort buffer size
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
call mtr.add_suppression("Out of sort memory; increase server sort buffer size");
|
||||||
#
|
#
|
||||||
# Bug #39844: Query Crash Mysql Server 5.0.67
|
# Bug #39844: Query Crash Mysql Server 5.0.67
|
||||||
#
|
#
|
||||||
|
@ -3,6 +3,7 @@ set @net_buffer_length=@@global.net_buffer_length;
|
|||||||
set global max_allowed_packet=100;
|
set global max_allowed_packet=100;
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1292 Truncated incorrect max_allowed_packet value: '100'
|
Warning 1292 Truncated incorrect max_allowed_packet value: '100'
|
||||||
|
Warning 1708 The value of 'max_allowed_packet' should be no less than the value of 'net_buffer_length'
|
||||||
set global net_buffer_length=100;
|
set global net_buffer_length=100;
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1292 Truncated incorrect net_buffer_length value: '100'
|
Warning 1292 Truncated incorrect net_buffer_length value: '100'
|
||||||
|
@ -1,5 +1,43 @@
|
|||||||
drop table if exists t1, t2;
|
drop table if exists t1, t2;
|
||||||
#
|
#
|
||||||
|
# Bug#59297: Can't find record in 'tablename' on update inner join
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a char(2) NOT NULL,
|
||||||
|
b char(2) NOT NULL,
|
||||||
|
c int(10) unsigned NOT NULL,
|
||||||
|
d varchar(255) DEFAULT NULL,
|
||||||
|
e varchar(1000) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (a, b, c),
|
||||||
|
KEY (a),
|
||||||
|
KEY (a, b)
|
||||||
|
)
|
||||||
|
/*!50100 PARTITION BY KEY (a)
|
||||||
|
PARTITIONS 20 */;
|
||||||
|
INSERT INTO t1 (a, b, c, d, e) VALUES
|
||||||
|
('07', '03', 343, '1', '07_03_343'),
|
||||||
|
('01', '04', 343, '2', '01_04_343'),
|
||||||
|
('01', '06', 343, '3', '01_06_343'),
|
||||||
|
('01', '07', 343, '4', '01_07_343'),
|
||||||
|
('01', '08', 343, '5', '01_08_343'),
|
||||||
|
('01', '09', 343, '6', '01_09_343'),
|
||||||
|
('03', '03', 343, '7', '03_03_343'),
|
||||||
|
('03', '06', 343, '8', '03_06_343'),
|
||||||
|
('03', '07', 343, '9', '03_07_343'),
|
||||||
|
('04', '03', 343, '10', '04_03_343'),
|
||||||
|
('04', '06', 343, '11', '04_06_343'),
|
||||||
|
('05', '03', 343, '12', '05_03_343'),
|
||||||
|
('11', '03', 343, '13', '11_03_343'),
|
||||||
|
('11', '04', 343, '14', '11_04_343')
|
||||||
|
;
|
||||||
|
UPDATE t1 AS A,
|
||||||
|
(SELECT '03' AS a, '06' AS b, 343 AS c, 'last' AS d) AS B
|
||||||
|
SET A.e = B.d
|
||||||
|
WHERE A.a = '03'
|
||||||
|
AND A.b = '06'
|
||||||
|
AND A.c = 343;
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
# Bug#57778: failed primary key add to partitioned innodb table
|
# Bug#57778: failed primary key add to partitioned innodb table
|
||||||
# inconsistent and crashes
|
# inconsistent and crashes
|
||||||
#
|
#
|
||||||
|
@ -710,95 +710,8 @@ DROP TABLE t1;
|
|||||||
CREATE TABLE t1 (c TIMESTAMP)
|
CREATE TABLE t1 (c TIMESTAMP)
|
||||||
PARTITION BY HASH (c) PARTITIONS 4;
|
PARTITION BY HASH (c) PARTITIONS 4;
|
||||||
ERROR HY000: Field 'c' is of a not allowed type for this type of partitioning
|
ERROR HY000: Field 'c' is of a not allowed type for this type of partitioning
|
||||||
|
# Moved to partition_myisam, since it was MyISAM specific
|
||||||
# Added test with existing TIMESTAMP partitioning (when it was allowed).
|
# Added test with existing TIMESTAMP partitioning (when it was allowed).
|
||||||
CREATE TABLE t1 (a TIMESTAMP)
|
|
||||||
PARTITION BY HASH (UNIX_TIMESTAMP(a));
|
|
||||||
INSERT INTO t1 VALUES ('2000-01-02 03:04:05');
|
|
||||||
SELECT * FROM t1;
|
|
||||||
a
|
|
||||||
2000-01-02 03:04:05
|
|
||||||
FLUSH TABLES;
|
|
||||||
# replacing t1.frm with TO_DAYS(a) which was allowed earlier.
|
|
||||||
# Disable warnings, since the result would differ when running with
|
|
||||||
# --ps-protocol (only for the 'SELECT * FROM t1' statement).
|
|
||||||
SELECT * FROM t1;
|
|
||||||
a
|
|
||||||
2000-01-02 03:04:05
|
|
||||||
SHOW CREATE TABLE t1;
|
|
||||||
Table Create Table
|
|
||||||
t1 CREATE TABLE `t1` (
|
|
||||||
`a` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
||||||
/*!50100 PARTITION BY HASH (TO_DAYS(a)) */
|
|
||||||
INSERT INTO t1 VALUES ('2001-02-03 04:05:06');
|
|
||||||
SELECT * FROM t1;
|
|
||||||
a
|
|
||||||
2000-01-02 03:04:05
|
|
||||||
2001-02-03 04:05:06
|
|
||||||
ALTER TABLE t1 ADD PARTITION PARTITIONS 2;
|
|
||||||
Warnings:
|
|
||||||
Warning 1486 Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
|
||||||
ALTER TABLE t1
|
|
||||||
PARTITION BY RANGE (TO_DAYS(a))
|
|
||||||
(PARTITION p0 VALUES LESS THAN (10000),
|
|
||||||
PARTITION p1 VALUES LESS THAN (MAXVALUE));
|
|
||||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
|
||||||
SHOW CREATE TABLE t1;
|
|
||||||
Table Create Table
|
|
||||||
t1 CREATE TABLE `t1` (
|
|
||||||
`a` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
||||||
/*!50100 PARTITION BY HASH (TO_DAYS(a))
|
|
||||||
PARTITIONS 3 */
|
|
||||||
CREATE TABLE t2 LIKE t1;
|
|
||||||
SHOW CREATE TABLE t2;
|
|
||||||
Table Create Table
|
|
||||||
t2 CREATE TABLE `t2` (
|
|
||||||
`a` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
||||||
/*!50100 PARTITION BY HASH (TO_DAYS(a))
|
|
||||||
PARTITIONS 3 */
|
|
||||||
Warnings:
|
|
||||||
Warning 1486 Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
|
||||||
DROP TABLE t2;
|
|
||||||
CREATE TABLE t2 SELECT * FROM t1;
|
|
||||||
DROP TABLE t2;
|
|
||||||
ALTER TABLE t1 PARTITION BY HASH (UNIX_TIMESTAMP(a));
|
|
||||||
SHOW CREATE TABLE t1;
|
|
||||||
Table Create Table
|
|
||||||
t1 CREATE TABLE `t1` (
|
|
||||||
`a` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
||||||
/*!50100 PARTITION BY HASH (UNIX_TIMESTAMP(a)) */
|
|
||||||
ALTER TABLE t1 ADD PARTITION PARTITIONS 2;
|
|
||||||
SHOW CREATE TABLE t1;
|
|
||||||
Table Create Table
|
|
||||||
t1 CREATE TABLE `t1` (
|
|
||||||
`a` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
||||||
/*!50100 PARTITION BY HASH (UNIX_TIMESTAMP(a))
|
|
||||||
PARTITIONS 3 */
|
|
||||||
SELECT * FROM t1;
|
|
||||||
a
|
|
||||||
2000-01-02 03:04:05
|
|
||||||
2001-02-03 04:05:06
|
|
||||||
DROP TABLE t1;
|
|
||||||
#
|
|
||||||
# Bug#49161: Out of memory; restart server and try again (needed 2 bytes)
|
|
||||||
#
|
|
||||||
CREATE TABLE t1 (a INT) PARTITION BY HASH (a);
|
|
||||||
FLUSH TABLES;
|
|
||||||
CHECK TABLE t1;
|
|
||||||
Table Op Msg_type Msg_text
|
|
||||||
test.t1 check Error Failed to read from the .par file
|
|
||||||
test.t1 check Error Incorrect information in file: './test/t1.frm'
|
|
||||||
test.t1 check error Corrupt
|
|
||||||
SELECT * FROM t1;
|
|
||||||
ERROR HY000: Failed to read from the .par file
|
|
||||||
# Note that it is currently impossible to drop a partitioned table
|
|
||||||
# without the .par file
|
|
||||||
DROP TABLE t1;
|
|
||||||
ERROR 42S02: Unknown table 't1'
|
|
||||||
#
|
#
|
||||||
# Bug#49477: Assertion `0' failed in ha_partition.cc:5530
|
# Bug#49477: Assertion `0' failed in ha_partition.cc:5530
|
||||||
# with temporary table and partitions
|
# with temporary table and partitions
|
||||||
@ -831,10 +744,10 @@ Table Create Table
|
|||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`id` int(11) DEFAULT NULL,
|
`id` int(11) DEFAULT NULL,
|
||||||
`purchased` date DEFAULT NULL
|
`purchased` date DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=<curr_engine> DEFAULT CHARSET=latin1
|
||||||
/*!50100 PARTITION BY RANGE (YEAR(purchased))
|
/*!50100 PARTITION BY RANGE (YEAR(purchased))
|
||||||
SUBPARTITION BY HASH (TO_DAYS(purchased))
|
SUBPARTITION BY HASH (TO_DAYS(purchased))
|
||||||
(PARTITION p0 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
|
(PARTITION p0 VALUES LESS THAN MAXVALUE ENGINE = <curr_engine>) */
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
CREATE TABLE t1 (id INT, purchased DATE)
|
CREATE TABLE t1 (id INT, purchased DATE)
|
||||||
PARTITION BY RANGE(YEAR(purchased))
|
PARTITION BY RANGE(YEAR(purchased))
|
||||||
@ -852,12 +765,12 @@ Table Create Table
|
|||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`id` int(11) DEFAULT NULL,
|
`id` int(11) DEFAULT NULL,
|
||||||
`purchased` date DEFAULT NULL
|
`purchased` date DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=<curr_engine> DEFAULT CHARSET=latin1
|
||||||
/*!50100 PARTITION BY RANGE (YEAR(purchased))
|
/*!50100 PARTITION BY RANGE (YEAR(purchased))
|
||||||
SUBPARTITION BY HASH (TO_DAYS(purchased))
|
SUBPARTITION BY HASH (TO_DAYS(purchased))
|
||||||
(PARTITION p0 VALUES LESS THAN MAXVALUE
|
(PARTITION p0 VALUES LESS THAN MAXVALUE
|
||||||
(SUBPARTITION sp0 ENGINE = MyISAM,
|
(SUBPARTITION sp0 ENGINE = <curr_engine>,
|
||||||
SUBPARTITION sp1 ENGINE = MyISAM)) */
|
SUBPARTITION sp1 ENGINE = <curr_engine>)) */
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
CREATE TABLE t1 (id INT, purchased DATE)
|
CREATE TABLE t1 (id INT, purchased DATE)
|
||||||
PARTITION BY RANGE(YEAR(purchased))
|
PARTITION BY RANGE(YEAR(purchased))
|
||||||
@ -872,53 +785,11 @@ Table Create Table
|
|||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`id` int(11) DEFAULT NULL,
|
`id` int(11) DEFAULT NULL,
|
||||||
`purchased` date DEFAULT NULL
|
`purchased` date DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=<curr_engine> DEFAULT CHARSET=latin1
|
||||||
/*!50100 PARTITION BY RANGE (YEAR(purchased))
|
/*!50100 PARTITION BY RANGE (YEAR(purchased))
|
||||||
(PARTITION p0 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
|
(PARTITION p0 VALUES LESS THAN MAXVALUE ENGINE = <curr_engine>) */
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET @@sql_mode= @org_mode;
|
SET @@sql_mode= @org_mode;
|
||||||
#
|
|
||||||
# Bug#50392: insert_id is not reset for partitioned tables
|
|
||||||
# auto_increment on duplicate entry
|
|
||||||
CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY);
|
|
||||||
SET INSERT_ID= 13;
|
|
||||||
INSERT INTO t1 VALUES (NULL);
|
|
||||||
SET INSERT_ID= 12;
|
|
||||||
INSERT INTO t1 VALUES (NULL), (NULL), (NULL);
|
|
||||||
ERROR 23000: Duplicate entry '13' for key 'PRIMARY'
|
|
||||||
SHOW CREATE TABLE t1;
|
|
||||||
Table Create Table
|
|
||||||
t1 CREATE TABLE `t1` (
|
|
||||||
`a` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
PRIMARY KEY (`a`)
|
|
||||||
) ENGINE=MyISAM AUTO_INCREMENT=14 DEFAULT CHARSET=latin1
|
|
||||||
INSERT INTO t1 VALUES (NULL);
|
|
||||||
SELECT * FROM t1;
|
|
||||||
a
|
|
||||||
12
|
|
||||||
13
|
|
||||||
14
|
|
||||||
DROP TABLE t1;
|
|
||||||
CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY) PARTITION BY KEY(a);
|
|
||||||
SET INSERT_ID= 13;
|
|
||||||
INSERT INTO t1 VALUES (NULL);
|
|
||||||
SET INSERT_ID= 12;
|
|
||||||
INSERT INTO t1 VALUES (NULL), (NULL), (NULL);
|
|
||||||
ERROR 23000: Duplicate entry '13' for key 'PRIMARY'
|
|
||||||
SHOW CREATE TABLE t1;
|
|
||||||
Table Create Table
|
|
||||||
t1 CREATE TABLE `t1` (
|
|
||||||
`a` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
PRIMARY KEY (`a`)
|
|
||||||
) ENGINE=MyISAM AUTO_INCREMENT=14 DEFAULT CHARSET=latin1
|
|
||||||
/*!50100 PARTITION BY KEY (a) */
|
|
||||||
INSERT INTO t1 VALUES (NULL);
|
|
||||||
SELECT * FROM t1;
|
|
||||||
a
|
|
||||||
12
|
|
||||||
13
|
|
||||||
14
|
|
||||||
DROP TABLE t1;
|
|
||||||
CREATE TABLE t1 (a INTEGER NOT NULL, PRIMARY KEY (a));
|
CREATE TABLE t1 (a INTEGER NOT NULL, PRIMARY KEY (a));
|
||||||
INSERT INTO t1 VALUES (1),(1);
|
INSERT INTO t1 VALUES (1),(1);
|
||||||
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
|
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
|
||||||
@ -928,19 +799,6 @@ PARTITION BY KEY (a) PARTITIONS 2;
|
|||||||
INSERT INTO t1 VALUES (1),(1);
|
INSERT INTO t1 VALUES (1),(1);
|
||||||
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
|
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
CREATE TABLE t1 (a INT)
|
|
||||||
PARTITION BY HASH (a)
|
|
||||||
( PARTITION p0 ENGINE=MyISAM,
|
|
||||||
PARTITION p1);
|
|
||||||
ERROR HY000: The mix of handlers in the partitions is not allowed in this version of MySQL
|
|
||||||
CREATE TABLE t1 (a INT)
|
|
||||||
PARTITION BY LIST (a)
|
|
||||||
SUBPARTITION BY HASH (a)
|
|
||||||
( PARTITION p0 VALUES IN (0)
|
|
||||||
( SUBPARTITION s0, SUBPARTITION s1 ENGINE=MyISAM, SUBPARTITION s2),
|
|
||||||
PARTITION p1 VALUES IN (1)
|
|
||||||
( SUBPARTITION s3 ENGINE=MyISAM, SUBPARTITION s4, SUBPARTITION s5 ENGINE=MyISAM));
|
|
||||||
ERROR HY000: The mix of handlers in the partitions is not allowed in this version of MySQL
|
|
||||||
CREATE TABLE t1 (
|
CREATE TABLE t1 (
|
||||||
a int
|
a int
|
||||||
)
|
)
|
||||||
|
241
mysql-test/r/partition_myisam.result
Normal file
241
mysql-test/r/partition_myisam.result
Normal file
@ -0,0 +1,241 @@
|
|||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
#
|
||||||
|
# Bug#50036: Inconsistent errors when using TIMESTAMP
|
||||||
|
# columns/expressions
|
||||||
|
# Added test with existing TIMESTAMP partitioning (when it was allowed).
|
||||||
|
CREATE TABLE t1 (a TIMESTAMP)
|
||||||
|
ENGINE = MyISAM
|
||||||
|
PARTITION BY HASH (UNIX_TIMESTAMP(a));
|
||||||
|
INSERT INTO t1 VALUES ('2000-01-02 03:04:05');
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
2000-01-02 03:04:05
|
||||||
|
FLUSH TABLES;
|
||||||
|
# replacing t1.frm with TO_DAYS(a) which was allowed earlier.
|
||||||
|
# Disable warnings, since the result would differ when running with
|
||||||
|
# --ps-protocol (only for the 'SELECT * FROM t1' statement).
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
2000-01-02 03:04:05
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||||
|
) ENGINE=<curr_engine> DEFAULT CHARSET=latin1
|
||||||
|
/*!50100 PARTITION BY HASH (TO_DAYS(a)) */
|
||||||
|
INSERT INTO t1 VALUES ('2001-02-03 04:05:06');
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
2000-01-02 03:04:05
|
||||||
|
2001-02-03 04:05:06
|
||||||
|
ALTER TABLE t1 ADD PARTITION PARTITIONS 2;
|
||||||
|
Warnings:
|
||||||
|
Warning 1486 Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||||
|
ALTER TABLE t1
|
||||||
|
PARTITION BY RANGE (TO_DAYS(a))
|
||||||
|
(PARTITION p0 VALUES LESS THAN (10000),
|
||||||
|
PARTITION p1 VALUES LESS THAN (MAXVALUE));
|
||||||
|
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
/*!50100 PARTITION BY HASH (TO_DAYS(a))
|
||||||
|
PARTITIONS 3 */
|
||||||
|
CREATE TABLE t2 LIKE t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`a` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
/*!50100 PARTITION BY HASH (TO_DAYS(a))
|
||||||
|
PARTITIONS 3 */
|
||||||
|
Warnings:
|
||||||
|
Warning 1486 Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 SELECT * FROM t1;
|
||||||
|
DROP TABLE t2;
|
||||||
|
ALTER TABLE t1 PARTITION BY HASH (UNIX_TIMESTAMP(a));
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
/*!50100 PARTITION BY HASH (UNIX_TIMESTAMP(a)) */
|
||||||
|
ALTER TABLE t1 ADD PARTITION PARTITIONS 2;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
/*!50100 PARTITION BY HASH (UNIX_TIMESTAMP(a))
|
||||||
|
PARTITIONS 3 */
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
2000-01-02 03:04:05
|
||||||
|
2001-02-03 04:05:06
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug#31931: Mix of handlers error message
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT)
|
||||||
|
PARTITION BY HASH (a)
|
||||||
|
( PARTITION p0 ENGINE=MyISAM,
|
||||||
|
PARTITION p1);
|
||||||
|
ERROR HY000: The mix of handlers in the partitions is not allowed in this version of MySQL
|
||||||
|
CREATE TABLE t1 (a INT)
|
||||||
|
PARTITION BY LIST (a)
|
||||||
|
SUBPARTITION BY HASH (a)
|
||||||
|
( PARTITION p0 VALUES IN (0)
|
||||||
|
( SUBPARTITION s0, SUBPARTITION s1 ENGINE=MyISAM, SUBPARTITION s2),
|
||||||
|
PARTITION p1 VALUES IN (1)
|
||||||
|
( SUBPARTITION s3 ENGINE=MyISAM, SUBPARTITION s4, SUBPARTITION s5 ENGINE=MyISAM));
|
||||||
|
ERROR HY000: The mix of handlers in the partitions is not allowed in this version of MySQL
|
||||||
|
#
|
||||||
|
# Bug#49161: Out of memory; restart server and try again (needed 2 bytes)
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT)
|
||||||
|
ENGINE = MyISAM
|
||||||
|
PARTITION BY HASH (a);
|
||||||
|
FLUSH TABLES;
|
||||||
|
CHECK TABLE t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 check Error Failed to read from the .par file
|
||||||
|
test.t1 check Error Incorrect information in file: './test/t1.frm'
|
||||||
|
test.t1 check error Corrupt
|
||||||
|
SELECT * FROM t1;
|
||||||
|
ERROR HY000: Failed to read from the .par file
|
||||||
|
# Note that it is currently impossible to drop a partitioned table
|
||||||
|
# without the .par file
|
||||||
|
DROP TABLE t1;
|
||||||
|
ERROR 42S02: Unknown table 't1'
|
||||||
|
#
|
||||||
|
# Bug#50392: insert_id is not reset for partitioned tables
|
||||||
|
# auto_increment on duplicate entry
|
||||||
|
CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY)
|
||||||
|
ENGINE = MyISAM;
|
||||||
|
SET INSERT_ID= 13;
|
||||||
|
INSERT INTO t1 VALUES (NULL);
|
||||||
|
SET INSERT_ID= 12;
|
||||||
|
# For transactional engines, 12 will not be inserted, since the failing
|
||||||
|
# statement is rolled back.
|
||||||
|
INSERT INTO t1 VALUES (NULL), (NULL), (NULL);
|
||||||
|
ERROR 23000: Duplicate entry '13' for key 'PRIMARY'
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
PRIMARY KEY (`a`)
|
||||||
|
) ENGINE=MyISAM AUTO_INCREMENT=14 DEFAULT CHARSET=latin1
|
||||||
|
INSERT INTO t1 VALUES (NULL);
|
||||||
|
# NOTE: 12 exists only in non transactional engines!
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
12
|
||||||
|
13
|
||||||
|
14
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY)
|
||||||
|
ENGINE = MyISAM
|
||||||
|
PARTITION BY KEY(a);
|
||||||
|
SET INSERT_ID= 13;
|
||||||
|
INSERT INTO t1 VALUES (NULL);
|
||||||
|
SET INSERT_ID= 12;
|
||||||
|
INSERT INTO t1 VALUES (NULL), (NULL), (NULL);
|
||||||
|
ERROR 23000: Duplicate entry '13' for key 'PRIMARY'
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
PRIMARY KEY (`a`)
|
||||||
|
) ENGINE=MyISAM AUTO_INCREMENT=14 DEFAULT CHARSET=latin1
|
||||||
|
/*!50100 PARTITION BY KEY (a) */
|
||||||
|
INSERT INTO t1 VALUES (NULL);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
12
|
||||||
|
13
|
||||||
|
14
|
||||||
|
DROP TABLE t1;
|
||||||
|
# Bug#30102 test
|
||||||
|
CREATE TABLE t1 (a INT)
|
||||||
|
ENGINE = MyISAM
|
||||||
|
PARTITION BY RANGE (a)
|
||||||
|
(PARTITION p0 VALUES LESS THAN (6),
|
||||||
|
PARTITION `p1....................` VALUES LESS THAN (9),
|
||||||
|
PARTITION p2 VALUES LESS THAN MAXVALUE);
|
||||||
|
# List of files in database `test`, all original t1-files here
|
||||||
|
t1#P#p0.MYD
|
||||||
|
t1#P#p0.MYI
|
||||||
|
t1#P#p1@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e.MYD
|
||||||
|
t1#P#p1@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e.MYI
|
||||||
|
t1#P#p2.MYD
|
||||||
|
t1#P#p2.MYI
|
||||||
|
t1.frm
|
||||||
|
t1.par
|
||||||
|
INSERT INTO t1 VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
|
||||||
|
# Renaming to a file name where the first partition is 250 chars
|
||||||
|
# and the second partition is 350 chars
|
||||||
|
RENAME TABLE t1 TO `t2_new..............................................end`;
|
||||||
|
Got one of the listed errors
|
||||||
|
# List of files in database `test`, should not be any t2-files here
|
||||||
|
# List of files in database `test`, should be all t1-files here
|
||||||
|
t1#P#p0.MYD
|
||||||
|
t1#P#p0.MYI
|
||||||
|
t1#P#p1@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e.MYD
|
||||||
|
t1#P#p1@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e.MYI
|
||||||
|
t1#P#p2.MYD
|
||||||
|
t1#P#p2.MYI
|
||||||
|
t1.frm
|
||||||
|
t1.par
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
10
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
6
|
||||||
|
7
|
||||||
|
8
|
||||||
|
9
|
||||||
|
# List of files in database `test`, should be all t1-files here
|
||||||
|
t1#P#p0.MYD
|
||||||
|
t1#P#p0.MYI
|
||||||
|
t1#P#p1@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e.MYD
|
||||||
|
t1#P#p1@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e.MYI
|
||||||
|
t1#P#p2.MYD
|
||||||
|
t1#P#p2.MYI
|
||||||
|
t1.frm
|
||||||
|
t1.par
|
||||||
|
# Renaming to a file name where the first partition is 156 chars
|
||||||
|
# and the second partition is 256 chars
|
||||||
|
RENAME TABLE t1 TO `t2_............................_end`;
|
||||||
|
Got one of the listed errors
|
||||||
|
# List of files in database `test`, should not be any t2-files here
|
||||||
|
# List of files in database `test`, should be all t1-files here
|
||||||
|
t1#P#p0.MYD
|
||||||
|
t1#P#p0.MYI
|
||||||
|
t1#P#p1@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e.MYD
|
||||||
|
t1#P#p1@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e.MYI
|
||||||
|
t1#P#p2.MYD
|
||||||
|
t1#P#p2.MYI
|
||||||
|
t1.frm
|
||||||
|
t1.par
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
10
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
6
|
||||||
|
7
|
||||||
|
8
|
||||||
|
9
|
||||||
|
DROP TABLE t1;
|
||||||
|
# Should not be any files left here
|
||||||
|
# End of bug#30102 test.
|
@ -1,81 +0,0 @@
|
|||||||
DROP TABLE IF EXISTS t1, t2;
|
|
||||||
# Bug#30102 test
|
|
||||||
CREATE TABLE t1 (a INT)
|
|
||||||
PARTITION BY RANGE (a)
|
|
||||||
(PARTITION p0 VALUES LESS THAN (6),
|
|
||||||
PARTITION `p1....................` VALUES LESS THAN (9),
|
|
||||||
PARTITION p2 VALUES LESS THAN MAXVALUE);
|
|
||||||
# List of files in database `test`, all original t1-files here
|
|
||||||
t1#P#p0.MYD
|
|
||||||
t1#P#p0.MYI
|
|
||||||
t1#P#p1@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e.MYD
|
|
||||||
t1#P#p1@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e.MYI
|
|
||||||
t1#P#p2.MYD
|
|
||||||
t1#P#p2.MYI
|
|
||||||
t1.frm
|
|
||||||
t1.par
|
|
||||||
INSERT INTO t1 VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
|
|
||||||
# Renaming to a file name where the first partition is 250 chars
|
|
||||||
# and the second partition is 350 chars
|
|
||||||
RENAME TABLE t1 TO `t2_new..............................................end`;
|
|
||||||
Got one of the listed errors
|
|
||||||
# List of files in database `test`, should not be any t2-files here
|
|
||||||
# List of files in database `test`, should be all t1-files here
|
|
||||||
t1#P#p0.MYD
|
|
||||||
t1#P#p0.MYI
|
|
||||||
t1#P#p1@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e.MYD
|
|
||||||
t1#P#p1@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e.MYI
|
|
||||||
t1#P#p2.MYD
|
|
||||||
t1#P#p2.MYI
|
|
||||||
t1.frm
|
|
||||||
t1.par
|
|
||||||
SELECT * FROM t1;
|
|
||||||
a
|
|
||||||
1
|
|
||||||
10
|
|
||||||
2
|
|
||||||
3
|
|
||||||
4
|
|
||||||
5
|
|
||||||
6
|
|
||||||
7
|
|
||||||
8
|
|
||||||
9
|
|
||||||
# List of files in database `test`, should be all t1-files here
|
|
||||||
t1#P#p0.MYD
|
|
||||||
t1#P#p0.MYI
|
|
||||||
t1#P#p1@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e.MYD
|
|
||||||
t1#P#p1@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e.MYI
|
|
||||||
t1#P#p2.MYD
|
|
||||||
t1#P#p2.MYI
|
|
||||||
t1.frm
|
|
||||||
t1.par
|
|
||||||
# Renaming to a file name where the first partition is 156 chars
|
|
||||||
# and the second partition is 256 chars
|
|
||||||
RENAME TABLE t1 TO `t2_............................_end`;
|
|
||||||
Got one of the listed errors
|
|
||||||
# List of files in database `test`, should not be any t2-files here
|
|
||||||
# List of files in database `test`, should be all t1-files here
|
|
||||||
t1#P#p0.MYD
|
|
||||||
t1#P#p0.MYI
|
|
||||||
t1#P#p1@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e.MYD
|
|
||||||
t1#P#p1@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e.MYI
|
|
||||||
t1#P#p2.MYD
|
|
||||||
t1#P#p2.MYI
|
|
||||||
t1.frm
|
|
||||||
t1.par
|
|
||||||
SELECT * FROM t1;
|
|
||||||
a
|
|
||||||
1
|
|
||||||
10
|
|
||||||
2
|
|
||||||
3
|
|
||||||
4
|
|
||||||
5
|
|
||||||
6
|
|
||||||
7
|
|
||||||
8
|
|
||||||
9
|
|
||||||
DROP TABLE t1;
|
|
||||||
# Should not be any files left here
|
|
||||||
# End of bug#30102 test.
|
|
@ -6,11 +6,12 @@ DROP DATABASE IF EXISTS mysqltest2;
|
|||||||
CREATE USER mysqltest_1@localhost;
|
CREATE USER mysqltest_1@localhost;
|
||||||
CREATE DATABASE mysqltest2;
|
CREATE DATABASE mysqltest2;
|
||||||
USE mysqltest2;
|
USE mysqltest2;
|
||||||
CREATE TABLE t1 (a INT);
|
CREATE TABLE t1 (a INT) ENGINE = MyISAM;
|
||||||
INSERT INTO t1 VALUES (0);
|
INSERT INTO t1 VALUES (0);
|
||||||
# user mysqltest_1:
|
# user mysqltest_1:
|
||||||
USE test;
|
USE test;
|
||||||
CREATE TABLE t1 (a INT)
|
CREATE TABLE t1 (a INT)
|
||||||
|
ENGINE = MyISAM
|
||||||
PARTITION BY LIST (a) (
|
PARTITION BY LIST (a) (
|
||||||
PARTITION p0 VALUES IN (0)
|
PARTITION p0 VALUES IN (0)
|
||||||
DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp'
|
DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp'
|
||||||
@ -47,6 +48,7 @@ DROP DATABASE mysqltest2;
|
|||||||
CREATE DATABASE mysqltest2;
|
CREATE DATABASE mysqltest2;
|
||||||
USE mysqltest2;
|
USE mysqltest2;
|
||||||
CREATE TABLE t1 (a INT)
|
CREATE TABLE t1 (a INT)
|
||||||
|
ENGINE = MyISAM
|
||||||
PARTITION BY LIST (a) (
|
PARTITION BY LIST (a) (
|
||||||
PARTITION p0 VALUES IN (0)
|
PARTITION p0 VALUES IN (0)
|
||||||
DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp'
|
DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp'
|
||||||
@ -58,6 +60,7 @@ DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp'
|
|||||||
# user mysqltest_1:
|
# user mysqltest_1:
|
||||||
USE test;
|
USE test;
|
||||||
CREATE TABLE t1 (a INT)
|
CREATE TABLE t1 (a INT)
|
||||||
|
ENGINE = MyISAM
|
||||||
PARTITION BY LIST (a) (
|
PARTITION BY LIST (a) (
|
||||||
PARTITION p0 VALUES IN (0)
|
PARTITION p0 VALUES IN (0)
|
||||||
DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp'
|
DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp'
|
||||||
@ -68,6 +71,7 @@ DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp'
|
|||||||
);
|
);
|
||||||
Got one of the listed errors
|
Got one of the listed errors
|
||||||
CREATE TABLE t1 (a INT)
|
CREATE TABLE t1 (a INT)
|
||||||
|
ENGINE = MyISAM
|
||||||
PARTITION BY LIST (a) (
|
PARTITION BY LIST (a) (
|
||||||
PARTITION p0 VALUES IN (0)
|
PARTITION p0 VALUES IN (0)
|
||||||
DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp'
|
DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp'
|
||||||
@ -82,6 +86,7 @@ DROP DATABASE mysqltest2;
|
|||||||
USE test;
|
USE test;
|
||||||
DROP USER mysqltest_1@localhost;
|
DROP USER mysqltest_1@localhost;
|
||||||
create table t2 (i int )
|
create table t2 (i int )
|
||||||
|
ENGINE = MyISAM
|
||||||
partition by range (i)
|
partition by range (i)
|
||||||
(
|
(
|
||||||
partition p01 values less than (1000)
|
partition p01 values less than (1000)
|
||||||
@ -94,6 +99,7 @@ select @@sql_mode;
|
|||||||
@@sql_mode
|
@@sql_mode
|
||||||
NO_DIR_IN_CREATE
|
NO_DIR_IN_CREATE
|
||||||
create table t1 (i int )
|
create table t1 (i int )
|
||||||
|
ENGINE = MyISAM
|
||||||
partition by range (i)
|
partition by range (i)
|
||||||
(
|
(
|
||||||
partition p01 values less than (1000)
|
partition p01 values less than (1000)
|
||||||
@ -113,10 +119,12 @@ t2 CREATE TABLE `t2` (
|
|||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
set @@sql_mode=@org_mode;
|
set @@sql_mode=@org_mode;
|
||||||
create table t1 (a int)
|
create table t1 (a int)
|
||||||
|
ENGINE = MyISAM
|
||||||
partition by key (a)
|
partition by key (a)
|
||||||
(partition p0 DATA DIRECTORY 'part-data' INDEX DIRECTORY 'part-data');
|
(partition p0 DATA DIRECTORY 'part-data' INDEX DIRECTORY 'part-data');
|
||||||
Got one of the listed errors
|
Got one of the listed errors
|
||||||
create table t1 (a int)
|
create table t1 (a int)
|
||||||
|
ENGINE = MyISAM
|
||||||
partition by key (a)
|
partition by key (a)
|
||||||
(partition p0,
|
(partition p0,
|
||||||
partition p1 DATA DIRECTORY 'part-data' INDEX DIRECTORY 'part-data');
|
partition p1 DATA DIRECTORY 'part-data' INDEX DIRECTORY 'part-data');
|
||||||
|
@ -342,4 +342,109 @@ select USER(),CURRENT_USER();
|
|||||||
USER() CURRENT_USER()
|
USER() CURRENT_USER()
|
||||||
uplain@localhost uplain@localhost
|
uplain@localhost uplain@localhost
|
||||||
DROP USER uplain@localhost;
|
DROP USER uplain@localhost;
|
||||||
|
#
|
||||||
|
# Bug #59038 : mysql.user.authentication_string column
|
||||||
|
# causes configuration wizard to fail
|
||||||
|
INSERT INTO mysql.user(
|
||||||
|
Host,
|
||||||
|
User,
|
||||||
|
Password,
|
||||||
|
Select_priv,
|
||||||
|
Insert_priv,
|
||||||
|
Update_priv,
|
||||||
|
Delete_priv,
|
||||||
|
Create_priv,
|
||||||
|
Drop_priv,
|
||||||
|
Reload_priv,
|
||||||
|
Shutdown_priv,
|
||||||
|
Process_priv,
|
||||||
|
File_priv,
|
||||||
|
Grant_priv,
|
||||||
|
References_priv,
|
||||||
|
Index_priv,
|
||||||
|
Alter_priv,
|
||||||
|
Show_db_priv,
|
||||||
|
Super_priv,
|
||||||
|
Create_tmp_table_priv,
|
||||||
|
Lock_tables_priv,
|
||||||
|
Execute_priv,
|
||||||
|
Repl_slave_priv,
|
||||||
|
Repl_client_priv,
|
||||||
|
/*!50001
|
||||||
|
Create_view_priv,
|
||||||
|
Show_view_priv,
|
||||||
|
Create_routine_priv,
|
||||||
|
Alter_routine_priv,
|
||||||
|
Create_user_priv,
|
||||||
|
*/
|
||||||
|
ssl_type,
|
||||||
|
ssl_cipher,
|
||||||
|
x509_issuer,
|
||||||
|
x509_subject,
|
||||||
|
max_questions,
|
||||||
|
max_updates,
|
||||||
|
max_connections)
|
||||||
|
VALUES (
|
||||||
|
'localhost',
|
||||||
|
'inserttest', '',
|
||||||
|
'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y',
|
||||||
|
'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y',
|
||||||
|
/*!50001 'Y', 'Y', 'Y', 'Y', 'Y', */'', '', '', '', '0', '0', '0');
|
||||||
|
FLUSH PRIVILEGES;
|
||||||
|
DROP USER inserttest@localhost;
|
||||||
|
SELECT IS_NULLABLE, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE
|
||||||
|
COLUMN_NAME IN ('authentication_string', 'plugin') AND
|
||||||
|
TABLE_NAME='user' AND
|
||||||
|
TABLE_SCHEMA='mysql'
|
||||||
|
ORDER BY COLUMN_NAME;
|
||||||
|
IS_NULLABLE COLUMN_NAME
|
||||||
|
YES authentication_string
|
||||||
|
YES plugin
|
||||||
|
#
|
||||||
|
# Bug #11936829: diff. between mysql.user (authentication_string)
|
||||||
|
# in fresh and upgraded 5.5.11
|
||||||
|
#
|
||||||
|
SELECT IS_NULLABLE, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
|
||||||
|
WHERE TABLE_SCHEMA= 'mysql' AND TABLE_NAME= 'user' AND
|
||||||
|
COLUMN_NAME IN ('plugin', 'authentication_string')
|
||||||
|
ORDER BY COLUMN_NAME;
|
||||||
|
IS_NULLABLE COLUMN_NAME
|
||||||
|
YES authentication_string
|
||||||
|
YES plugin
|
||||||
|
ALTER TABLE mysql.user MODIFY plugin char(64) DEFAULT '' NOT NULL;
|
||||||
|
ALTER TABLE mysql.user MODIFY authentication_string TEXT NOT NULL;
|
||||||
|
Run mysql_upgrade on a 5.5.10 external authentication column layout
|
||||||
|
mtr.global_suppressions OK
|
||||||
|
mtr.test_suppressions OK
|
||||||
|
mysql.columns_priv OK
|
||||||
|
mysql.db OK
|
||||||
|
mysql.event OK
|
||||||
|
mysql.func OK
|
||||||
|
mysql.general_log OK
|
||||||
|
mysql.help_category OK
|
||||||
|
mysql.help_keyword OK
|
||||||
|
mysql.help_relation OK
|
||||||
|
mysql.help_topic OK
|
||||||
|
mysql.host OK
|
||||||
|
mysql.ndb_binlog_index OK
|
||||||
|
mysql.plugin OK
|
||||||
|
mysql.proc OK
|
||||||
|
mysql.procs_priv OK
|
||||||
|
mysql.proxies_priv OK
|
||||||
|
mysql.servers OK
|
||||||
|
mysql.slow_log OK
|
||||||
|
mysql.tables_priv OK
|
||||||
|
mysql.time_zone OK
|
||||||
|
mysql.time_zone_leap_second OK
|
||||||
|
mysql.time_zone_name OK
|
||||||
|
mysql.time_zone_transition OK
|
||||||
|
mysql.time_zone_transition_type OK
|
||||||
|
mysql.user OK
|
||||||
|
SELECT IS_NULLABLE, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
|
||||||
|
WHERE TABLE_SCHEMA= 'mysql' AND TABLE_NAME= 'user' AND
|
||||||
|
COLUMN_NAME IN ('plugin', 'authentication_string')
|
||||||
|
ORDER BY COLUMN_NAME;
|
||||||
|
IS_NULLABLE COLUMN_NAME
|
||||||
|
YES authentication_string
|
||||||
|
YES plugin
|
||||||
End of 5.5 tests
|
End of 5.5 tests
|
||||||
|
@ -105,7 +105,7 @@ CREATE USER plug_dest IDENTIFIED BY 'plug_dest_passwd';
|
|||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string
|
user plugin authentication_string
|
||||||
plug test_plugin_server plug_dest
|
plug test_plugin_server plug_dest
|
||||||
plug_dest
|
plug_dest NULL
|
||||||
DROP USER plug, plug_dest;
|
DROP USER plug, plug_dest;
|
||||||
CREATE USER plug IDENTIFIED WITH 'test_plugin_server' AS 'plug_dest';
|
CREATE USER plug IDENTIFIED WITH 'test_plugin_server' AS 'plug_dest';
|
||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
@ -115,7 +115,7 @@ DROP USER plug;
|
|||||||
CREATE USER plug_dest IDENTIFIED BY 'plug_dest_passwd';
|
CREATE USER plug_dest IDENTIFIED BY 'plug_dest_passwd';
|
||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string
|
user plugin authentication_string
|
||||||
plug_dest
|
plug_dest NULL
|
||||||
DROP USER plug_dest;
|
DROP USER plug_dest;
|
||||||
GRANT ALL PRIVILEGES ON test_user_db.* TO plug IDENTIFIED WITH 'test_plugin_server' AS 'plug_dest';
|
GRANT ALL PRIVILEGES ON test_user_db.* TO plug IDENTIFIED WITH 'test_plugin_server' AS 'plug_dest';
|
||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
@ -125,7 +125,7 @@ CREATE USER plug_dest IDENTIFIED BY 'plug_dest_passwd';
|
|||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string
|
user plugin authentication_string
|
||||||
plug test_plugin_server plug_dest
|
plug test_plugin_server plug_dest
|
||||||
plug_dest
|
plug_dest NULL
|
||||||
DROP USER plug, plug_dest;
|
DROP USER plug, plug_dest;
|
||||||
GRANT ALL PRIVILEGES ON test_user_db.* TO plug IDENTIFIED WITH test_plugin_server AS 'plug_dest';
|
GRANT ALL PRIVILEGES ON test_user_db.* TO plug IDENTIFIED WITH test_plugin_server AS 'plug_dest';
|
||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
@ -135,7 +135,7 @@ DROP USER plug;
|
|||||||
CREATE USER plug_dest IDENTIFIED BY 'plug_dest_passwd';
|
CREATE USER plug_dest IDENTIFIED BY 'plug_dest_passwd';
|
||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string
|
user plugin authentication_string
|
||||||
plug_dest
|
plug_dest NULL
|
||||||
DROP USER plug_dest;
|
DROP USER plug_dest;
|
||||||
CREATE USER plug IDENTIFIED WITH 'test_plugin_server' AS 'plug_dest';
|
CREATE USER plug IDENTIFIED WITH 'test_plugin_server' AS 'plug_dest';
|
||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
@ -145,7 +145,7 @@ GRANT ALL PRIVILEGES ON test_user_db.* TO plug_dest IDENTIFIED BY 'plug_dest_pas
|
|||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string
|
user plugin authentication_string
|
||||||
plug test_plugin_server plug_dest
|
plug test_plugin_server plug_dest
|
||||||
plug_dest
|
plug_dest NULL
|
||||||
DROP USER plug, plug_dest;
|
DROP USER plug, plug_dest;
|
||||||
CREATE USER plug IDENTIFIED WITH 'test_plugin_server' AS 'plug_dest';
|
CREATE USER plug IDENTIFIED WITH 'test_plugin_server' AS 'plug_dest';
|
||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
@ -155,7 +155,7 @@ DROP USER plug;
|
|||||||
GRANT ALL PRIVILEGES ON test_user_db.* TO plug_dest IDENTIFIED BY 'plug_dest_passwd';
|
GRANT ALL PRIVILEGES ON test_user_db.* TO plug_dest IDENTIFIED BY 'plug_dest_passwd';
|
||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string
|
user plugin authentication_string
|
||||||
plug_dest
|
plug_dest NULL
|
||||||
DROP USER plug_dest;
|
DROP USER plug_dest;
|
||||||
CREATE USER plug IDENTIFIED WITH 'test_plugin_server' AS 'plug_dest';
|
CREATE USER plug IDENTIFIED WITH 'test_plugin_server' AS 'plug_dest';
|
||||||
GRANT ALL PRIVILEGES ON test_user_db.* TO plug IDENTIFIED WITH 'test_plugin_server' AS 'plug_dest';
|
GRANT ALL PRIVILEGES ON test_user_db.* TO plug IDENTIFIED WITH 'test_plugin_server' AS 'plug_dest';
|
||||||
@ -210,7 +210,7 @@ DROP USER plüg;
|
|||||||
CREATE USER plüg_dest IDENTIFIED BY 'plug_dest_passwd';
|
CREATE USER plüg_dest IDENTIFIED BY 'plug_dest_passwd';
|
||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string
|
user plugin authentication_string
|
||||||
plüg_dest
|
plüg_dest NULL
|
||||||
DROP USER plüg_dest;
|
DROP USER plüg_dest;
|
||||||
SET NAMES ascii;
|
SET NAMES ascii;
|
||||||
CREATE USER 'plüg' IDENTIFIED WITH 'test_plugin_server' AS 'plüg_dest';
|
CREATE USER 'plüg' IDENTIFIED WITH 'test_plugin_server' AS 'plüg_dest';
|
||||||
@ -221,7 +221,7 @@ DROP USER 'plüg';
|
|||||||
CREATE USER 'plüg_dest' IDENTIFIED BY 'plug_dest_passwd';
|
CREATE USER 'plüg_dest' IDENTIFIED BY 'plug_dest_passwd';
|
||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string
|
user plugin authentication_string
|
||||||
pl??g_dest
|
pl??g_dest NULL
|
||||||
DROP USER 'plüg_dest';
|
DROP USER 'plüg_dest';
|
||||||
SET NAMES latin1;
|
SET NAMES latin1;
|
||||||
========== test 1.1.1.5 ====================================
|
========== test 1.1.1.5 ====================================
|
||||||
@ -235,7 +235,7 @@ DROP USER 'plug';
|
|||||||
CREATE USER 'plüg_dest' IDENTIFIED BY 'plug_dest_passwd';
|
CREATE USER 'plüg_dest' IDENTIFIED BY 'plug_dest_passwd';
|
||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string
|
user plugin authentication_string
|
||||||
plüg_dest
|
plüg_dest NULL
|
||||||
DROP USER 'plüg_dest';
|
DROP USER 'plüg_dest';
|
||||||
SET NAMES utf8;
|
SET NAMES utf8;
|
||||||
CREATE USER plüg IDENTIFIED WITH 'test_plügin_server' AS 'plüg_dest';
|
CREATE USER plüg IDENTIFIED WITH 'test_plügin_server' AS 'plüg_dest';
|
||||||
@ -248,7 +248,7 @@ DROP USER 'plüg';
|
|||||||
CREATE USER 'plüg_dest' IDENTIFIED BY 'plug_dest_passwd';
|
CREATE USER 'plüg_dest' IDENTIFIED BY 'plug_dest_passwd';
|
||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string
|
user plugin authentication_string
|
||||||
plüg_dest
|
plüg_dest NULL
|
||||||
DROP USER 'plüg_dest';
|
DROP USER 'plüg_dest';
|
||||||
CREATE USER plüg IDENTIFIED WITH test_plugin_server AS 'plüg_dest';
|
CREATE USER plüg IDENTIFIED WITH test_plugin_server AS 'plüg_dest';
|
||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
@ -258,7 +258,7 @@ DROP USER plüg;
|
|||||||
CREATE USER plüg_dest IDENTIFIED BY 'plug_dest_passwd';
|
CREATE USER plüg_dest IDENTIFIED BY 'plug_dest_passwd';
|
||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string
|
user plugin authentication_string
|
||||||
plüg_dest
|
plüg_dest NULL
|
||||||
DROP USER plüg_dest;
|
DROP USER plüg_dest;
|
||||||
========== test 1.1.1.2/1.1.2.2=============================
|
========== test 1.1.1.2/1.1.2.2=============================
|
||||||
SET @auth_name= 'test_plugin_server';
|
SET @auth_name= 'test_plugin_server';
|
||||||
@ -278,7 +278,7 @@ DROP USER plug;
|
|||||||
CREATE USER 'hh''s_plug_dest' IDENTIFIED BY 'plug_dest_passwd';
|
CREATE USER 'hh''s_plug_dest' IDENTIFIED BY 'plug_dest_passwd';
|
||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string
|
user plugin authentication_string
|
||||||
hh's_plug_dest
|
hh's_plug_dest NULL
|
||||||
DROP USER 'hh''s_plug_dest';
|
DROP USER 'hh''s_plug_dest';
|
||||||
========== test 1.1.1.4 ====================================
|
========== test 1.1.1.4 ====================================
|
||||||
CREATE USER plug IDENTIFIED WITH hh''s_test_plugin_server AS 'plug_dest';
|
CREATE USER plug IDENTIFIED WITH hh''s_test_plugin_server AS 'plug_dest';
|
||||||
@ -294,7 +294,7 @@ GRANT ALL PRIVILEGES ON test_user_db.* TO plug_dest;
|
|||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string
|
user plugin authentication_string
|
||||||
grant_user test_plugin_server plug_dest
|
grant_user test_plugin_server plug_dest
|
||||||
plug_dest
|
plug_dest NULL
|
||||||
DROP USER grant_user,plug_dest;
|
DROP USER grant_user,plug_dest;
|
||||||
set @save_sql_mode= @@sql_mode;
|
set @save_sql_mode= @@sql_mode;
|
||||||
SET @@sql_mode=no_auto_create_user;
|
SET @@sql_mode=no_auto_create_user;
|
||||||
@ -315,13 +315,13 @@ CREATE USER plug_dest IDENTIFIED BY 'plug_dest_passwd';
|
|||||||
SELECT user,plugin,authentication_string,password FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string,password FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string password
|
user plugin authentication_string password
|
||||||
grant_user test_plugin_server plug_dest
|
grant_user test_plugin_server plug_dest
|
||||||
plug_dest *939AEE68989794C0F408277411C26055CDF41119
|
plug_dest NULL *939AEE68989794C0F408277411C26055CDF41119
|
||||||
DROP USER plug_dest;
|
DROP USER plug_dest;
|
||||||
GRANT ALL PRIVILEGES ON test_user_db.* TO plug_dest IDENTIFIED BY 'plug_user_passwd';
|
GRANT ALL PRIVILEGES ON test_user_db.* TO plug_dest IDENTIFIED BY 'plug_user_passwd';
|
||||||
SELECT user,plugin,authentication_string,password FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string,password FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string password
|
user plugin authentication_string password
|
||||||
grant_user test_plugin_server plug_dest
|
grant_user test_plugin_server plug_dest
|
||||||
plug_dest *560881EB651416CEF77314D07D55EDCD5FC1BD6D
|
plug_dest NULL *560881EB651416CEF77314D07D55EDCD5FC1BD6D
|
||||||
DROP USER grant_user,plug_dest;
|
DROP USER grant_user,plug_dest;
|
||||||
set @@sql_mode= @save_sql_mode;
|
set @@sql_mode= @save_sql_mode;
|
||||||
DROP DATABASE test_user_db;
|
DROP DATABASE test_user_db;
|
||||||
|
@ -20,7 +20,7 @@ GRANT ALL PRIVILEGES ON test_user_db.* TO plug_dest IDENTIFIED BY 'plug_dest_pas
|
|||||||
GRANT PROXY ON plug_dest TO plug_user;
|
GRANT PROXY ON plug_dest TO plug_user;
|
||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string
|
user plugin authentication_string
|
||||||
plug_dest
|
plug_dest NULL
|
||||||
plug_user test_plugin_server plug_dest
|
plug_user test_plugin_server plug_dest
|
||||||
1)
|
1)
|
||||||
current_user()
|
current_user()
|
||||||
@ -73,7 +73,7 @@ GRANT PROXY ON new_dest TO plug_user;
|
|||||||
ERROR 1045 (28000): Access denied for user 'plug_user'@'localhost' (using password: YES)
|
ERROR 1045 (28000): Access denied for user 'plug_user'@'localhost' (using password: YES)
|
||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string
|
user plugin authentication_string
|
||||||
new_dest
|
new_dest NULL
|
||||||
plug_user test_plugin_server plug_dest
|
plug_user test_plugin_server plug_dest
|
||||||
DROP USER plug_user,new_dest;
|
DROP USER plug_user,new_dest;
|
||||||
CREATE USER plug_user
|
CREATE USER plug_user
|
||||||
@ -91,7 +91,7 @@ GRANT PROXY ON new_dest TO plug_user;
|
|||||||
ERROR 1045 (28000): Access denied for user 'plug_user'@'localhost' (using password: YES)
|
ERROR 1045 (28000): Access denied for user 'plug_user'@'localhost' (using password: YES)
|
||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string
|
user plugin authentication_string
|
||||||
new_dest
|
new_dest NULL
|
||||||
plug_user test_plugin_server plug_dest
|
plug_user test_plugin_server plug_dest
|
||||||
DROP USER plug_user,new_dest;
|
DROP USER plug_user,new_dest;
|
||||||
CREATE USER plug_user
|
CREATE USER plug_user
|
||||||
@ -113,13 +113,13 @@ connection default;
|
|||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string
|
user plugin authentication_string
|
||||||
new_user test_plugin_server plug_dest
|
new_user test_plugin_server plug_dest
|
||||||
plug_dest
|
plug_dest NULL
|
||||||
disconnect plug_user;
|
disconnect plug_user;
|
||||||
UPDATE mysql.user SET user='plug_user' WHERE user='new_user';
|
UPDATE mysql.user SET user='plug_user' WHERE user='new_user';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string
|
user plugin authentication_string
|
||||||
plug_dest
|
plug_dest NULL
|
||||||
plug_user test_plugin_server plug_dest
|
plug_user test_plugin_server plug_dest
|
||||||
DROP USER plug_dest,plug_user;
|
DROP USER plug_dest,plug_user;
|
||||||
========== test 1.3 ========================================
|
========== test 1.3 ========================================
|
||||||
@ -135,26 +135,26 @@ connection default;
|
|||||||
disconnect plug_user;
|
disconnect plug_user;
|
||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string
|
user plugin authentication_string
|
||||||
plug_dest
|
plug_dest NULL
|
||||||
plug_user test_plugin_server plug_dest
|
plug_user test_plugin_server plug_dest
|
||||||
UPDATE mysql.user SET user='new_user' WHERE user='plug_user';
|
UPDATE mysql.user SET user='new_user' WHERE user='plug_user';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string
|
user plugin authentication_string
|
||||||
new_user test_plugin_server plug_dest
|
new_user test_plugin_server plug_dest
|
||||||
plug_dest
|
plug_dest NULL
|
||||||
UPDATE mysql.user SET authentication_string='new_dest' WHERE user='new_user';
|
UPDATE mysql.user SET authentication_string='new_dest' WHERE user='new_user';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string
|
user plugin authentication_string
|
||||||
new_user test_plugin_server new_dest
|
new_user test_plugin_server new_dest
|
||||||
plug_dest
|
plug_dest NULL
|
||||||
UPDATE mysql.user SET plugin='new_plugin_server' WHERE user='new_user';
|
UPDATE mysql.user SET plugin='new_plugin_server' WHERE user='new_user';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string
|
user plugin authentication_string
|
||||||
new_user new_plugin_server new_dest
|
new_user new_plugin_server new_dest
|
||||||
plug_dest
|
plug_dest NULL
|
||||||
connect(plug_user,localhost,new_user,new_dest);
|
connect(plug_user,localhost,new_user,new_dest);
|
||||||
ERROR HY000: Plugin 'new_plugin_server' is not loaded
|
ERROR HY000: Plugin 'new_plugin_server' is not loaded
|
||||||
UPDATE mysql.user SET plugin='test_plugin_server' WHERE user='new_user';
|
UPDATE mysql.user SET plugin='test_plugin_server' WHERE user='new_user';
|
||||||
@ -163,7 +163,7 @@ FLUSH PRIVILEGES;
|
|||||||
GRANT PROXY ON new_dest TO new_user;
|
GRANT PROXY ON new_dest TO new_user;
|
||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string
|
user plugin authentication_string
|
||||||
new_dest
|
new_dest NULL
|
||||||
new_user test_plugin_server new_dest
|
new_user test_plugin_server new_dest
|
||||||
connect(plug_user,localhost,new_user,new_dest);
|
connect(plug_user,localhost,new_user,new_dest);
|
||||||
select USER(),CURRENT_USER();
|
select USER(),CURRENT_USER();
|
||||||
@ -176,9 +176,9 @@ FLUSH PRIVILEGES;
|
|||||||
CREATE USER new_dest IDENTIFIED BY 'new_dest_passwd';
|
CREATE USER new_dest IDENTIFIED BY 'new_dest_passwd';
|
||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string
|
user plugin authentication_string
|
||||||
new_dest
|
new_dest NULL
|
||||||
new_user test_plugin_server new_dest
|
new_user test_plugin_server new_dest
|
||||||
plug_dest
|
plug_dest NULL
|
||||||
GRANT ALL PRIVILEGES ON test.* TO new_user;
|
GRANT ALL PRIVILEGES ON test.* TO new_user;
|
||||||
connect(plug_user,localhost,new_dest,new_dest_passwd);
|
connect(plug_user,localhost,new_dest,new_dest_passwd);
|
||||||
select USER(),CURRENT_USER();
|
select USER(),CURRENT_USER();
|
||||||
@ -193,7 +193,7 @@ CREATE USER proxied_user IDENTIFIED BY 'proxied_user_passwd';
|
|||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string
|
user plugin authentication_string
|
||||||
test_plugin_server proxied_user
|
test_plugin_server proxied_user
|
||||||
proxied_user
|
proxied_user NULL
|
||||||
connect(proxy_con,localhost,proxied_user,proxied_user_passwd);
|
connect(proxy_con,localhost,proxied_user,proxied_user_passwd);
|
||||||
SELECT USER(),CURRENT_USER();
|
SELECT USER(),CURRENT_USER();
|
||||||
USER() CURRENT_USER()
|
USER() CURRENT_USER()
|
||||||
@ -230,7 +230,7 @@ CREATE USER proxied_user IDENTIFIED BY 'proxied_user_passwd';
|
|||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string
|
user plugin authentication_string
|
||||||
test_plugin_server proxied_user
|
test_plugin_server proxied_user
|
||||||
proxied_user
|
proxied_user NULL
|
||||||
connect(proxy_con,localhost,proxied_user,proxied_user_passwd);
|
connect(proxy_con,localhost,proxied_user,proxied_user_passwd);
|
||||||
SELECT USER(),CURRENT_USER();
|
SELECT USER(),CURRENT_USER();
|
||||||
USER() CURRENT_USER()
|
USER() CURRENT_USER()
|
||||||
@ -273,11 +273,11 @@ GRANT PROXY ON proxied_user_5 TO ''@'';
|
|||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string
|
user plugin authentication_string
|
||||||
test_plugin_server proxied_user
|
test_plugin_server proxied_user
|
||||||
proxied_user_1
|
proxied_user_1 NULL
|
||||||
proxied_user_2
|
proxied_user_2 NULL
|
||||||
proxied_user_3
|
proxied_user_3 NULL
|
||||||
proxied_user_4
|
proxied_user_4 NULL
|
||||||
proxied_user_5
|
proxied_user_5 NULL
|
||||||
connect(proxy_con_1,localhost,proxied_user_1,'proxied_user_1_pwd');
|
connect(proxy_con_1,localhost,proxied_user_1,'proxied_user_1_pwd');
|
||||||
connect(proxy_con_2,localhost,proxied_user_2,proxied_user_2_pwd);
|
connect(proxy_con_2,localhost,proxied_user_2,proxied_user_2_pwd);
|
||||||
connect(proxy_con_3,localhost,proxied_user_3,proxied_user_3_pwd);
|
connect(proxy_con_3,localhost,proxied_user_3,proxied_user_3_pwd);
|
||||||
|
@ -7,7 +7,7 @@ GRANT ALL PRIVILEGES ON test_user_db.* TO qa_test_1_dest identified by 'dest_pas
|
|||||||
GRANT PROXY ON qa_test_1_dest TO qa_test_1_user;
|
GRANT PROXY ON qa_test_1_dest TO qa_test_1_user;
|
||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string
|
user plugin authentication_string
|
||||||
qa_test_1_dest
|
qa_test_1_dest NULL
|
||||||
qa_test_1_user qa_auth_interface qa_test_1_dest
|
qa_test_1_user qa_auth_interface qa_test_1_dest
|
||||||
SELECT @@proxy_user;
|
SELECT @@proxy_user;
|
||||||
@@proxy_user
|
@@proxy_user
|
||||||
@ -20,7 +20,7 @@ current_user() user() @@local.proxy_user @@local.external_user
|
|||||||
qa_test_1_user@% qa_test_1_user@localhost NULL NULL
|
qa_test_1_user@% qa_test_1_user@localhost NULL NULL
|
||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string
|
user plugin authentication_string
|
||||||
qa_test_1_dest
|
qa_test_1_dest NULL
|
||||||
qa_test_1_user qa_auth_interface qa_test_1_dest
|
qa_test_1_user qa_auth_interface qa_test_1_dest
|
||||||
DROP USER qa_test_1_user;
|
DROP USER qa_test_1_user;
|
||||||
DROP USER qa_test_1_dest;
|
DROP USER qa_test_1_dest;
|
||||||
@ -33,8 +33,8 @@ GRANT PROXY ON qa_test_2_dest TO qa_test_2_user;
|
|||||||
GRANT PROXY ON authenticated_as TO qa_test_2_user;
|
GRANT PROXY ON authenticated_as TO qa_test_2_user;
|
||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string
|
user plugin authentication_string
|
||||||
authenticated_as
|
authenticated_as NULL
|
||||||
qa_test_2_dest
|
qa_test_2_dest NULL
|
||||||
qa_test_2_user qa_auth_interface qa_test_2_dest
|
qa_test_2_user qa_auth_interface qa_test_2_dest
|
||||||
SELECT @@proxy_user;
|
SELECT @@proxy_user;
|
||||||
@@proxy_user
|
@@proxy_user
|
||||||
@ -47,8 +47,8 @@ current_user() user() @@local.proxy_user @@local.external_user
|
|||||||
authenticated_as@% user_name@localhost 'qa_test_2_user'@'%' 'qa_test_2_user'@'%'
|
authenticated_as@% user_name@localhost 'qa_test_2_user'@'%' 'qa_test_2_user'@'%'
|
||||||
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string
|
user plugin authentication_string
|
||||||
authenticated_as
|
authenticated_as NULL
|
||||||
qa_test_2_dest
|
qa_test_2_dest NULL
|
||||||
qa_test_2_user qa_auth_interface qa_test_2_dest
|
qa_test_2_user qa_auth_interface qa_test_2_dest
|
||||||
DROP USER qa_test_2_user;
|
DROP USER qa_test_2_user;
|
||||||
DROP USER qa_test_2_dest;
|
DROP USER qa_test_2_dest;
|
||||||
@ -83,8 +83,8 @@ GRANT PROXY ON qa_test_5_dest TO qa_test_5_user;
|
|||||||
GRANT PROXY ON qa_test_5_dest TO ''@'localhost';
|
GRANT PROXY ON qa_test_5_dest TO ''@'localhost';
|
||||||
SELECT user,plugin,authentication_string,password FROM mysql.user WHERE user != 'root';
|
SELECT user,plugin,authentication_string,password FROM mysql.user WHERE user != 'root';
|
||||||
user plugin authentication_string password
|
user plugin authentication_string password
|
||||||
*DFCACE76914AD7BD801FC1A1ECF6562272621A22
|
NULL *DFCACE76914AD7BD801FC1A1ECF6562272621A22
|
||||||
qa_test_5_dest *DFCACE76914AD7BD801FC1A1ECF6562272621A22
|
qa_test_5_dest NULL *DFCACE76914AD7BD801FC1A1ECF6562272621A22
|
||||||
qa_test_5_user qa_auth_interface qa_test_5_dest
|
qa_test_5_user qa_auth_interface qa_test_5_dest
|
||||||
exec MYSQL PLUGIN_AUTH_OPT -h localhost -P MASTER_MYPORT --user=qa_test_5_user --password=qa_test_5_dest test_user_db -e "SELECT current_user(),user(),@@local.proxy_user,@@local.external_user;" 2>&1
|
exec MYSQL PLUGIN_AUTH_OPT -h localhost -P MASTER_MYPORT --user=qa_test_5_user --password=qa_test_5_dest test_user_db -e "SELECT current_user(),user(),@@local.proxy_user,@@local.external_user;" 2>&1
|
||||||
ERROR 1045 (28000): Access denied for user 'qa_test_5_user'@'localhost' (using password: YES)
|
ERROR 1045 (28000): Access denied for user 'qa_test_5_user'@'localhost' (using password: YES)
|
||||||
@ -98,7 +98,7 @@ GRANT ALL PRIVILEGES ON test_user_db.* TO qa_test_6_dest identified by 'dest_pas
|
|||||||
GRANT PROXY ON qa_test_6_dest TO qa_test_6_user;
|
GRANT PROXY ON qa_test_6_dest TO qa_test_6_user;
|
||||||
SELECT user,plugin,authentication_string,password FROM mysql.user;
|
SELECT user,plugin,authentication_string,password FROM mysql.user;
|
||||||
user plugin authentication_string password
|
user plugin authentication_string password
|
||||||
qa_test_6_dest *DFCACE76914AD7BD801FC1A1ECF6562272621A22
|
qa_test_6_dest NULL *DFCACE76914AD7BD801FC1A1ECF6562272621A22
|
||||||
qa_test_6_user qa_auth_interface qa_test_6_dest
|
qa_test_6_user qa_auth_interface qa_test_6_dest
|
||||||
root
|
root
|
||||||
root
|
root
|
||||||
@ -109,7 +109,7 @@ ERROR 1045 (28000): Access denied for user 'qa_test_6_user'@'localhost' (using p
|
|||||||
GRANT PROXY ON qa_test_6_dest TO root IDENTIFIED WITH qa_auth_interface AS 'qa_test_6_dest';
|
GRANT PROXY ON qa_test_6_dest TO root IDENTIFIED WITH qa_auth_interface AS 'qa_test_6_dest';
|
||||||
SELECT user,plugin,authentication_string,password FROM mysql.user;
|
SELECT user,plugin,authentication_string,password FROM mysql.user;
|
||||||
user plugin authentication_string password
|
user plugin authentication_string password
|
||||||
qa_test_6_dest *DFCACE76914AD7BD801FC1A1ECF6562272621A22
|
qa_test_6_dest NULL *DFCACE76914AD7BD801FC1A1ECF6562272621A22
|
||||||
qa_test_6_user qa_auth_interface qa_test_6_dest
|
qa_test_6_user qa_auth_interface qa_test_6_dest
|
||||||
root
|
root
|
||||||
root
|
root
|
||||||
@ -121,7 +121,7 @@ ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: Y
|
|||||||
REVOKE PROXY ON qa_test_6_dest FROM root;
|
REVOKE PROXY ON qa_test_6_dest FROM root;
|
||||||
SELECT user,plugin,authentication_string FROM mysql.user;
|
SELECT user,plugin,authentication_string FROM mysql.user;
|
||||||
user plugin authentication_string
|
user plugin authentication_string
|
||||||
qa_test_6_dest
|
qa_test_6_dest NULL
|
||||||
qa_test_6_user qa_auth_interface qa_test_6_dest
|
qa_test_6_user qa_auth_interface qa_test_6_dest
|
||||||
root
|
root
|
||||||
root
|
root
|
||||||
|
@ -3731,5 +3731,19 @@ CREATE TABLE t1 (a INT);
|
|||||||
BEGIN;
|
BEGIN;
|
||||||
PREPARE stmt1 FROM "SELECT * FROM t1";
|
PREPARE stmt1 FROM "SELECT * FROM t1";
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
#
|
#
|
||||||
# End of 6.0 tests.
|
# Bug#56115: invalid memory reads when PS selecting from
|
||||||
|
# information_schema tables
|
||||||
|
# Bug#58701: crash in Field::make_field, cursor-protocol
|
||||||
|
#
|
||||||
|
# NOTE: MTR should be run both with --ps-protocol and --cursor-protocol.
|
||||||
|
#
|
||||||
|
|
||||||
|
SELECT *
|
||||||
|
FROM (SELECT 1 UNION SELECT 2) t;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
2
|
||||||
|
#
|
||||||
|
# End of 5.5 tests.
|
||||||
|
@ -2155,6 +2155,8 @@ mysqld is alive
|
|||||||
SET @max_allowed_packet= @@global.max_allowed_packet;
|
SET @max_allowed_packet= @@global.max_allowed_packet;
|
||||||
SET @net_buffer_length= @@global.net_buffer_length;
|
SET @net_buffer_length= @@global.net_buffer_length;
|
||||||
SET GLOBAL max_allowed_packet= 1024;
|
SET GLOBAL max_allowed_packet= 1024;
|
||||||
|
Warnings:
|
||||||
|
Warning 1708 The value of 'max_allowed_packet' should be no less than the value of 'net_buffer_length'
|
||||||
SET GLOBAL net_buffer_length= 1024;
|
SET GLOBAL net_buffer_length= 1024;
|
||||||
ERROR 1153 (08S01) at line 1: Got a packet bigger than 'max_allowed_packet' bytes
|
ERROR 1153 (08S01) at line 1: Got a packet bigger than 'max_allowed_packet' bytes
|
||||||
SET GLOBAL max_allowed_packet= @max_allowed_packet;
|
SET GLOBAL max_allowed_packet= @max_allowed_packet;
|
||||||
|
@ -1338,6 +1338,7 @@ Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length I
|
|||||||
DROP DATABASE `<60>`;
|
DROP DATABASE `<60>`;
|
||||||
show columns from `#mysql50#????????`;
|
show columns from `#mysql50#????????`;
|
||||||
Got one of the listed errors
|
Got one of the listed errors
|
||||||
|
call mtr.add_suppression("Can.t find file: '.\\\\test\\\\\\?{8}.frm'");
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
DROP PROCEDURE IF EXISTS p1;
|
DROP PROCEDURE IF EXISTS p1;
|
||||||
CREATE TABLE t1(c1 INT);
|
CREATE TABLE t1(c1 INT);
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
call mtr.add_suppression("Column count of mysql.proc is wrong. Expected 20, found 19. The table is probably corrupted");
|
call mtr.add_suppression("Column count of mysql.proc is wrong. Expected 20, found 19. The table is probably corrupted");
|
||||||
|
call mtr.add_suppression("Stored routine .test...bug14233_[123].: invalid value in column mysql.proc");
|
||||||
use test;
|
use test;
|
||||||
drop procedure if exists bug14233;
|
drop procedure if exists bug14233;
|
||||||
drop function if exists bug14233;
|
drop function if exists bug14233;
|
||||||
|
@ -7452,4 +7452,34 @@ c1
|
|||||||
# Cleanup
|
# Cleanup
|
||||||
drop table t1;
|
drop table t1;
|
||||||
drop procedure p1;
|
drop procedure p1;
|
||||||
|
|
||||||
|
# --
|
||||||
|
# -- Bug 11765684 - 58674: SP-cache does not detect changes in
|
||||||
|
# -- pre-locking list caused by triggers
|
||||||
|
# ---
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
DROP TABLE IF EXISTS t2;
|
||||||
|
DROP TABLE IF EXISTS t3;
|
||||||
|
DROP PROCEDURE IF EXISTS p1;
|
||||||
|
CREATE TABLE t1(a INT);
|
||||||
|
CREATE TABLE t2(a INT);
|
||||||
|
CREATE TABLE t3(a INT);
|
||||||
|
CREATE PROCEDURE p1()
|
||||||
|
INSERT INTO t1(a) VALUES (1);
|
||||||
|
|
||||||
|
CREATE TRIGGER t1_ai AFTER INSERT ON t1
|
||||||
|
FOR EACH ROW
|
||||||
|
INSERT INTO t2(a) VALUES (new.a);
|
||||||
|
|
||||||
|
CALL p1();
|
||||||
|
|
||||||
|
CREATE TRIGGER t1_bi BEFORE INSERT ON t1
|
||||||
|
FOR EACH ROW
|
||||||
|
INSERT INTO t3(a) VALUES (new.a);
|
||||||
|
|
||||||
|
CALL p1();
|
||||||
|
|
||||||
|
DROP TABLE t1, t2, t3;
|
||||||
|
DROP PROCEDURE p1;
|
||||||
|
|
||||||
# End of 5.5 test
|
# End of 5.5 test
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user