mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
Merge with MariaDB 5.1
This commit is contained in:
commit
1be5462d59
607 changed files with 10938 additions and 4240 deletions
23
.bzrignore
23
.bzrignore
|
@ -10,6 +10,7 @@
|
||||||
*.core
|
*.core
|
||||||
*.d
|
*.d
|
||||||
*.da
|
*.da
|
||||||
|
*.dir
|
||||||
*.dll
|
*.dll
|
||||||
*.exe
|
*.exe
|
||||||
*.exp
|
*.exp
|
||||||
|
@ -31,6 +32,7 @@
|
||||||
*.pdb
|
*.pdb
|
||||||
*.reject
|
*.reject
|
||||||
*.res
|
*.res
|
||||||
|
*.rule
|
||||||
*.sbr
|
*.sbr
|
||||||
*.so
|
*.so
|
||||||
*.so.*
|
*.so.*
|
||||||
|
@ -41,15 +43,21 @@
|
||||||
*.dsp
|
*.dsp
|
||||||
*.Po
|
*.Po
|
||||||
*.Plo
|
*.Plo
|
||||||
*.dir/
|
*.vcxproj
|
||||||
|
*.vcxproj.filters
|
||||||
|
*/*.dir/*
|
||||||
|
*.dir
|
||||||
|
Debug
|
||||||
|
MySql.sdf
|
||||||
|
Win32
|
||||||
*/*_pure_*warnings
|
*/*_pure_*warnings
|
||||||
*/.deps
|
*/.deps
|
||||||
*/.libs/*
|
*/.libs/*
|
||||||
*/.pure
|
*/.pure
|
||||||
debug/
|
*/debug/*
|
||||||
MinSizeRel/
|
*/minsizerel/*
|
||||||
Release/
|
*/release/*
|
||||||
RelWithDebInfo/
|
RelWithDebInfo
|
||||||
*~
|
*~
|
||||||
.*.swp
|
.*.swp
|
||||||
./CMakeCache.txt
|
./CMakeCache.txt
|
||||||
|
@ -429,6 +437,7 @@ include/mysql_h.ic
|
||||||
include/mysql_version.h
|
include/mysql_version.h
|
||||||
include/mysqld_ername.h
|
include/mysqld_ername.h
|
||||||
include/mysqld_error.h
|
include/mysqld_error.h
|
||||||
|
include/mysqld_error.h.rule
|
||||||
include/openssl
|
include/openssl
|
||||||
include/readline
|
include/readline
|
||||||
include/readline/*.h
|
include/readline/*.h
|
||||||
|
@ -1154,7 +1163,9 @@ scripts/mysql_find_rows
|
||||||
scripts/mysql_fix_extensions
|
scripts/mysql_fix_extensions
|
||||||
scripts/mysql_fix_privilege_tables
|
scripts/mysql_fix_privilege_tables
|
||||||
scripts/mysql_fix_privilege_tables.sql
|
scripts/mysql_fix_privilege_tables.sql
|
||||||
|
scripts/mysql_fix_privilege_tables.sql.rule
|
||||||
scripts/mysql_fix_privilege_tables_sql.c
|
scripts/mysql_fix_privilege_tables_sql.c
|
||||||
|
scripts/mysql_fix_privilege_tables_sql.c.rule
|
||||||
scripts/mysql_install_db
|
scripts/mysql_install_db
|
||||||
scripts/mysql_secure_installation
|
scripts/mysql_secure_installation
|
||||||
scripts/mysql_setpermission
|
scripts/mysql_setpermission
|
||||||
|
@ -1239,6 +1250,7 @@ sql/handlerton.cc
|
||||||
sql/html
|
sql/html
|
||||||
sql/latex
|
sql/latex
|
||||||
sql/lex_hash.h
|
sql/lex_hash.h
|
||||||
|
sql/lex_hash.h.rule
|
||||||
sql/link_sources
|
sql/link_sources
|
||||||
sql/max/*
|
sql/max/*
|
||||||
sql/message.h
|
sql/message.h
|
||||||
|
@ -1290,6 +1302,7 @@ sql/sql_builtin.cc
|
||||||
sql/sql_select.cc.orig
|
sql/sql_select.cc.orig
|
||||||
sql/sql_yacc.cc
|
sql/sql_yacc.cc
|
||||||
sql/sql_yacc.h
|
sql/sql_yacc.h
|
||||||
|
sql/sql_yacc.h.rule
|
||||||
sql/sql_yacc.output
|
sql/sql_yacc.output
|
||||||
sql/sql_yacc.yy.orig
|
sql/sql_yacc.yy.orig
|
||||||
sql/test_time
|
sql/test_time
|
||||||
|
|
|
@ -92,6 +92,7 @@ ADD_DEFINITIONS(-D__NT__)
|
||||||
|
|
||||||
IF(CYBOZU)
|
IF(CYBOZU)
|
||||||
ADD_DEFINITIONS(-DCYBOZU)
|
ADD_DEFINITIONS(-DCYBOZU)
|
||||||
|
ADD_DEFINITIONS(-DHAVE_UTF8_GENERAL_CS)
|
||||||
ENDIF(CYBOZU)
|
ENDIF(CYBOZU)
|
||||||
|
|
||||||
IF(EXTRA_DEBUG)
|
IF(EXTRA_DEBUG)
|
||||||
|
|
|
@ -85,6 +85,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_DEBUG_INFO, OPT_DEBUG_CHECK, OPT_COLUMN_TYPES, OPT_ERROR_LOG_FILE,
|
OPT_DEBUG_INFO, OPT_DEBUG_CHECK, OPT_COLUMN_TYPES, OPT_ERROR_LOG_FILE,
|
||||||
|
|
|
@ -25,9 +25,11 @@ typedef struct st_line_buffer
|
||||||
uint eof;
|
uint eof;
|
||||||
ulong max_size;
|
ulong max_size;
|
||||||
ulong read_length; /* Length of last read string */
|
ulong read_length; /* Length of last read string */
|
||||||
|
int error;
|
||||||
|
bool truncated;
|
||||||
} LINE_BUFFER;
|
} LINE_BUFFER;
|
||||||
|
|
||||||
extern LINE_BUFFER *batch_readline_init(ulong max_size,FILE *file);
|
extern LINE_BUFFER *batch_readline_init(ulong max_size,FILE *file);
|
||||||
extern LINE_BUFFER *batch_readline_command(LINE_BUFFER *buffer, char * str);
|
extern LINE_BUFFER *batch_readline_command(LINE_BUFFER *buffer, char * str);
|
||||||
extern char *batch_readline(LINE_BUFFER *buffer, bool *truncated);
|
extern char *batch_readline(LINE_BUFFER *buffer);
|
||||||
extern void batch_readline_end(LINE_BUFFER *buffer);
|
extern void batch_readline_end(LINE_BUFFER *buffer);
|
||||||
|
|
|
@ -1137,6 +1137,8 @@ int main(int argc,char *argv[])
|
||||||
if (status.batch && !status.line_buff &&
|
if (status.batch && !status.line_buff &&
|
||||||
!(status.line_buff= batch_readline_init(MAX_BATCH_BUFFER_SIZE, stdin)))
|
!(status.line_buff= batch_readline_init(MAX_BATCH_BUFFER_SIZE, stdin)))
|
||||||
{
|
{
|
||||||
|
put_info("Can't initialize batch_readline - may be the input source is "
|
||||||
|
"a directory or a block device.", INFO_ERROR, 0);
|
||||||
free_defaults(defaults_argv);
|
free_defaults(defaults_argv);
|
||||||
my_end(0);
|
my_end(0);
|
||||||
exit(1);
|
exit(1);
|
||||||
|
@ -1898,14 +1900,13 @@ static int read_and_execute(bool interactive)
|
||||||
ulong line_number=0;
|
ulong line_number=0;
|
||||||
bool ml_comment= 0;
|
bool ml_comment= 0;
|
||||||
COMMANDS *com;
|
COMMANDS *com;
|
||||||
bool truncated= 0;
|
|
||||||
status.exit_status=1;
|
status.exit_status=1;
|
||||||
|
|
||||||
while (!aborted)
|
while (!aborted)
|
||||||
{
|
{
|
||||||
if (!interactive)
|
if (!interactive)
|
||||||
{
|
{
|
||||||
line=batch_readline(status.line_buff, &truncated);
|
line=batch_readline(status.line_buff);
|
||||||
/*
|
/*
|
||||||
Skip UTF8 Byte Order Marker (BOM) 0xEFBBBF.
|
Skip UTF8 Byte Order Marker (BOM) 0xEFBBBF.
|
||||||
Editors like "notepad" put this marker in
|
Editors like "notepad" put this marker in
|
||||||
|
@ -1979,9 +1980,13 @@ static int read_and_execute(bool interactive)
|
||||||
if (opt_outfile && line)
|
if (opt_outfile && line)
|
||||||
fprintf(OUTFILE, "%s\n", line);
|
fprintf(OUTFILE, "%s\n", line);
|
||||||
}
|
}
|
||||||
if (!line) // End of file
|
// End of file or system error
|
||||||
|
if (!line)
|
||||||
{
|
{
|
||||||
status.exit_status=0;
|
if (status.line_buff && status.line_buff->error)
|
||||||
|
status.exit_status= 1;
|
||||||
|
else
|
||||||
|
status.exit_status= 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2002,7 +2007,8 @@ static int read_and_execute(bool interactive)
|
||||||
#endif
|
#endif
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (add_line(glob_buffer,line,&in_string,&ml_comment, truncated))
|
if (add_line(glob_buffer, line, &in_string, &ml_comment,
|
||||||
|
status.line_buff ? status.line_buff->truncated : 0))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
/* if in batch mode, send last query even if it doesn't end with \g or go */
|
/* if in batch mode, send last query even if it doesn't end with \g or go */
|
||||||
|
|
|
@ -423,6 +423,9 @@ int main(int argc,char *argv[])
|
||||||
|
|
||||||
if (interval) /* --sleep=interval given */
|
if (interval) /* --sleep=interval given */
|
||||||
{
|
{
|
||||||
|
if (opt_count_iterations && --nr_iterations == 0)
|
||||||
|
break;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
If connection was dropped (unintentionally, or due to SHUTDOWN),
|
If connection was dropped (unintentionally, or due to SHUTDOWN),
|
||||||
re-establish it if --wait ("retry-connect") was given and user
|
re-establish it if --wait ("retry-connect") was given and user
|
||||||
|
|
|
@ -756,10 +756,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))
|
||||||
{
|
{
|
||||||
|
|
|
@ -1135,6 +1135,9 @@ static int switch_db_collation(FILE *sql_file,
|
||||||
{
|
{
|
||||||
if (strcmp(current_db_cl_name, required_db_cl_name) != 0)
|
if (strcmp(current_db_cl_name, required_db_cl_name) != 0)
|
||||||
{
|
{
|
||||||
|
char quoted_db_buf[NAME_LEN * 2 + 3];
|
||||||
|
char *quoted_db_name= quote_name(db_name, quoted_db_buf, FALSE);
|
||||||
|
|
||||||
CHARSET_INFO *db_cl= get_charset_by_name(required_db_cl_name, MYF(0));
|
CHARSET_INFO *db_cl= get_charset_by_name(required_db_cl_name, MYF(0));
|
||||||
|
|
||||||
if (!db_cl)
|
if (!db_cl)
|
||||||
|
@ -1142,7 +1145,7 @@ static int switch_db_collation(FILE *sql_file,
|
||||||
|
|
||||||
fprintf(sql_file,
|
fprintf(sql_file,
|
||||||
"ALTER DATABASE %s CHARACTER SET %s COLLATE %s %s\n",
|
"ALTER DATABASE %s CHARACTER SET %s COLLATE %s %s\n",
|
||||||
(const char *) db_name,
|
(const char *) quoted_db_name,
|
||||||
(const char *) db_cl->csname,
|
(const char *) db_cl->csname,
|
||||||
(const char *) db_cl->name,
|
(const char *) db_cl->name,
|
||||||
(const char *) delimiter);
|
(const char *) delimiter);
|
||||||
|
@ -1163,6 +1166,9 @@ static int restore_db_collation(FILE *sql_file,
|
||||||
const char *delimiter,
|
const char *delimiter,
|
||||||
const char *db_cl_name)
|
const char *db_cl_name)
|
||||||
{
|
{
|
||||||
|
char quoted_db_buf[NAME_LEN * 2 + 3];
|
||||||
|
char *quoted_db_name= quote_name(db_name, quoted_db_buf, FALSE);
|
||||||
|
|
||||||
CHARSET_INFO *db_cl= get_charset_by_name(db_cl_name, MYF(0));
|
CHARSET_INFO *db_cl= get_charset_by_name(db_cl_name, MYF(0));
|
||||||
|
|
||||||
if (!db_cl)
|
if (!db_cl)
|
||||||
|
@ -1170,7 +1176,7 @@ static int restore_db_collation(FILE *sql_file,
|
||||||
|
|
||||||
fprintf(sql_file,
|
fprintf(sql_file,
|
||||||
"ALTER DATABASE %s CHARACTER SET %s COLLATE %s %s\n",
|
"ALTER DATABASE %s CHARACTER SET %s COLLATE %s %s\n",
|
||||||
(const char *) db_name,
|
(const char *) quoted_db_name,
|
||||||
(const char *) db_cl->csname,
|
(const char *) db_cl->csname,
|
||||||
(const char *) db_cl->name,
|
(const char *) db_cl->name,
|
||||||
(const char *) delimiter);
|
(const char *) delimiter);
|
||||||
|
@ -2249,6 +2255,15 @@ static uint get_table_structure(char *table, char *db, char *table_type,
|
||||||
const char *insert_option;
|
const char *insert_option;
|
||||||
char name_buff[NAME_LEN+3],table_buff[NAME_LEN*2+3];
|
char name_buff[NAME_LEN+3],table_buff[NAME_LEN*2+3];
|
||||||
char table_buff2[NAME_LEN*2+3], query_buff[QUERY_LENGTH];
|
char table_buff2[NAME_LEN*2+3], query_buff[QUERY_LENGTH];
|
||||||
|
const char *show_fields_stmt= "SELECT `COLUMN_NAME` AS `Field`, "
|
||||||
|
"`COLUMN_TYPE` AS `Type`, "
|
||||||
|
"`IS_NULLABLE` AS `Null`, "
|
||||||
|
"`COLUMN_KEY` AS `Key`, "
|
||||||
|
"`COLUMN_DEFAULT` AS `Default`, "
|
||||||
|
"`EXTRA` AS `Extra`, "
|
||||||
|
"`COLUMN_COMMENT` AS `Comment` "
|
||||||
|
"FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE "
|
||||||
|
"TABLE_SCHEMA = '%s' AND TABLE_NAME = '%s'";
|
||||||
FILE *sql_file= md_result_file;
|
FILE *sql_file= md_result_file;
|
||||||
int len;
|
int len;
|
||||||
MYSQL_RES *result;
|
MYSQL_RES *result;
|
||||||
|
@ -2516,8 +2531,8 @@ static uint get_table_structure(char *table, char *db, char *table_type,
|
||||||
verbose_msg("%s: Warning: Can't set SQL_QUOTE_SHOW_CREATE option (%s)\n",
|
verbose_msg("%s: Warning: Can't set SQL_QUOTE_SHOW_CREATE option (%s)\n",
|
||||||
my_progname, mysql_error(mysql));
|
my_progname, mysql_error(mysql));
|
||||||
|
|
||||||
my_snprintf(query_buff, sizeof(query_buff), "show fields from %s",
|
my_snprintf(query_buff, sizeof(query_buff), show_fields_stmt, db, table);
|
||||||
result_table);
|
|
||||||
if (mysql_query_with_error_report(mysql, &result, query_buff))
|
if (mysql_query_with_error_report(mysql, &result, query_buff))
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
|
|
||||||
|
|
|
@ -131,7 +131,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,
|
||||||
|
@ -617,6 +617,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.",
|
||||||
(char**) &num_char_cols_opt, (char**) &num_char_cols_opt, 0, GET_STR, REQUIRED_ARG,
|
(char**) &num_char_cols_opt, (char**) &num_char_cols_opt, 0, GET_STR, REQUIRED_ARG,
|
||||||
|
@ -1167,8 +1169,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))
|
||||||
|
@ -1541,7 +1546,12 @@ generate_primary_key_list(MYSQL *mysql, option_string *engine_stmt)
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
result= mysql_store_result(mysql);
|
if (!(result= mysql_store_result(mysql)))
|
||||||
|
{
|
||||||
|
fprintf(stderr, "%s: Error when storing result: %d %s\n",
|
||||||
|
my_progname, mysql_errno(mysql), mysql_error(mysql));
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
primary_keys_number_of= mysql_num_rows(result);
|
primary_keys_number_of= mysql_num_rows(result);
|
||||||
|
|
||||||
/* So why check this? Blackhole :) */
|
/* So why check this? Blackhole :) */
|
||||||
|
@ -1915,16 +1925,14 @@ limit_not_met:
|
||||||
{
|
{
|
||||||
if (mysql_field_count(mysql))
|
if (mysql_field_count(mysql))
|
||||||
{
|
{
|
||||||
if ((result= mysql_store_result(mysql)))
|
if (!(result= mysql_store_result(mysql)))
|
||||||
{
|
fprintf(stderr, "%s: Error when storing result: %d %s\n",
|
||||||
while ((row = mysql_fetch_row(result)))
|
my_progname, mysql_errno(mysql), mysql_error(mysql));
|
||||||
counter++;
|
|
||||||
mysql_free_result(result);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
fprintf(stderr,"%s: Error in mysql_store_result(): %d %s\n",
|
while ((row= mysql_fetch_row(result)))
|
||||||
my_progname, mysql_errno(mysql), mysql_error(mysql));
|
counter++;
|
||||||
|
mysql_free_result(result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} while(mysql_next_result(mysql) == 0);
|
} while(mysql_next_result(mysql) == 0);
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
/* Copyright (C) 2000 MySQL AB
|
/* Copyright (c) 2000, 2011, Oracle and/or its affiliates.
|
||||||
|
Copyright (c) 2009-2011 Monty Program Ab.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
@ -11,7 +12,7 @@
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
mysqltest
|
mysqltest
|
||||||
|
@ -490,7 +491,7 @@ VAR* var_init(VAR* v, const char *name, int name_len, const char *val,
|
||||||
void var_free(void* v);
|
void var_free(void* v);
|
||||||
VAR* var_get(const char *var_name, const char** var_name_end,
|
VAR* var_get(const char *var_name, const char** var_name_end,
|
||||||
my_bool raw, my_bool ignore_not_existing);
|
my_bool raw, my_bool ignore_not_existing);
|
||||||
void eval_expr(VAR* v, const char *p, const char** p_end, bool backtick= true);
|
void eval_expr(VAR* v, const char *p, const char** p_end, bool do_eval= true);
|
||||||
my_bool match_delimiter(int c, const char *delim, uint length);
|
my_bool match_delimiter(int c, const char *delim, uint length);
|
||||||
void dump_result_to_reject_file(char *buf, int size);
|
void dump_result_to_reject_file(char *buf, int size);
|
||||||
void dump_warning_messages();
|
void dump_warning_messages();
|
||||||
|
@ -1269,6 +1270,17 @@ static void cleanup_and_exit(int exit_code)
|
||||||
exit(exit_code);
|
exit(exit_code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void print_file_stack()
|
||||||
|
{
|
||||||
|
for (struct st_test_file* err_file= cur_file;
|
||||||
|
err_file != file_stack;
|
||||||
|
err_file--)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "included from %s at line %d:\n",
|
||||||
|
err_file->file_name, err_file->lineno);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void die(const char *fmt, ...)
|
void die(const char *fmt, ...)
|
||||||
{
|
{
|
||||||
static int dying= 0;
|
static int dying= 0;
|
||||||
|
@ -1279,8 +1291,11 @@ void die(const char *fmt, ...)
|
||||||
/* Print the error message */
|
/* Print the error message */
|
||||||
fprintf(stderr, "mysqltest: ");
|
fprintf(stderr, "mysqltest: ");
|
||||||
if (cur_file && cur_file != file_stack)
|
if (cur_file && cur_file != file_stack)
|
||||||
fprintf(stderr, "In included file \"%s\": ",
|
{
|
||||||
|
fprintf(stderr, "In included file \"%s\": \n",
|
||||||
cur_file->file_name);
|
cur_file->file_name);
|
||||||
|
print_file_stack();
|
||||||
|
}
|
||||||
if (start_lineno > 0)
|
if (start_lineno > 0)
|
||||||
fprintf(stderr, "At line %u: ", start_lineno);
|
fprintf(stderr, "At line %u: ", start_lineno);
|
||||||
if (fmt)
|
if (fmt)
|
||||||
|
@ -1319,7 +1334,6 @@ void die(const char *fmt, ...)
|
||||||
void abort_not_supported_test(const char *fmt, ...)
|
void abort_not_supported_test(const char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
struct st_test_file* err_file= cur_file;
|
|
||||||
DBUG_ENTER("abort_not_supported_test");
|
DBUG_ENTER("abort_not_supported_test");
|
||||||
|
|
||||||
/* Print include filestack */
|
/* Print include filestack */
|
||||||
|
@ -1327,13 +1341,8 @@ void abort_not_supported_test(const char *fmt, ...)
|
||||||
fprintf(stderr, "The test '%s' is not supported by this installation\n",
|
fprintf(stderr, "The test '%s' is not supported by this installation\n",
|
||||||
file_stack->file_name);
|
file_stack->file_name);
|
||||||
fprintf(stderr, "Detected in file %s at line %d\n",
|
fprintf(stderr, "Detected in file %s at line %d\n",
|
||||||
err_file->file_name, err_file->lineno);
|
cur_file->file_name, cur_file->lineno);
|
||||||
while (err_file != file_stack)
|
print_file_stack();
|
||||||
{
|
|
||||||
err_file--;
|
|
||||||
fprintf(stderr, "included from %s at line %d\n",
|
|
||||||
err_file->file_name, err_file->lineno);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Print error message */
|
/* Print error message */
|
||||||
va_start(args, fmt);
|
va_start(args, fmt);
|
||||||
|
@ -2418,7 +2427,7 @@ void var_set_query_get_value(struct st_command *command, VAR *var)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
eval_expr(var, value, 0);
|
eval_expr(var, value, 0, false);
|
||||||
}
|
}
|
||||||
dynstr_free(&ds_query);
|
dynstr_free(&ds_query);
|
||||||
mysql_free_result(res);
|
mysql_free_result(res);
|
||||||
|
@ -2448,12 +2457,16 @@ void var_copy(VAR *dest, VAR *src)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void eval_expr(VAR *v, const char *p, const char **p_end, bool backtick)
|
void eval_expr(VAR *v, const char *p, const char **p_end, bool do_eval)
|
||||||
{
|
{
|
||||||
|
|
||||||
DBUG_ENTER("eval_expr");
|
DBUG_ENTER("eval_expr");
|
||||||
DBUG_PRINT("enter", ("p: '%s'", p));
|
DBUG_PRINT("enter", ("p: '%s'", p));
|
||||||
|
|
||||||
|
/* Skip to treat as pure string if no evaluation */
|
||||||
|
if (! do_eval)
|
||||||
|
goto NO_EVAL;
|
||||||
|
|
||||||
if (*p == '$')
|
if (*p == '$')
|
||||||
{
|
{
|
||||||
VAR *vp;
|
VAR *vp;
|
||||||
|
@ -2473,7 +2486,7 @@ void eval_expr(VAR *v, const char *p, const char **p_end, bool backtick)
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*p == '`' && backtick)
|
if (*p == '`')
|
||||||
{
|
{
|
||||||
var_query_set(v, p, p_end);
|
var_query_set(v, p, p_end);
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
|
@ -2496,6 +2509,7 @@ void eval_expr(VAR *v, const char *p, const char **p_end, bool backtick)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NO_EVAL:
|
||||||
{
|
{
|
||||||
int new_val_len = (p_end && *p_end) ?
|
int new_val_len = (p_end && *p_end) ?
|
||||||
(int) (*p_end - p) : (int) strlen(p);
|
(int) (*p_end - p) : (int) strlen(p);
|
||||||
|
@ -8121,13 +8135,15 @@ int main(int argc, char **argv)
|
||||||
cur_file->lineno= 1;
|
cur_file->lineno= 1;
|
||||||
}
|
}
|
||||||
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;
|
||||||
if (! (con->mysql= mysql_init(0)))
|
if (! (con->mysql= mysql_init(0)))
|
||||||
|
|
|
@ -18,18 +18,28 @@
|
||||||
#include <my_global.h>
|
#include <my_global.h>
|
||||||
#include <my_sys.h>
|
#include <my_sys.h>
|
||||||
#include <m_string.h>
|
#include <m_string.h>
|
||||||
|
#include <my_dir.h>
|
||||||
#include "my_readline.h"
|
#include "my_readline.h"
|
||||||
|
|
||||||
static bool init_line_buffer(LINE_BUFFER *buffer,File file,ulong size,
|
static bool init_line_buffer(LINE_BUFFER *buffer,File file,ulong size,
|
||||||
ulong max_size);
|
ulong max_size);
|
||||||
static bool init_line_buffer_from_string(LINE_BUFFER *buffer,char * str);
|
static bool init_line_buffer_from_string(LINE_BUFFER *buffer,char * str);
|
||||||
static size_t fill_buffer(LINE_BUFFER *buffer);
|
static size_t fill_buffer(LINE_BUFFER *buffer);
|
||||||
static char *intern_read_line(LINE_BUFFER *buffer, ulong *out_length, bool *truncated);
|
static char *intern_read_line(LINE_BUFFER *buffer, ulong *out_length);
|
||||||
|
|
||||||
|
|
||||||
LINE_BUFFER *batch_readline_init(ulong max_size,FILE *file)
|
LINE_BUFFER *batch_readline_init(ulong max_size,FILE *file)
|
||||||
{
|
{
|
||||||
LINE_BUFFER *line_buff;
|
LINE_BUFFER *line_buff;
|
||||||
|
MY_STAT input_file_stat;
|
||||||
|
|
||||||
|
#ifndef __WIN__
|
||||||
|
if (my_fstat(fileno(file), &input_file_stat, MYF(MY_WME)) ||
|
||||||
|
MY_S_ISDIR(input_file_stat.st_mode) ||
|
||||||
|
MY_S_ISBLK(input_file_stat.st_mode))
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!(line_buff=(LINE_BUFFER*)
|
if (!(line_buff=(LINE_BUFFER*)
|
||||||
my_malloc(sizeof(*line_buff),MYF(MY_WME | MY_ZEROFILL))))
|
my_malloc(sizeof(*line_buff),MYF(MY_WME | MY_ZEROFILL))))
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -42,13 +52,12 @@ LINE_BUFFER *batch_readline_init(ulong max_size,FILE *file)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
char *batch_readline(LINE_BUFFER *line_buff, bool *truncated)
|
char *batch_readline(LINE_BUFFER *line_buff)
|
||||||
{
|
{
|
||||||
char *pos;
|
char *pos;
|
||||||
ulong out_length;
|
ulong out_length;
|
||||||
DBUG_ASSERT(truncated != NULL);
|
|
||||||
|
|
||||||
if (!(pos=intern_read_line(line_buff,&out_length, truncated)))
|
if (!(pos=intern_read_line(line_buff, &out_length)))
|
||||||
return 0;
|
return 0;
|
||||||
if (out_length && pos[out_length-1] == '\n')
|
if (out_length && pos[out_length-1] == '\n')
|
||||||
if (--out_length && pos[out_length-1] == '\r') /* Remove '\n' */
|
if (--out_length && pos[out_length-1] == '\r') /* Remove '\n' */
|
||||||
|
@ -162,7 +171,10 @@ static size_t fill_buffer(LINE_BUFFER *buffer)
|
||||||
if (!(buffer->buffer = (char*) my_realloc(buffer->buffer,
|
if (!(buffer->buffer = (char*) my_realloc(buffer->buffer,
|
||||||
buffer->bufread+1,
|
buffer->bufread+1,
|
||||||
MYF(MY_WME | MY_FAE))))
|
MYF(MY_WME | MY_FAE))))
|
||||||
return (uint) -1;
|
{
|
||||||
|
buffer->error= my_errno;
|
||||||
|
return (size_t) -1;
|
||||||
|
}
|
||||||
buffer->start_of_line=buffer->buffer+start_offset;
|
buffer->start_of_line=buffer->buffer+start_offset;
|
||||||
buffer->end=buffer->buffer+bufbytes;
|
buffer->end=buffer->buffer+bufbytes;
|
||||||
}
|
}
|
||||||
|
@ -177,7 +189,10 @@ static size_t fill_buffer(LINE_BUFFER *buffer)
|
||||||
/* Read in new stuff. */
|
/* Read in new stuff. */
|
||||||
if ((read_count= my_read(buffer->file, (uchar*) buffer->end, read_count,
|
if ((read_count= my_read(buffer->file, (uchar*) buffer->end, read_count,
|
||||||
MYF(MY_WME))) == MY_FILE_ERROR)
|
MYF(MY_WME))) == MY_FILE_ERROR)
|
||||||
|
{
|
||||||
|
buffer->error= my_errno;
|
||||||
return (size_t) -1;
|
return (size_t) -1;
|
||||||
|
}
|
||||||
|
|
||||||
DBUG_PRINT("fill_buff", ("Got %lu bytes", (ulong) read_count));
|
DBUG_PRINT("fill_buff", ("Got %lu bytes", (ulong) read_count));
|
||||||
|
|
||||||
|
@ -198,8 +213,7 @@ static size_t fill_buffer(LINE_BUFFER *buffer)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
char *intern_read_line(LINE_BUFFER *buffer, ulong *out_length)
|
||||||
char *intern_read_line(LINE_BUFFER *buffer, ulong *out_length, bool *truncated)
|
|
||||||
{
|
{
|
||||||
char *pos;
|
char *pos;
|
||||||
size_t length;
|
size_t length;
|
||||||
|
@ -214,22 +228,25 @@ char *intern_read_line(LINE_BUFFER *buffer, ulong *out_length, bool *truncated)
|
||||||
if (pos == buffer->end)
|
if (pos == buffer->end)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
fill_buffer() can return 0 either on EOF in which case we abort
|
fill_buffer() can return NULL on EOF (in which case we abort),
|
||||||
or when the internal buffer has hit the size limit. In the latter case
|
on error, or when the internal buffer has hit the size limit.
|
||||||
return what we have read so far and signal string truncation.
|
In the latter case return what we have read so far and signal
|
||||||
|
string truncation.
|
||||||
*/
|
*/
|
||||||
if (!(length=fill_buffer(buffer)) || length == (uint) -1)
|
if (!(length= fill_buffer(buffer)))
|
||||||
{
|
{
|
||||||
if (buffer->eof)
|
if (buffer->eof)
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
|
else if (length == (size_t) -1)
|
||||||
|
DBUG_RETURN(NULL);
|
||||||
else
|
else
|
||||||
continue;
|
continue;
|
||||||
pos--; /* break line here */
|
pos--; /* break line here */
|
||||||
*truncated= 1;
|
buffer->truncated= 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
*truncated= 0;
|
buffer->truncated= 0;
|
||||||
buffer->end_of_line=pos+1;
|
buffer->end_of_line=pos+1;
|
||||||
*out_length=(ulong) (pos + 1 - buffer->eof - buffer->start_of_line);
|
*out_length=(ulong) (pos + 1 - buffer->eof - buffer->start_of_line);
|
||||||
DBUG_RETURN(buffer->start_of_line);
|
DBUG_RETURN(buffer->start_of_line);
|
||||||
|
|
|
@ -1012,9 +1012,10 @@ vi_histedit(EditLine *el, int c __attribute__((__unused__)))
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
return CC_ERROR;
|
return CC_ERROR;
|
||||||
cp = el->el_line.buffer;
|
cp = el->el_line.buffer;
|
||||||
if (write(fd, cp, el->el_line.lastchar - cp +0u) == -1 ||
|
if (write(fd, cp, el->el_line.lastchar - cp +0u) == -1)
|
||||||
write(fd, "\n", 1) == -1)
|
goto error;
|
||||||
return CC_ERROR;
|
if (write(fd, "\n", 1) == -1)
|
||||||
|
goto error;
|
||||||
pid = fork();
|
pid = fork();
|
||||||
switch (pid) {
|
switch (pid) {
|
||||||
case -1:
|
case -1:
|
||||||
|
@ -1042,6 +1043,12 @@ vi_histedit(EditLine *el, int c __attribute__((__unused__)))
|
||||||
unlink(tempfile);
|
unlink(tempfile);
|
||||||
/* return CC_REFRESH; */
|
/* return CC_REFRESH; */
|
||||||
return ed_newline(el, 0);
|
return ed_newline(el, 0);
|
||||||
|
|
||||||
|
/* XXXMYSQL: Avoid compiler warnings. */
|
||||||
|
error:
|
||||||
|
close(fd);
|
||||||
|
unlink(tempfile);
|
||||||
|
return CC_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* vi_history_word():
|
/* vi_history_word():
|
||||||
|
|
|
@ -1956,6 +1956,15 @@ dnl
|
||||||
|
|
||||||
MYSQL_CHECK_TIME_T
|
MYSQL_CHECK_TIME_T
|
||||||
|
|
||||||
|
dnl
|
||||||
|
dnl check size of time_t
|
||||||
|
dnl
|
||||||
|
|
||||||
|
AC_CHECK_SIZEOF(time_t, 8)
|
||||||
|
if test "$ac_cv_sizeof_time_t" -eq 0
|
||||||
|
then
|
||||||
|
AC_MSG_ERROR("MySQL needs a time_t type.")
|
||||||
|
fi
|
||||||
|
|
||||||
# do we need #pragma interface/#pragma implementation ?
|
# do we need #pragma interface/#pragma implementation ?
|
||||||
# yes if it's gcc 2.x, and not icc pretending to be gcc, and not cygwin
|
# yes if it's gcc 2.x, and not icc pretending to be gcc, and not cygwin
|
||||||
|
|
|
@ -32,7 +32,6 @@ 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"
|
|
||||||
|
|
||||||
#ifdef WITH_NDBCLUSTER_STORAGE_ENGINE
|
#ifdef WITH_NDBCLUSTER_STORAGE_ENGINE
|
||||||
static my_bool ndb_code;
|
static my_bool ndb_code;
|
||||||
|
@ -185,6 +184,36 @@ static const char *get_ha_error_msg(int code)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
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.
|
||||||
|
*/
|
||||||
|
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(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);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#if defined(__WIN__)
|
#if defined(__WIN__)
|
||||||
static my_bool print_win_error_msg(DWORD error, my_bool verbose)
|
static my_bool print_win_error_msg(DWORD error, my_bool verbose)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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_;
|
||||||
|
|
||||||
|
|
|
@ -40,9 +40,11 @@ noinst_HEADERS = config-win.h config-netware.h lf.h my_bit.h \
|
||||||
my_nosys.h my_alarm.h queues.h rijndael.h sha1.h \
|
my_nosys.h my_alarm.h queues.h rijndael.h sha1.h \
|
||||||
my_aes.h my_tree.h my_trie.h hash.h thr_alarm.h \
|
my_aes.h my_tree.h my_trie.h hash.h thr_alarm.h \
|
||||||
thr_lock.h t_ctype.h violite.h my_md5.h base64.h \
|
thr_lock.h t_ctype.h violite.h my_md5.h base64.h \
|
||||||
my_handler.h my_time.h service_versions.h \
|
service_versions.h \
|
||||||
|
my_compare.h my_handler.h my_time.h \
|
||||||
my_vle.h my_user.h my_atomic.h atomic/nolock.h \
|
my_vle.h my_user.h my_atomic.h atomic/nolock.h \
|
||||||
atomic/rwlock.h atomic/x86-gcc.h atomic/generic-msvc.h \
|
atomic/rwlock.h atomic/x86-gcc.h \
|
||||||
|
atomic/generic-msvc.h \
|
||||||
atomic/gcc_builtins.h my_libwrap.h my_stacktrace.h \
|
atomic/gcc_builtins.h my_libwrap.h my_stacktrace.h \
|
||||||
wqueue.h waiting_threads.h
|
wqueue.h waiting_threads.h
|
||||||
|
|
||||||
|
|
|
@ -201,6 +201,11 @@ typedef SSIZE_T ssize_t;
|
||||||
#define SIZEOF_LONG 4
|
#define SIZEOF_LONG 4
|
||||||
#define SIZEOF_LONG_LONG 8
|
#define SIZEOF_LONG_LONG 8
|
||||||
#define SIZEOF_OFF_T 8
|
#define SIZEOF_OFF_T 8
|
||||||
|
/*
|
||||||
|
The size of time_t depends on the compiler.
|
||||||
|
But it's 8 for all the supported VC versions.
|
||||||
|
*/
|
||||||
|
#define SIZEOF_TIME_T 8
|
||||||
#ifdef _WIN64
|
#ifdef _WIN64
|
||||||
#define SIZEOF_CHARP 8
|
#define SIZEOF_CHARP 8
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -25,6 +25,8 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <my_compare.h>
|
||||||
|
|
||||||
#define HA_FT_MAXBYTELEN 254
|
#define HA_FT_MAXBYTELEN 254
|
||||||
#define HA_FT_MAXCHARLEN (HA_FT_MAXBYTELEN/3)
|
#define HA_FT_MAXCHARLEN (HA_FT_MAXBYTELEN/3)
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ extern "C" {
|
||||||
#include <thr_lock.h>
|
#include <thr_lock.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#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 */
|
||||||
|
|
|
@ -26,6 +26,7 @@ extern "C" {
|
||||||
#include <m_ctype.h>
|
#include <m_ctype.h>
|
||||||
#include "../storage/maria/ma_pagecache.h"
|
#include "../storage/maria/ma_pagecache.h"
|
||||||
#include "my_handler.h"
|
#include "my_handler.h"
|
||||||
|
#include "my_compare.h"
|
||||||
#include "ft_global.h"
|
#include "ft_global.h"
|
||||||
#include <myisamchk.h>
|
#include <myisamchk.h>
|
||||||
#include <mysql/plugin.h>
|
#include <mysql/plugin.h>
|
||||||
|
|
|
@ -1,3 +1,19 @@
|
||||||
|
/* Copyright (c) 2007, 2011, Oracle and/or its affiliates.
|
||||||
|
Copyright (c) 2009-2011, Monty Program Ab
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; version 2 of the License.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Some useful bit functions
|
Some useful bit functions
|
||||||
*/
|
*/
|
||||||
|
@ -42,9 +58,12 @@ STATIC_INLINE uint my_count_bits(ulonglong v)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
STATIC_INLINE uint my_count_bits_ushort(ushort v)
|
STATIC_INLINE uint my_count_bits_uint32(uint32 v)
|
||||||
{
|
{
|
||||||
return _my_bits_nbits[v];
|
return (uint) (uchar) (_my_bits_nbits[(uchar) v] +
|
||||||
|
_my_bits_nbits[(uchar) (v >> 8)] +
|
||||||
|
_my_bits_nbits[(uchar) (v >> 16)] +
|
||||||
|
_my_bits_nbits[(uchar) (v >> 24)]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -104,6 +123,6 @@ extern uint32 my_round_up_to_next_power(uint32 v);
|
||||||
uint32 my_clear_highest_bit(uint32 v);
|
uint32 my_clear_highest_bit(uint32 v);
|
||||||
uint32 my_reverse_bits(uint32 key);
|
uint32 my_reverse_bits(uint32 key);
|
||||||
extern uint my_count_bits(ulonglong v);
|
extern uint my_count_bits(ulonglong v);
|
||||||
extern uint my_count_bits_ushort(ushort v);
|
extern uint my_count_bits_uint32(uint32 v);
|
||||||
#endif /* HAVE_INLINE */
|
#endif /* HAVE_INLINE */
|
||||||
C_MODE_END
|
C_MODE_END
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
/* Copyright (C) 2000 MySQL AB
|
/* Copyright (c) 2000, 2011, Oracle and/or its affiliates.
|
||||||
|
Copyright (c) 2009-2011, Monty Program Ab
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
@ -151,9 +152,10 @@ bitmap_is_set(const MY_BITMAP *map,uint bit)
|
||||||
|
|
||||||
static inline my_bool bitmap_cmp(const MY_BITMAP *map1, const MY_BITMAP *map2)
|
static inline my_bool bitmap_cmp(const MY_BITMAP *map1, const MY_BITMAP *map2)
|
||||||
{
|
{
|
||||||
*(map1)->last_word_ptr|= (map1)->last_word_mask;
|
if (memcmp(map1->bitmap, map2->bitmap, 4*(no_words_in_map(map1)-1)) != 0)
|
||||||
*(map2)->last_word_ptr|= (map2)->last_word_mask;
|
return FALSE;
|
||||||
return memcmp((map1)->bitmap, (map2)->bitmap, 4*no_words_in_map((map1)))==0;
|
return ((*map1->last_word_ptr | map1->last_word_mask) ==
|
||||||
|
(*map2->last_word_ptr | map2->last_word_mask));
|
||||||
}
|
}
|
||||||
|
|
||||||
#define bitmap_clear_all(MAP) \
|
#define bitmap_clear_all(MAP) \
|
||||||
|
|
98
include/my_compare.h
Normal file
98
include/my_compare.h
Normal file
|
@ -0,0 +1,98 @@
|
||||||
|
/* Copyright (c) Monty Program Ab; 1991-2011
|
||||||
|
Copyright (C) 2002-2006 MySQL AB
|
||||||
|
Copyright (c) 2011, Oracle and/or its affiliates.
|
||||||
|
|
||||||
|
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
|
||||||
|
the Free Software Foundation; version 2 of the License.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||||
|
|
||||||
|
#ifndef _my_compare_h
|
||||||
|
#define _my_compare_h
|
||||||
|
|
||||||
|
#include "myisampack.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct st_HA_KEYSEG /* Key-portion */
|
||||||
|
{
|
||||||
|
CHARSET_INFO *charset;
|
||||||
|
uint32 start; /* Start of key in record */
|
||||||
|
uint32 null_pos; /* position to NULL indicator */
|
||||||
|
uint16 bit_pos; /* Position to bit part */
|
||||||
|
uint16 flag;
|
||||||
|
uint16 length; /* Keylength */
|
||||||
|
uint8 type; /* Type of key (for sort) */
|
||||||
|
uint8 language;
|
||||||
|
uint8 null_bit; /* bitmask to test for NULL */
|
||||||
|
uint8 bit_start,bit_end; /* if bit field */
|
||||||
|
uint8 bit_length; /* Length of bit part */
|
||||||
|
} HA_KEYSEG;
|
||||||
|
|
||||||
|
#define get_key_length(length,key) \
|
||||||
|
{ if (*(const uchar*) (key) != 255) \
|
||||||
|
length= (uint) *(const uchar*) ((key)++); \
|
||||||
|
else \
|
||||||
|
{ length= mi_uint2korr((key)+1); (key)+=3; } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define get_key_length_rdonly(length,key) \
|
||||||
|
{ if (*(const uchar*) (key) != 255) \
|
||||||
|
length= ((uint) *(const uchar*) ((key))); \
|
||||||
|
else \
|
||||||
|
{ length= mi_uint2korr((key)+1); } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define get_key_pack_length(length,length_pack,key) \
|
||||||
|
{ if (*(const uchar*) (key) != 255) \
|
||||||
|
{ length= (uint) *(const uchar*) ((key)++); length_pack= 1; }\
|
||||||
|
else \
|
||||||
|
{ length=mi_uint2korr((key)+1); (key)+= 3; length_pack= 3; } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define store_key_length_inc(key,length) \
|
||||||
|
{ if ((length) < 255) \
|
||||||
|
{ *(key)++= (length); } \
|
||||||
|
else \
|
||||||
|
{ *(key)=255; mi_int2store((key)+1,(length)); (key)+=3; } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define size_to_store_key_length(length) ((length) < 255 ? 1 : 3)
|
||||||
|
|
||||||
|
#define get_rec_bits(bit_ptr, bit_ofs, bit_len) \
|
||||||
|
(((((uint16) (bit_ptr)[1] << 8) | (uint16) (bit_ptr)[0]) >> (bit_ofs)) & \
|
||||||
|
((1 << (bit_len)) - 1))
|
||||||
|
|
||||||
|
#define set_rec_bits(bits, bit_ptr, bit_ofs, bit_len) \
|
||||||
|
{ \
|
||||||
|
(bit_ptr)[0]= ((bit_ptr)[0] & ~(((1 << (bit_len)) - 1) << (bit_ofs))) | \
|
||||||
|
((bits) << (bit_ofs)); \
|
||||||
|
if ((bit_ofs) + (bit_len) > 8) \
|
||||||
|
(bit_ptr)[1]= ((bit_ptr)[1] & ~((1 << ((bit_len) - 8 + (bit_ofs))) - 1)) | \
|
||||||
|
((bits) >> (8 - (bit_ofs))); \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define clr_rec_bits(bit_ptr, bit_ofs, bit_len) \
|
||||||
|
set_rec_bits(0, bit_ptr, bit_ofs, bit_len)
|
||||||
|
|
||||||
|
extern int ha_compare_text(CHARSET_INFO *, const uchar *, uint,
|
||||||
|
const uchar *, uint , my_bool, my_bool);
|
||||||
|
extern int ha_key_cmp(register HA_KEYSEG *keyseg, register const uchar *a,
|
||||||
|
register const uchar *b, uint key_length,
|
||||||
|
uint32 nextflag, uint *diff_pos);
|
||||||
|
extern HA_KEYSEG *ha_find_null(HA_KEYSEG *keyseg, const uchar *a);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif /* _my_compare_h */
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (C) 2002-2006 MySQL AB
|
/* Copyright (c) Monty Program Ab; 1991-2011
|
||||||
|
|
||||||
This library is free software; you can redistribute it and/or
|
This library 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
|
||||||
|
@ -18,12 +18,6 @@
|
||||||
#ifndef _my_handler_h
|
#ifndef _my_handler_h
|
||||||
#define _my_handler_h
|
#define _my_handler_h
|
||||||
|
|
||||||
#include "myisampack.h"
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
There is a hard limit for the maximum number of keys as there are only
|
There is a hard limit for the maximum number of keys as there are only
|
||||||
8 bits in the index file header for the number of keys in a table.
|
8 bits in the index file header for the number of keys in a table.
|
||||||
|
@ -47,84 +41,16 @@ extern "C" {
|
||||||
#define HA_MAX_KEY_BUFF (HA_MAX_KEY_LENGTH+HA_MAX_KEY_SEG*6+8+8)
|
#define HA_MAX_KEY_BUFF (HA_MAX_KEY_LENGTH+HA_MAX_KEY_SEG*6+8+8)
|
||||||
#define HA_MAX_MSG_BUF 1024 /* used in CHECK TABLE, REPAIR TABLE */
|
#define HA_MAX_MSG_BUF 1024 /* used in CHECK TABLE, REPAIR TABLE */
|
||||||
|
|
||||||
typedef struct st_HA_KEYSEG /* Key-portion */
|
|
||||||
{
|
|
||||||
CHARSET_INFO *charset;
|
|
||||||
uint32 start; /* Start of key in record */
|
|
||||||
uint32 null_pos; /* position to NULL indicator */
|
|
||||||
uint16 bit_pos; /* Position to bit part */
|
|
||||||
uint16 flag;
|
|
||||||
uint16 length; /* Keylength */
|
|
||||||
uint8 type; /* Type of key (for sort) */
|
|
||||||
uint8 language;
|
|
||||||
uint8 null_bit; /* bitmask to test for NULL */
|
|
||||||
uint8 bit_start,bit_end; /* if bit field */
|
|
||||||
uint8 bit_length; /* Length of bit part */
|
|
||||||
} HA_KEYSEG;
|
|
||||||
|
|
||||||
#define get_key_length(length,key) \
|
|
||||||
{ if (*(const uchar*) (key) != 255) \
|
|
||||||
length= (uint) *(const uchar*) ((key)++); \
|
|
||||||
else \
|
|
||||||
{ length= mi_uint2korr((key)+1); (key)+=3; } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define get_key_length_rdonly(length,key) \
|
|
||||||
{ if (*(const uchar*) (key) != 255) \
|
|
||||||
length= ((uint) *(const uchar*) ((key))); \
|
|
||||||
else \
|
|
||||||
{ length= mi_uint2korr((key)+1); } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define get_key_pack_length(length,length_pack,key) \
|
|
||||||
{ if (*(const uchar*) (key) != 255) \
|
|
||||||
{ length= (uint) *(const uchar*) ((key)++); length_pack= 1; }\
|
|
||||||
else \
|
|
||||||
{ length=mi_uint2korr((key)+1); (key)+= 3; length_pack= 3; } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define store_key_length_inc(key,length) \
|
|
||||||
{ if ((length) < 255) \
|
|
||||||
{ *(key)++= (length); } \
|
|
||||||
else \
|
|
||||||
{ *(key)=255; mi_int2store((key)+1,(length)); (key)+=3; } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define size_to_store_key_length(length) ((length) < 255 ? 1 : 3)
|
|
||||||
|
|
||||||
#define get_rec_bits(bit_ptr, bit_ofs, bit_len) \
|
|
||||||
(((((uint16) (bit_ptr)[1] << 8) | (uint16) (bit_ptr)[0]) >> (bit_ofs)) & \
|
|
||||||
((1 << (bit_len)) - 1))
|
|
||||||
|
|
||||||
#define set_rec_bits(bits, bit_ptr, bit_ofs, bit_len) \
|
|
||||||
{ \
|
|
||||||
(bit_ptr)[0]= ((bit_ptr)[0] & ~(((1 << (bit_len)) - 1) << (bit_ofs))) | \
|
|
||||||
((bits) << (bit_ofs)); \
|
|
||||||
if ((bit_ofs) + (bit_len) > 8) \
|
|
||||||
(bit_ptr)[1]= ((bit_ptr)[1] & ~((1 << ((bit_len) - 8 + (bit_ofs))) - 1)) | \
|
|
||||||
((bits) >> (8 - (bit_ofs))); \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define clr_rec_bits(bit_ptr, bit_ofs, bit_len) \
|
|
||||||
set_rec_bits(0, bit_ptr, bit_ofs, bit_len)
|
|
||||||
|
|
||||||
extern int ha_compare_text(CHARSET_INFO *, const uchar *, uint,
|
|
||||||
const uchar *, uint , my_bool, my_bool);
|
|
||||||
extern int ha_key_cmp(register HA_KEYSEG *keyseg, register const uchar *a,
|
|
||||||
register const uchar *b, uint key_length,
|
|
||||||
uint32 nextflag, uint *diff_pos);
|
|
||||||
|
|
||||||
extern HA_KEYSEG *ha_find_null(HA_KEYSEG *keyseg, const 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
|
||||||
this amount of bytes.
|
this amount of bytes.
|
||||||
*/
|
*/
|
||||||
#define portable_sizeof_char_ptr 8
|
#define portable_sizeof_char_ptr 8
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
/* Register / unregister errors for my_error() */
|
||||||
#endif
|
|
||||||
|
extern void my_handler_error_register(void);
|
||||||
|
extern void my_handler_error_unregister(void);
|
||||||
|
|
||||||
#endif /* _my_handler_h */
|
#endif /* _my_handler_h */
|
||||||
|
|
|
@ -52,6 +52,19 @@ typedef long my_time_t;
|
||||||
/* two-digit years < this are 20..; >= this are 19.. */
|
/* two-digit years < this are 20..; >= this are 19.. */
|
||||||
#define YY_PART_YEAR 70
|
#define YY_PART_YEAR 70
|
||||||
|
|
||||||
|
/*
|
||||||
|
check for valid times only if the range of time_t is greater than
|
||||||
|
the range of my_time_t
|
||||||
|
*/
|
||||||
|
#if SIZEOF_TIME_T > 4 || defined(TIME_T_UNSIGNED)
|
||||||
|
# define IS_TIME_T_VALID_FOR_TIMESTAMP(x) \
|
||||||
|
((x) <= TIMESTAMP_MAX_VALUE && \
|
||||||
|
(x) >= TIMESTAMP_MIN_VALUE)
|
||||||
|
#else
|
||||||
|
# define IS_TIME_T_VALID_FOR_TIMESTAMP(x) \
|
||||||
|
((x) >= TIMESTAMP_MIN_VALUE)
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Flags to str_to_datetime */
|
/* Flags to str_to_datetime */
|
||||||
#define TIME_FUZZY_DATE 1
|
#define TIME_FUZZY_DATE 1
|
||||||
#define TIME_DATETIME_ONLY 2
|
#define TIME_DATETIME_ONLY 2
|
||||||
|
|
|
@ -31,6 +31,7 @@ extern "C" {
|
||||||
#include "keycache.h"
|
#include "keycache.h"
|
||||||
#endif
|
#endif
|
||||||
#include "my_handler.h"
|
#include "my_handler.h"
|
||||||
|
#include "my_compare.h"
|
||||||
#include <myisamchk.h>
|
#include <myisamchk.h>
|
||||||
#include <mysql/plugin.h>
|
#include <mysql/plugin.h>
|
||||||
|
|
||||||
|
|
|
@ -79,7 +79,7 @@ SET(CLIENT_SOURCES ../mysys/array.c ../strings/bchange.c ../strings/bmove.c
|
||||||
../mysys/mf_wcomp.c ../mysys/mulalloc.c ../mysys/my_access.c ../mysys/my_alloc.c
|
../mysys/mf_wcomp.c ../mysys/mulalloc.c ../mysys/my_access.c ../mysys/my_alloc.c
|
||||||
../mysys/my_chsize.c ../mysys/my_compress.c ../mysys/my_create.c
|
../mysys/my_chsize.c ../mysys/my_compress.c ../mysys/my_create.c
|
||||||
../mysys/my_delete.c ../mysys/my_div.c ../mysys/my_error.c ../mysys/my_file.c
|
../mysys/my_delete.c ../mysys/my_div.c ../mysys/my_error.c ../mysys/my_file.c
|
||||||
../mysys/my_fopen.c ../mysys/my_fstream.c ../mysys/my_gethostbyname.c
|
../mysys/my_fopen.c ../mysys/my_fstream.c
|
||||||
../mysys/my_getopt.c ../mysys/my_getwd.c ../mysys/my_init.c ../mysys/my_lib.c
|
../mysys/my_getopt.c ../mysys/my_getwd.c ../mysys/my_init.c ../mysys/my_lib.c
|
||||||
../mysys/my_malloc.c ../mysys/my_messnc.c ../mysys/my_net.c ../mysys/my_once.c
|
../mysys/my_malloc.c ../mysys/my_messnc.c ../mysys/my_net.c ../mysys/my_once.c
|
||||||
../mysys/my_open.c ../mysys/my_pread.c ../mysys/my_pthread.c ../mysys/my_read.c
|
../mysys/my_open.c ../mysys/my_pread.c ../mysys/my_pthread.c ../mysys/my_read.c
|
||||||
|
|
|
@ -70,7 +70,7 @@ mysysobjects1 = my_init.lo my_static.lo my_malloc.lo my_realloc.lo \
|
||||||
charset.lo charset-def.lo hash.lo mf_iocache.lo \
|
charset.lo charset-def.lo hash.lo mf_iocache.lo \
|
||||||
mf_iocache2.lo my_seek.lo my_sleep.lo \
|
mf_iocache2.lo my_seek.lo my_sleep.lo \
|
||||||
my_pread.lo mf_cache.lo md5.lo sha1.lo my_rnd.lo \
|
my_pread.lo mf_cache.lo md5.lo sha1.lo my_rnd.lo \
|
||||||
my_getopt.lo my_gethostbyname.lo my_port.lo \
|
my_getopt.lo my_port.lo \
|
||||||
my_rename.lo my_chsize.lo my_sync.lo my_getsystime.lo
|
my_rename.lo my_chsize.lo my_sync.lo my_getsystime.lo
|
||||||
sqlobjects = net.lo
|
sqlobjects = net.lo
|
||||||
sql_cmn_objects = pack.lo client.lo my_time.lo client_plugin.lo
|
sql_cmn_objects = pack.lo client.lo my_time.lo client_plugin.lo
|
||||||
|
|
|
@ -46,6 +46,7 @@ extern "C" void unireg_clear(int exit_code)
|
||||||
{
|
{
|
||||||
DBUG_ENTER("unireg_clear");
|
DBUG_ENTER("unireg_clear");
|
||||||
clean_up(!opt_help && (exit_code || !opt_bootstrap)); /* purecov: inspected */
|
clean_up(!opt_help && (exit_code || !opt_bootstrap)); /* purecov: inspected */
|
||||||
|
clean_up_mutexes();
|
||||||
my_end(opt_endinfo ? MY_CHECK_ERROR | MY_GIVE_INFO : 0);
|
my_end(opt_endinfo ? MY_CHECK_ERROR | MY_GIVE_INFO : 0);
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
|
@ -574,6 +575,7 @@ void end_embedded_server()
|
||||||
my_free((char*) copy_arguments_ptr, MYF(MY_ALLOW_ZERO_PTR));
|
my_free((char*) copy_arguments_ptr, MYF(MY_ALLOW_ZERO_PTR));
|
||||||
copy_arguments_ptr=0;
|
copy_arguments_ptr=0;
|
||||||
clean_up(0);
|
clean_up(0);
|
||||||
|
clean_up_mutexes();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
# Copyright (C) 2000-2006 MySQL AB
|
# Copyright (c) 2000, 2010, Oracle and/or its affiliates.
|
||||||
|
# Copyright (c) 2009-2011, Monty Program Ab
|
||||||
#
|
#
|
||||||
# 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
|
||||||
|
@ -10,10 +11,9 @@
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
# Library General Public License for more details.
|
# Library 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
# MA 02111-1307, USA
|
|
||||||
|
|
||||||
## Process this file with automake to create Makefile.in
|
## Process this file with automake to create Makefile.in
|
||||||
|
|
||||||
|
|
|
@ -15,9 +15,13 @@ The syntax is as follows:
|
||||||
and any subsequent characters are ignored.
|
and any subsequent characters are ignored.
|
||||||
|
|
||||||
4) The full test case name including the suite and execution mode
|
4) The full test case name including the suite and execution mode
|
||||||
must be specified, for example:
|
may be specified, for example:
|
||||||
main.alias 'row' # bug#00000
|
main.alias 'row' # bug#00000
|
||||||
|
|
||||||
|
4b) Now, combinations will also be covered if only the test name is
|
||||||
|
specified, for example:
|
||||||
|
rpl.rpl_ps # Covers 'row', 'mix' and 'stmt'
|
||||||
|
|
||||||
5) As an exception to item 4, the last character of the test case
|
5) As an exception to item 4, the last character of the test case
|
||||||
specification may be an asterisk (*). In that case, all test cases that
|
specification may be an asterisk (*). In that case, all test cases that
|
||||||
start with the same characters up to the last letter before the asterisk
|
start with the same characters up to the last letter before the asterisk
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
# 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 # skozlov: BUG#12371924
|
||||||
|
|
||||||
|
|
||||||
funcs_1.charset_collation_1 # depends on compile-time decisions
|
funcs_1.charset_collation_1 # depends on compile-time decisions
|
||||||
funcs_1.is_cml_ndb # joro : NDB tests marked as experimental as agreed with bochklin
|
funcs_1.is_cml_ndb # joro : NDB tests marked as experimental as agreed with bochklin
|
||||||
|
@ -21,8 +23,9 @@ main.outfile_loaddata @solaris # joro : Bug #46895
|
||||||
|
|
||||||
ndb.* # joro : NDB tests marked as experimental as agreed with bochklin
|
ndb.* # joro : NDB tests marked as experimental as agreed with bochklin
|
||||||
|
|
||||||
rpl.rpl_innodb_bug28430* @solaris # Bug#46029
|
rpl.rpl_innodb_bug28430 @solaris # Bug#46029
|
||||||
rpl.rpl_row_sp011 @solaris # Joro : Bug #54138
|
rpl.rpl_row_sp011 @solaris # Joro : Bug #45445
|
||||||
|
rpl.rpl_stop_slave # Sven : BUG#12345981
|
||||||
|
|
||||||
rpl_ndb.* # joro : NDB tests marked as experimental as agreed with bochklin
|
rpl_ndb.* # joro : NDB tests marked as experimental as agreed with bochklin
|
||||||
rpl_ndb.rpl_ndb_log # Bug#38998
|
rpl_ndb.rpl_ndb_log # Bug#38998
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
perl mysql-test-run.pl --timer --force --comment=1st --experimental=collections/default.experimental 1st
|
|
||||||
perl mysql-test-run.pl --timer --force --comment=big-tests --experimental=collections/default.experimental --vardir=var-big-tests --big-test --testcase-timeout=60 --suite-timeout=600 parts.partition_alter1_2_ndb parts.part_supported_sql_func_innodb parts.partition_alter1_2_innodb parts.partition_alter4_innodb parts.partition_alter1_1_2_ndb parts.partition_alter1_1_2_innodb parts.partition_alter1_1_ndb rpl_ndb.rpl_truncate_7ndb_2 main.archive-big main.sum_distinct-big main.mysqlbinlog_row_big main.alter_table-big main.variables-big main.type_newdecimal-big main.read_many_rows_innodb main.log_tables-big main.count_distinct3 main.events_time_zone main.merge-big main.create-big main.events_stress main.ssl-big funcs_1.myisam_views-big
|
perl mysql-test-run.pl --timer --force --comment=big-tests --experimental=collections/default.experimental --vardir=var-big-tests --big-test --testcase-timeout=60 --suite-timeout=600 parts.partition_alter1_2_ndb parts.part_supported_sql_func_innodb parts.partition_alter1_2_innodb parts.partition_alter4_innodb parts.partition_alter1_1_2_ndb parts.partition_alter1_1_2_innodb parts.partition_alter1_1_ndb rpl_ndb.rpl_truncate_7ndb_2 main.archive-big main.sum_distinct-big main.mysqlbinlog_row_big main.alter_table-big main.variables-big main.type_newdecimal-big main.read_many_rows_innodb main.log_tables-big main.count_distinct3 main.events_time_zone main.merge-big main.create-big main.events_stress main.ssl-big funcs_1.myisam_views-big
|
||||||
perl mysql-test-run.pl --timer --force --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 --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 --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 --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
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
perl mysql-test-run.pl --timer --force --parallel=auto --comment=n_mix --vardir=var-n_mix --mysqld=--binlog-format=mixed --experimental=collections/default.experimental
|
|
||||||
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
|
|
||||||
perl mysql-test-run.pl --timer --force --parallel=auto --comment=embedded --vardir=var-emebbed --embedded --experimental=collections/default.experimental
|
|
||||||
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
|
|
||||||
perl mysql-test-run.pl --timer --force --parallel=auto --comment=funcs_1 --vardir=var-funcs_1 --suite=funcs_1 --experimental=collections/default.experimental
|
|
|
@ -1,4 +0,0 @@
|
||||||
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
|
|
||||||
perl mysql-test-run.pl --timer --force --parallel=auto --comment=ps_row --vardir=var-ps_row --suite=main --ps-protocol --mysqld=--binlog-format=row --experimental=collections/default.experimental --skip-ndb
|
|
||||||
perl mysql-test-run.pl --timer --force --parallel=auto --comment=embedded --vardir=var-emebbed --suite=main --embedded --experimental=collections/default.experimental --skip-ndb
|
|
||||||
perl mysql-test-run.pl --timer --force --parallel=auto --comment=funcs_1 --vardir=var-funcs_1 --suite=funcs_1 --experimental=collections/default.experimental --skip-ndb
|
|
|
@ -343,6 +343,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=
|
||||||
|
|
|
@ -93,6 +93,7 @@ if (`SELECT @@global.binlog_format != 'ROW' OR @@global.slave_exec_mode = 'STRIC
|
||||||
source include/wait_for_slave_sql_error.inc;
|
source include/wait_for_slave_sql_error.inc;
|
||||||
let $err= query_get_value("SHOW SLAVE STATUS", Last_SQL_Error, 1);
|
let $err= query_get_value("SHOW SLAVE STATUS", Last_SQL_Error, 1);
|
||||||
--echo Last_SQL_Error = $err (expected "duplicate key" error)
|
--echo Last_SQL_Error = $err (expected "duplicate key" error)
|
||||||
|
call mtr.add_suppression("Slave SQL.*Duplicate entry .1. for key .PRIMARY.* Error_code: 1062");
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
|
|
||||||
--echo ---- Resolve the conflict on the slave and restart SQL thread ----
|
--echo ---- Resolve the conflict on the slave and restart SQL thread ----
|
||||||
|
@ -137,6 +138,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("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,16 @@ 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 I/O: Get master clock failed with error:.* Error_code: 2013");
|
||||||
|
call mtr.add_suppression("Slave I/O: Get master SERVER_ID failed with error:.* Error_code: 2013");
|
||||||
|
--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 *
|
||||||
|
|
|
@ -766,6 +766,10 @@ RESET MASTER;
|
||||||
connection slave;
|
connection slave;
|
||||||
START SLAVE;
|
START SLAVE;
|
||||||
|
|
||||||
|
call mtr.add_suppression("Slave SQL.*Error .Unknown table .t6.. on query.* Error_code: 1051");
|
||||||
|
call mtr.add_suppression("Slave SQL.*Error .Duplicate column name .c6.. on query.* Error_code: 1060");
|
||||||
|
call mtr.add_suppression("Slave SQL.*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';
|
||||||
|
|
64
mysql-test/extra/rpl_tests/rpl_insert_duplicate.test
Normal file
64
mysql-test/extra/rpl_tests/rpl_insert_duplicate.test
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
# BUG#59338 Inconsistency in binlog for statements that don't change any rows STATEMENT SBR
|
||||||
|
# In SBR, if a statement does not fail, it is always written to the binary log,
|
||||||
|
# regardless if rows are changed or not. If there is a failure, a statement is
|
||||||
|
# only written to the binary log if a non-transactional (.e.g. MyIsam) engine
|
||||||
|
# is updated. INSERT ON DUPLICATE KEY UPDATE was not following the rule above
|
||||||
|
# and was not written to the binary log, if then engine was Innodb.
|
||||||
|
#
|
||||||
|
# In this test case, we check if INSERT ON DUPLICATE KEY UPDATE that does not
|
||||||
|
# change anything is still written to the binary log.
|
||||||
|
|
||||||
|
# Prepare environment
|
||||||
|
--connection master
|
||||||
|
|
||||||
|
eval CREATE TABLE t1 (
|
||||||
|
a INT UNSIGNED NOT NULL PRIMARY KEY
|
||||||
|
) ENGINE=$engine_type;
|
||||||
|
|
||||||
|
eval CREATE TABLE t2 (
|
||||||
|
a INT UNSIGNED
|
||||||
|
) ENGINE=$engine_type;
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
INSERT INTO t2 VALUES (1);
|
||||||
|
|
||||||
|
# An insert duplicate that does not update anything must be written to the binary
|
||||||
|
# log in SBR and MIXED modes. We check this property by summing a before and after
|
||||||
|
# the update and comparing the binlog positions. The sum should be the same at both
|
||||||
|
# points and the statement should be in the binary log.
|
||||||
|
--let $binlog_file= query_get_value("SHOW MASTER STATUS", File, 1)
|
||||||
|
--let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1)
|
||||||
|
--let $statement_file=INSERT INTO t1 SELECT t2.a FROM t2 ORDER BY t2.a ON DUPLICATE KEY UPDATE t1.a= t1.a
|
||||||
|
--eval $statement_file
|
||||||
|
|
||||||
|
--let $assert_cond= SUM(a) = 1 FROM t1
|
||||||
|
--let $assert_text= Sum of elements in t1 should be 1.
|
||||||
|
--source include/assert.inc
|
||||||
|
|
||||||
|
if (`SELECT @@BINLOG_FORMAT = 'ROW'`)
|
||||||
|
{
|
||||||
|
--let $binlog_position_cmp= =
|
||||||
|
--let $assert_cond= [SHOW MASTER STATUS, Position, 1] $binlog_position_cmp $binlog_start
|
||||||
|
--let $assert_text= In SBR or MIXED modes, the event in the binlog should be the same that was executed. In RBR mode, binlog position should stay unchanged.
|
||||||
|
}
|
||||||
|
if (`SELECT @@BINLOG_FORMAT != 'ROW' && UPPER('$engine_type') = UPPER('Innodb')`)
|
||||||
|
{
|
||||||
|
--let $assert_cond= \'[\'SHOW BINLOG EVENTS IN "$binlog_file" FROM $binlog_start LIMIT 1, 1\', Info, 1]\' LIKE \'%$statement_file\'
|
||||||
|
--let $assert_text= In SBR or MIXED modes, the event in the binlog should be the same that was executed. In RBR mode, binlog position should stay unchanged.
|
||||||
|
}
|
||||||
|
if (`SELECT @@BINLOG_FORMAT != 'ROW' && UPPER('$engine_type') = UPPER('MyIsam')`)
|
||||||
|
{
|
||||||
|
--let $assert_cond= \'[\'SHOW BINLOG EVENTS IN "$binlog_file" FROM $binlog_start LIMIT 0, 1\', Info, 1]\' LIKE \'%$statement_file\'
|
||||||
|
--let $assert_text= In SBR or MIXED modes, the event in the binlog should be the same that was executed. In RBR mode, binlog position should stay unchanged.
|
||||||
|
}
|
||||||
|
--source include/assert.inc
|
||||||
|
|
||||||
|
# Compare master and slave
|
||||||
|
--sync_slave_with_master
|
||||||
|
--let $diff_tables= master:test.t1 , slave:test.t1
|
||||||
|
--source include/diff_tables.inc
|
||||||
|
|
||||||
|
# Clean up
|
||||||
|
--connection master
|
||||||
|
drop table t1, t2;
|
||||||
|
--sync_slave_with_master
|
|
@ -5,6 +5,7 @@
|
||||||
# Slave needs to be started with --innodb to store table in InnoDB.
|
# Slave needs to be started with --innodb to store table in InnoDB.
|
||||||
# Same test for MyISAM (which had no bug).
|
# Same test for MyISAM (which had no bug).
|
||||||
|
|
||||||
|
--connection master
|
||||||
eval CREATE TABLE t1 (
|
eval CREATE TABLE t1 (
|
||||||
a int unsigned not null auto_increment primary key,
|
a int unsigned not null auto_increment primary key,
|
||||||
b int unsigned,
|
b int unsigned,
|
||||||
|
@ -32,38 +33,49 @@ INSERT INTO t2 VALUES (5, 4);
|
||||||
INSERT INTO t2 VALUES (6, 6);
|
INSERT INTO t2 VALUES (6, 6);
|
||||||
|
|
||||||
INSERT IGNORE INTO t1 SELECT NULL, t2.b FROM t2 ORDER BY t2.a;
|
INSERT IGNORE INTO t1 SELECT NULL, t2.b FROM t2 ORDER BY t2.a;
|
||||||
|
--let $assert_cond= COUNT(*) = 6 FROM t1
|
||||||
|
--let $assert_text= Count of elements in t1 should be 6.
|
||||||
|
--source include/assert.inc
|
||||||
|
|
||||||
# Compare results
|
# Compare master and slave
|
||||||
|
--sync_slave_with_master
|
||||||
|
--let $diff_tables= master:test.t1 , slave:test.t1
|
||||||
|
--source include/diff_tables.inc
|
||||||
|
|
||||||
SELECT * FROM t1 ORDER BY a;
|
# BUG#59338 Inconsistency in binlog for statements that don't change any rows STATEMENT SBR
|
||||||
|
# An insert ignore that does not update anything must be written to the binary log in SBR
|
||||||
|
# and MIXED modes. We check this property by counting occurrences in t1 before and after
|
||||||
|
# the insert and comparing the binlog positions. The count should be the same in both points
|
||||||
|
# and the statement should be in the binary log.
|
||||||
|
--connection master
|
||||||
|
--let $binlog_file= query_get_value("SHOW MASTER STATUS", File, 1)
|
||||||
|
--let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1)
|
||||||
|
--let $statement_file=INSERT IGNORE INTO t1 SELECT NULL, t2.b FROM t2 ORDER BY t2.a
|
||||||
|
--eval $statement_file
|
||||||
|
|
||||||
sync_slave_with_master;
|
--let $assert_cond= COUNT(*) = 6 FROM t1
|
||||||
SELECT * FROM t1 ORDER BY a;
|
--let $assert_text= Count of elements in t1 should be 6.
|
||||||
|
--source include/assert.inc
|
||||||
|
|
||||||
# Now do the same for MyISAM
|
if (`SELECT @@BINLOG_FORMAT = 'ROW'`)
|
||||||
|
{
|
||||||
|
--let $binlog_position_cmp= =
|
||||||
|
--let $assert_cond= [SHOW MASTER STATUS, Position, 1] $binlog_position_cmp $binlog_start
|
||||||
|
--let $assert_text= In SBR or MIXED modes, the event in the binlog should be the same that was executed. In RBR mode, binlog position should stay unchanged.
|
||||||
|
}
|
||||||
|
if (`SELECT @@BINLOG_FORMAT != 'ROW' && UPPER('$engine_type') = UPPER('Innodb')`)
|
||||||
|
{
|
||||||
|
--let $assert_cond= \'[\'SHOW BINLOG EVENTS IN "$binlog_file" FROM $binlog_start LIMIT 2, 1\', Info, 1]\' LIKE \'%$statement_file\'
|
||||||
|
--let $assert_text= In SBR or MIXED modes, the event in the binlog should be the same that was executed. In RBR mode, binlog position should stay unchanged.
|
||||||
|
}
|
||||||
|
if (`SELECT @@BINLOG_FORMAT != 'ROW' && UPPER('$engine_type') = UPPER('MyIsam')`)
|
||||||
|
{
|
||||||
|
--let $assert_cond= \'[\'SHOW BINLOG EVENTS IN "$binlog_file" FROM $binlog_start LIMIT 1, 1\', Info, 1]\' LIKE \'%$statement_file\'
|
||||||
|
--let $assert_text= In SBR or MIXED modes, the event in the binlog should be the same that was executed. In RBR mode, binlog position should stay unchanged.
|
||||||
|
}
|
||||||
|
--source include/assert.inc
|
||||||
|
|
||||||
connection master;
|
# Clean up
|
||||||
drop table t1;
|
--connection master
|
||||||
eval CREATE TABLE t1 (
|
|
||||||
a int unsigned not null auto_increment primary key,
|
|
||||||
b int unsigned,
|
|
||||||
unique (b)
|
|
||||||
) ENGINE=$engine_type2;
|
|
||||||
|
|
||||||
INSERT INTO t1 VALUES (1, 1);
|
|
||||||
INSERT INTO t1 VALUES (2, 2);
|
|
||||||
INSERT INTO t1 VALUES (3, 3);
|
|
||||||
INSERT INTO t1 VALUES (4, 4);
|
|
||||||
|
|
||||||
INSERT IGNORE INTO t1 SELECT NULL, t2.b FROM t2 ORDER BY t2.a;
|
|
||||||
|
|
||||||
SELECT * FROM t1 ORDER BY a;
|
|
||||||
|
|
||||||
sync_slave_with_master;
|
|
||||||
SELECT * FROM t1 ORDER BY a;
|
|
||||||
|
|
||||||
connection master;
|
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
sync_slave_with_master;
|
--sync_slave_with_master
|
||||||
|
|
||||||
# End of 4.1 tests
|
|
||||||
|
|
|
@ -63,6 +63,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
|
||||||
|
|
|
@ -378,7 +378,9 @@ INSERT INTO t3 VALUES (1, "", 1);
|
||||||
INSERT INTO t3 VALUES (2, repeat(_utf8'a', 128), 2);
|
INSERT INTO t3 VALUES (2, repeat(_utf8'a', 128), 2);
|
||||||
|
|
||||||
connection slave;
|
connection slave;
|
||||||
# 1535 = ER_BINLOG_ROW_WRONG_TABLE_DEF
|
# 1535 = ER_BINLOG_ROW_WRONG_TABLE_DEF
|
||||||
|
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");
|
||||||
--let $slave_sql_errno= 1535
|
--let $slave_sql_errno= 1535
|
||||||
--let $show_slave_sql_error= 1
|
--let $show_slave_sql_error= 1
|
||||||
--source include/wait_for_slave_sql_error.inc
|
--source include/wait_for_slave_sql_error.inc
|
||||||
|
|
|
@ -147,6 +147,7 @@ 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");
|
||||||
--let $slave_skip_counter= 2
|
--let $slave_skip_counter= 2
|
||||||
--let $slave_sql_errno= 1535
|
--let $slave_sql_errno= 1535
|
||||||
--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)
|
||||||
|
|
|
@ -502,16 +502,16 @@ call p_verify_status_increment(2, 2, 2, 2);
|
||||||
--echo # 12. Read-write statement: IODKU, change 0 rows.
|
--echo # 12. Read-write statement: IODKU, change 0 rows.
|
||||||
--echo #
|
--echo #
|
||||||
insert t1 set a=2 on duplicate key update a=2;
|
insert t1 set a=2 on duplicate key update a=2;
|
||||||
call p_verify_status_increment(1, 0, 1, 0);
|
call p_verify_status_increment(2, 2, 1, 0);
|
||||||
commit;
|
commit;
|
||||||
call p_verify_status_increment(1, 0, 1, 0);
|
call p_verify_status_increment(2, 2, 1, 0);
|
||||||
|
|
||||||
--echo # 13. Read-write statement: INSERT IGNORE, change 0 rows.
|
--echo # 13. Read-write statement: INSERT IGNORE, change 0 rows.
|
||||||
--echo #
|
--echo #
|
||||||
insert ignore t1 set a=2;
|
insert ignore t1 set a=2;
|
||||||
call p_verify_status_increment(1, 0, 1, 0);
|
call p_verify_status_increment(2, 2, 1, 0);
|
||||||
commit;
|
commit;
|
||||||
call p_verify_status_increment(1, 0, 1, 0);
|
call p_verify_status_increment(2, 2, 1, 0);
|
||||||
|
|
||||||
--echo # 14. Read-write statement: INSERT IGNORE, change 1 row.
|
--echo # 14. Read-write statement: INSERT IGNORE, change 1 row.
|
||||||
--echo #
|
--echo #
|
||||||
|
|
|
@ -44,3 +44,19 @@ SELECT COUNT(*) FROM t2 IGNORE INDEX(p) WHERE p=POINTFROMTEXT('POINT(1 2)');
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
--echo End of 5.0 tests
|
--echo End of 5.0 tests
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Test for bug #58650 "Failing assertion: primary_key_no == -1 ||
|
||||||
|
--echo # primary_key_no == 0".
|
||||||
|
--echo #
|
||||||
|
--disable_warnings
|
||||||
|
drop table if exists t1;
|
||||||
|
--enable_warnings
|
||||||
|
--echo # The minimal test case.
|
||||||
|
create table t1 (a int not null, b linestring not null, unique key b (b(12)), unique key a (a));
|
||||||
|
drop table t1;
|
||||||
|
--echo # The original test case.
|
||||||
|
create table t1 (a int not null, b linestring not null, unique key b (b(12)));
|
||||||
|
create unique index a on t1(a);
|
||||||
|
drop table t1;
|
||||||
|
|
78
mysql-test/include/have_dbi_dbd-mysql.inc
Normal file
78
mysql-test/include/have_dbi_dbd-mysql.inc
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
#
|
||||||
|
# Originally created by John Embretsen, 2011-01-26.
|
||||||
|
#
|
||||||
|
# Checks for the existence of Perl modules DBI and DBD::mysql as seen from the
|
||||||
|
# perl installation used by "external" executable perl scripts, i.e. scripts
|
||||||
|
# that are executed as standalone scripts interpreted by the perl installation
|
||||||
|
# specified by the "shebang" line in the top of these scripts.
|
||||||
|
#
|
||||||
|
# If either module is not found, the test will be skipped.
|
||||||
|
#
|
||||||
|
# For use in tests that call perl scripts that require these modules.
|
||||||
|
#
|
||||||
|
# This file is intended to work on Unix. Windows may need different treatment.
|
||||||
|
# Reasoning:
|
||||||
|
# - "shebangs" are not relevant on Windows, but need to be handled here.
|
||||||
|
# - Perl scripts cannot be made executable on Windows, interpreter must be
|
||||||
|
# specified.
|
||||||
|
#
|
||||||
|
# Note that if there are multiple perl installations and not all have the
|
||||||
|
# required modules, this check may fail even if the perl in path does have
|
||||||
|
# the modules available. This may happen if the perl specified by the script's
|
||||||
|
# shebang (e.g. #!/usr/bin/perl) does not have these modules, and script is
|
||||||
|
# called without specifying the perl interpreter. However, this will be
|
||||||
|
# a correct result in cases where a test calls a script with a similar shebang.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
--source include/not_windows.inc
|
||||||
|
|
||||||
|
# We jump through some hoops since there is no direct way to check if an
|
||||||
|
# external command went OK or not from a mysql-test file:
|
||||||
|
#
|
||||||
|
# - In theory, we could do as simple as "exec perl -MDBI -MDBD::mysql -e 1",
|
||||||
|
# however we cannot check the result (exit code) from within a test script.
|
||||||
|
# Also, this may not yield the same result as other uses of perl due to the
|
||||||
|
# shebang issue mentioned above.
|
||||||
|
# - Instead we use a separate helper perl script that checks for the modules.
|
||||||
|
# - If the modules are found, the perl script leaves a file which sets a
|
||||||
|
# variable that can be read by this file.
|
||||||
|
# If the modules are not found, the perl script does not set this variable,
|
||||||
|
# but leaves an empty file instead.
|
||||||
|
#
|
||||||
|
# This is done because there is apparently no direct way to transfer
|
||||||
|
# information from perl to the test script itself.
|
||||||
|
|
||||||
|
--disable_query_log
|
||||||
|
--disable_result_log
|
||||||
|
--disable_warnings
|
||||||
|
|
||||||
|
# We do not use embedded perl in this script because that would not have yielded
|
||||||
|
# correct results for a situation where an external Perl script is called like
|
||||||
|
# "scriptname" instead of "perl scriptname" and the shebang in the script points
|
||||||
|
# to a specific perl that may be different than the perl in PATH.
|
||||||
|
#
|
||||||
|
# Instead, we call a separate helper script which checks for the modules in its
|
||||||
|
# own environment. We call it without "perl" in front.
|
||||||
|
|
||||||
|
--let $perlChecker= $MYSQLTEST_VARDIR/std_data/checkDBI_DBD-mysql.pl
|
||||||
|
--let $resultFile= $MYSQL_TMP_DIR/dbidbd-mysql.txt
|
||||||
|
|
||||||
|
# Make the script executable and execute it.
|
||||||
|
--chmod 0755 $perlChecker
|
||||||
|
--exec $perlChecker
|
||||||
|
|
||||||
|
# Source the resulting temporary file and look for a variable being set.
|
||||||
|
--source $resultFile
|
||||||
|
|
||||||
|
if (!$dbidbd) {
|
||||||
|
--skip Test needs Perl modules DBI and DBD::mysql
|
||||||
|
}
|
||||||
|
|
||||||
|
# Clean up
|
||||||
|
--remove_file $resultFile
|
||||||
|
|
||||||
|
--enable_query_log
|
||||||
|
--enable_result_log
|
||||||
|
--enable_warnings
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
|
@ -53,7 +53,7 @@ END
|
||||||
-- 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"),
|
||||||
|
@ -107,11 +107,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"),
|
||||||
|
@ -124,55 +122,21 @@ 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"),
|
|
||||||
|
|
||||||
/* Test case for Bug#31590 in order_by.test produces the following error */
|
|
||||||
("Out of sort memory; increase server sort buffer size"),
|
|
||||||
|
|
||||||
/* 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"),
|
("Slave: Unknown table 't1' Error_code: 1051"),
|
||||||
|
|
||||||
/* Maria storage engine dependent tests */
|
/* Maria storage engine dependent tests */
|
||||||
|
@ -201,15 +165,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:.*"),
|
|
||||||
|
|
||||||
("THE_LAST_SUPPRESSION")||
|
("THE_LAST_SUPPRESSION")||
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -4,12 +4,26 @@
|
||||||
|
|
||||||
--source include/not_windows.inc
|
--source include/not_windows.inc
|
||||||
--source include/not_embedded.inc
|
--source include/not_embedded.inc
|
||||||
|
--source include/have_dbi_dbd-mysql.inc
|
||||||
|
|
||||||
if ($MYSQLHOTCOPY)
|
if (!$MYSQLHOTCOPY)
|
||||||
{
|
{
|
||||||
|
# Fail the test if the mysqlhotcopy script is missing.
|
||||||
|
# If the tool's location changes, mysql-test-run.pl must be updated to
|
||||||
|
# reflect this (look for "MYSQLHOTCOPY").
|
||||||
die due to missing mysqlhotcopy tool;
|
die due to missing mysqlhotcopy tool;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# NOTE (johnemb, 2011-01-26):
|
||||||
|
# In this test mysqlhotcopy (a perl script) is executed as a standalone
|
||||||
|
# executable, i.e. not necessarily using the perl interpreter in PATH,
|
||||||
|
# because that is how the documentation demonstrates it.
|
||||||
|
#
|
||||||
|
# We include have_dbi_dbd-mysql.inc above so that the test will
|
||||||
|
# be skipped if Perl modules required by the mysqlhotcopy tool are not
|
||||||
|
# found when the script is run this way.
|
||||||
|
|
||||||
|
|
||||||
let $MYSQLD_DATADIR= `SELECT @@datadir`;
|
let $MYSQLD_DATADIR= `SELECT @@datadir`;
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
DROP DATABASE IF EXISTS hotcopy_test;
|
DROP DATABASE IF EXISTS hotcopy_test;
|
||||||
|
@ -95,7 +109,7 @@ DROP DATABASE hotcopy_save;
|
||||||
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
|
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
|
||||||
--list_files $MYSQLD_DATADIR/hotcopy_save
|
--list_files $MYSQLD_DATADIR/hotcopy_save
|
||||||
--replace_result $MASTER_MYSOCK MASTER_MYSOCK
|
--replace_result $MASTER_MYSOCK MASTER_MYSOCK
|
||||||
--error 9,2304
|
--error 9,11,2304
|
||||||
--exec $MYSQLHOTCOPY --quiet -S $MASTER_MYSOCK -u root hotcopy_test hotcopy_save
|
--exec $MYSQLHOTCOPY --quiet -S $MASTER_MYSOCK -u root hotcopy_test hotcopy_save
|
||||||
--replace_result $MASTER_MYSOCK MASTER_MYSOCK
|
--replace_result $MASTER_MYSOCK MASTER_MYSOCK
|
||||||
--exec $MYSQLHOTCOPY --quiet --allowold -S $MASTER_MYSOCK -u root hotcopy_test hotcopy_save
|
--exec $MYSQLHOTCOPY --quiet --allowold -S $MASTER_MYSOCK -u root hotcopy_test hotcopy_save
|
||||||
|
|
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
|
||||||
|
}
|
43
mysql-test/include/restart_slave_sql.inc
Normal file
43
mysql-test/include/restart_slave_sql.inc
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
# ==== Purpose ====
|
||||||
|
#
|
||||||
|
# Provide a earier way to restart SQL thread when you want to stop sql thread
|
||||||
|
# and then start it immediately.
|
||||||
|
#
|
||||||
|
# Sources stop_slave_sql.inc to stop SQL thread on the current connection.
|
||||||
|
# Then issues START SLAVE SQL_THREAD and then waits until
|
||||||
|
# the SQL threads have started, or until a timeout is reached.
|
||||||
|
#
|
||||||
|
# Please use this instead of 'STOP|START SLAVE SQL_THREAD', to reduce the risk of
|
||||||
|
# test case bugs.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# ==== Usage ====
|
||||||
|
#
|
||||||
|
# [--let $slave_timeout= NUMBER]
|
||||||
|
# [--let $rpl_debug= 1]
|
||||||
|
# --source include/restart_slave_sql.inc
|
||||||
|
#
|
||||||
|
# Parameters:
|
||||||
|
# $slave_timeout
|
||||||
|
# See include/wait_for_slave_param.inc
|
||||||
|
#
|
||||||
|
# $rpl_debug
|
||||||
|
# See include/rpl_init.inc
|
||||||
|
|
||||||
|
|
||||||
|
--let $include_filename= restart_slave.inc
|
||||||
|
--source include/begin_include_file.inc
|
||||||
|
|
||||||
|
|
||||||
|
if (!$rpl_debug)
|
||||||
|
{
|
||||||
|
--disable_query_log
|
||||||
|
}
|
||||||
|
|
||||||
|
source include/stop_slave_sql.inc;
|
||||||
|
START SLAVE SQL_THREAD;
|
||||||
|
source include/wait_for_slave_sql_to_start.inc;
|
||||||
|
|
||||||
|
|
||||||
|
--let $include_filename= restart_slave.inc
|
||||||
|
--source include/end_include_file.inc
|
2
mysql-test/include/rpl_connection_master.inc
Normal file
2
mysql-test/include/rpl_connection_master.inc
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
let $rpl_connection_name= master;
|
||||||
|
source include/rpl_connection.inc;
|
2
mysql-test/include/rpl_connection_slave.inc
Normal file
2
mysql-test/include/rpl_connection_slave.inc
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
let $rpl_connection_name= slave;
|
||||||
|
source include/rpl_connection.inc;
|
2
mysql-test/include/rpl_connection_slave1.inc
Normal file
2
mysql-test/include/rpl_connection_slave1.inc
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
let $rpl_connection_name= slave1;
|
||||||
|
source include/rpl_connection.inc;
|
|
@ -88,7 +88,7 @@ while ($_rpl_i) {
|
||||||
{
|
{
|
||||||
--echo Sync IO: $_rpl_slave_io_running; Sync SQL: $_rpl_slave_sql_running
|
--echo Sync IO: $_rpl_slave_io_running; Sync SQL: $_rpl_slave_sql_running
|
||||||
}
|
}
|
||||||
--let $_rpl_slave_io_running= `SELECT IF('$_rpl_slave_io_running' = 'Yes', 1, '')`
|
--let $_rpl_slave_io_running= `SELECT IF('$_rpl_slave_io_running' != 'No', 1, '')`
|
||||||
--let $_rpl_slave_sql_running= `SELECT IF('$_rpl_slave_sql_running' = 'Yes', 1, '')`
|
--let $_rpl_slave_sql_running= `SELECT IF('$_rpl_slave_sql_running' = 'Yes', 1, '')`
|
||||||
if ($_rpl_slave_io_running)
|
if ($_rpl_slave_io_running)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,4 +1,20 @@
|
||||||
# -*- cperl -*-
|
# -*- cperl -*-
|
||||||
|
# Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU Library General Public
|
||||||
|
# License as published by the Free Software Foundation; version 2
|
||||||
|
# of the License.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
# Library General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
package My::ConfigFactory;
|
package My::ConfigFactory;
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# -*- cperl -*-
|
# -*- cperl -*-
|
||||||
# Copyright (C) 2004-2006 MySQL AB
|
# Copyright (C) 2008 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||||
#
|
#
|
||||||
# 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
|
||||||
|
|
|
@ -1,4 +1,19 @@
|
||||||
# -*- cperl -*-
|
# -*- cperl -*-
|
||||||
|
# Copyright (C) 2008 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||||
|
#
|
||||||
|
# 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
|
||||||
|
# the Free Software Foundation; version 2 of the License.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
package My::File::Path;
|
package My::File::Path;
|
||||||
use strict;
|
use strict;
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# -*- cperl -*-
|
# -*- cperl -*-
|
||||||
# Copyright (C) 2004-2006 MySQL AB
|
# Copyright (c) 2004, 2011, Oracle and/or its affiliates.
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
@ -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,7 @@ 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_vs_config || $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-2006 MySQL AB
|
# Copyright (C) 2008 MySQL AB
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# -*- cperl -*-
|
# -*- cperl -*-
|
||||||
# Copyright (C) 2004-2006 MySQL AB
|
# Copyright (C) 2008 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||||
#
|
#
|
||||||
# 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
|
||||||
|
|
|
@ -1,14 +1,16 @@
|
||||||
# -*- cperl -*-
|
# -*- cperl -*-
|
||||||
# Copyright (C) 2004-2006 MySQL AB
|
# Copyright (c) 2008, 2010, Oracle and/or its affiliates.
|
||||||
|
# Copyright (c) 2009, 2011 Monty Program Ab
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or
|
||||||
# it under the terms of the GNU General Public License as published by
|
# modify it under the terms of the GNU Library General Public
|
||||||
# the Free Software Foundation; version 2 of the License.
|
# License as published by the Free Software Foundation; version 2
|
||||||
|
# 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
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
# GNU General Public License for more details.
|
# Library General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program; if not, write to the Free Software
|
# along with this program; if not, write to the Free Software
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# -*- cperl -*-
|
# -*- cperl -*-
|
||||||
# Copyright (C) 2004-2006 MySQL AB
|
# Copyright (C) 2008 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||||
#
|
#
|
||||||
# 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
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
# Copyright (C) 2008 MySQL AB
|
||||||
# Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2006, 2010, 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
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Copyright (C) 2000-2006 MySQL AB
|
# Copyright (C) 2008 MySQL AB
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (C) 2004 MySQL AB
|
/* Copyright (C) 2008 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||||
|
|
||||||
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
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (C) 2008 MySQL AB
|
/* Copyright (C) 2008 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||||
|
|
||||||
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
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (C) 2004 MySQL AB
|
/* Copyright (C) 2008 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||||
|
|
||||||
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
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# -*- cperl -*-
|
# -*- cperl -*-
|
||||||
# Copyright (C) 2004-2006 MySQL AB
|
# Copyright (C) 2008 MySQL AB
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,4 +1,18 @@
|
||||||
# -*- cperl -*-
|
# -*- cperl -*-
|
||||||
|
# Copyright (C) 2008 MySQL AB
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; version 2 of the License.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# -*- cperl -*-
|
# -*- cperl -*-
|
||||||
# Copyright (C) 2004, 2006 MySQL AB
|
# Copyright (C) 2004, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||||
#
|
#
|
||||||
# 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
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# -*- cperl -*-
|
# -*- cperl -*-
|
||||||
# Copyright (C) 2004 MySQL AB
|
# Copyright (C) 2004 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||||
#
|
#
|
||||||
# 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
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# -*- cperl -*-
|
# -*- cperl -*-
|
||||||
# Copyright (C) 2004-2006 MySQL AB
|
# Copyright (C) 2004-2007 MySQL AB, 2008 Sun Microsystems, Inc.
|
||||||
#
|
#
|
||||||
# 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
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# -*- cperl -*-
|
# -*- cperl -*-
|
||||||
# Copyright (C) 2004-2006 MySQL AB
|
# Copyright (C) 2004-2008 MySQL AB
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,15 +1,17 @@
|
||||||
# -*- cperl -*-
|
# -*- cperl -*-
|
||||||
# Copyright (C) 2004-2006 MySQL AB
|
# Copyright (c) 2004, 2010, Oracle and/or its affiliates.
|
||||||
#
|
# Copyright (c) 2009-2011, Monty Program Ab
|
||||||
# This program is free software; you can redistribute it and/or modify
|
#
|
||||||
# it under the terms of the GNU General Public License as published by
|
# This program is free software; you can redistribute it and/or
|
||||||
# the Free Software Foundation; version 2 of the License.
|
# modify it under the terms of the GNU Library General Public
|
||||||
#
|
# License as published by the Free Software Foundation; version 2
|
||||||
|
# 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
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
# GNU General Public License for more details.
|
# Library General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program; if not, write to the Free Software
|
# along with this program; if not, write to the Free Software
|
||||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
|
@ -1,15 +1,16 @@
|
||||||
# -*- cperl -*-
|
# -*- cperl -*-
|
||||||
# Copyright 2004-2008 MySQL AB, 2008 Sun Microsystems, Inc.
|
# Copyright (c) 2004, 2011, Oracle and/or its affiliates.
|
||||||
|
# Copyright (c) 2009-2011, Monty Program Ab
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
# the Free Software Foundation; version 2 of the License.
|
# the Free Software Foundation; version 2 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
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program; if not, write to the Free Software
|
# along with this program; if not, write to the Free Software
|
||||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
@ -32,6 +33,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;
|
||||||
|
@ -125,7 +127,8 @@ sub mtr_report_test ($) {
|
||||||
# Find out if this test case is an experimental one, so we can treat
|
# Find out if this test case is an experimental one, so we can treat
|
||||||
# the failure as an expected failure instead of a regression.
|
# the failure as an expected failure instead of a regression.
|
||||||
for my $exp ( @$::experimental_test_cases ) {
|
for my $exp ( @$::experimental_test_cases ) {
|
||||||
if ( $exp ne $test_name ) {
|
# Include pattern match for combinations
|
||||||
|
if ( $exp ne $test_name && $test_name !~ /^$exp / ) {
|
||||||
# if the expression is not the name of this test case, but has
|
# if the expression is not the name of this test case, but has
|
||||||
# an asterisk at the end, determine if the characters up to
|
# an asterisk at the end, determine if the characters up to
|
||||||
# but excluding the asterisk are the same
|
# but excluding the asterisk are the same
|
||||||
|
@ -490,6 +493,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)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# -*- cperl -*-
|
# -*- cperl -*-
|
||||||
# Copyright (C) 2006 MySQL AB
|
# Copyright (C) 2004-2007 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||||
#
|
#
|
||||||
# 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
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# -*- cperl -*-
|
# -*- cperl -*-
|
||||||
# Copyright (C) 2006 MySQL AB
|
# Copyright (C) 2006-2008 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||||
#
|
#
|
||||||
# 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
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
|
|
||||||
# ======================================================================
|
# ======================================================================
|
||||||
# MySQL server stress test system
|
# MySQL server stress test system
|
||||||
# ======================================================================
|
# ======================================================================
|
||||||
|
|
|
@ -1,5 +1,23 @@
|
||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
# -*- cperl -*-
|
# -*- cperl -*-
|
||||||
|
|
||||||
|
# Copyright (c) 2004, 2011, Oracle and/or its affiliates.
|
||||||
|
# Copyright (c) 2009-2011 Monty Program Ab
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU Library General Public
|
||||||
|
# License as published by the Free Software Foundation; version 2
|
||||||
|
# of the License.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
# Library General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
#
|
#
|
||||||
|
@ -169,6 +187,7 @@ my $opt_cursor_protocol;
|
||||||
my $opt_view_protocol;
|
my $opt_view_protocol;
|
||||||
|
|
||||||
our $opt_debug;
|
our $opt_debug;
|
||||||
|
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;
|
||||||
|
|
||||||
|
@ -996,6 +1015,7 @@ sub command_line_setup {
|
||||||
|
|
||||||
# Debugging
|
# Debugging
|
||||||
'debug' => \$opt_debug,
|
'debug' => \$opt_debug,
|
||||||
|
'debug-server' => \$opt_debug_server,
|
||||||
'gdb' => \$opt_gdb,
|
'gdb' => \$opt_gdb,
|
||||||
'client-gdb' => \$opt_client_gdb,
|
'client-gdb' => \$opt_client_gdb,
|
||||||
'manual-gdb' => \$opt_manual_gdb,
|
'manual-gdb' => \$opt_manual_gdb,
|
||||||
|
@ -1162,6 +1182,20 @@ sub command_line_setup {
|
||||||
"$basedir/sql/share/charsets",
|
"$basedir/sql/share/charsets",
|
||||||
"$basedir/share/charsets");
|
"$basedir/share/charsets");
|
||||||
|
|
||||||
|
# --debug implies we run debug server
|
||||||
|
$opt_debug_server= 1 if $opt_debug;
|
||||||
|
|
||||||
|
if (using_extern())
|
||||||
|
{
|
||||||
|
# Connect to the running mysqld and find out what it supports
|
||||||
|
collect_mysqld_features_from_running_server();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
# Run the mysqld to find out what features are available
|
||||||
|
collect_mysqld_features();
|
||||||
|
}
|
||||||
|
|
||||||
if ( $opt_comment )
|
if ( $opt_comment )
|
||||||
{
|
{
|
||||||
mtr_report();
|
mtr_report();
|
||||||
|
@ -1187,7 +1221,7 @@ sub command_line_setup {
|
||||||
chomp;
|
chomp;
|
||||||
# remove comments (# foo) at the beginning of the line, or after a
|
# remove comments (# foo) at the beginning of the line, or after a
|
||||||
# blank at the end of the line
|
# blank at the end of the line
|
||||||
s/( +|^)#.*$//;
|
s/(\s+|^)#.*$//;
|
||||||
# If @ platform specifier given, use this entry only if it contains
|
# If @ platform specifier given, use this entry only if it contains
|
||||||
# @<platform> or @!<xxx> where xxx != platform
|
# @<platform> or @!<xxx> where xxx != platform
|
||||||
if (/\@.*/)
|
if (/\@.*/)
|
||||||
|
@ -1198,8 +1232,8 @@ sub command_line_setup {
|
||||||
s/\@.*$//;
|
s/\@.*$//;
|
||||||
}
|
}
|
||||||
# remove whitespace
|
# remove whitespace
|
||||||
s/^ +//;
|
s/^\s+//;
|
||||||
s/ +$//;
|
s/\s+$//;
|
||||||
# if nothing left, don't need to remember this line
|
# if nothing left, don't need to remember this line
|
||||||
if ( $_ eq "" ) {
|
if ( $_ eq "" ) {
|
||||||
next;
|
next;
|
||||||
|
@ -1806,7 +1840,7 @@ sub find_mysqld {
|
||||||
my @mysqld_names= ("mysqld", "mysqld-max-nt", "mysqld-max",
|
my @mysqld_names= ("mysqld", "mysqld-max-nt", "mysqld-max",
|
||||||
"mysqld-nt");
|
"mysqld-nt");
|
||||||
|
|
||||||
if ( $opt_debug ){
|
if ( $opt_debug_server ){
|
||||||
# Put mysqld-debug first in the list of binaries to look for
|
# Put mysqld-debug first in the list of binaries to look for
|
||||||
mtr_verbose("Adding mysqld-debug first in list of binaries to look for");
|
mtr_verbose("Adding mysqld-debug first in list of binaries to look for");
|
||||||
unshift(@mysqld_names, "mysqld-debug");
|
unshift(@mysqld_names, "mysqld-debug");
|
||||||
|
@ -1876,9 +1910,12 @@ sub executable_setup () {
|
||||||
sub client_debug_arg($$) {
|
sub client_debug_arg($$) {
|
||||||
my ($args, $client_name)= @_;
|
my ($args, $client_name)= @_;
|
||||||
|
|
||||||
|
# Workaround for Bug #50627: drop any debug opt
|
||||||
|
return if $client_name =~ /^mysqlbinlog/;
|
||||||
|
|
||||||
if ( $opt_debug ) {
|
if ( $opt_debug ) {
|
||||||
mtr_add_arg($args,
|
mtr_add_arg($args,
|
||||||
"--debug=d:t:A,%s/log/%s.trace",
|
"--loose-debug=d:t:A,%s/log/%s.trace",
|
||||||
$path_vardir_trace, $client_name)
|
$path_vardir_trace, $client_name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2241,10 +2278,12 @@ sub environment_setup {
|
||||||
# mysqlhotcopy
|
# mysqlhotcopy
|
||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
my $mysqlhotcopy=
|
my $mysqlhotcopy=
|
||||||
mtr_pl_maybe_exists("$bindir/scripts/mysqlhotcopy");
|
mtr_pl_maybe_exists("$basedir/scripts/mysqlhotcopy") ||
|
||||||
# Since mysqltest interprets the real path as "false" in an if,
|
mtr_pl_maybe_exists("$path_client_bindir/mysqlhotcopy");
|
||||||
# use 1 ("true") to indicate "not exists" so it can be tested for
|
if ($mysqlhotcopy)
|
||||||
$ENV{'MYSQLHOTCOPY'}= $mysqlhotcopy || 1;
|
{
|
||||||
|
$ENV{'MYSQLHOTCOPY'}= $mysqlhotcopy;
|
||||||
|
}
|
||||||
|
|
||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
# perror
|
# perror
|
||||||
|
@ -2538,9 +2577,9 @@ sub check_debug_support ($) {
|
||||||
#mtr_report(" - binaries are not debug compiled");
|
#mtr_report(" - binaries are not debug compiled");
|
||||||
$debug_compiled_binaries= 0;
|
$debug_compiled_binaries= 0;
|
||||||
|
|
||||||
if ( $opt_debug )
|
if ( $opt_debug_server )
|
||||||
{
|
{
|
||||||
mtr_error("Can't use --debug, binaries does not support it");
|
mtr_error("Can't use --debug[-server], binary does not support it");
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -4631,8 +4670,10 @@ sub check_expected_crash_and_restart {
|
||||||
{
|
{
|
||||||
mtr_verbose("Crash was expected, file '$expect_file' exists");
|
mtr_verbose("Crash was expected, file '$expect_file' exists");
|
||||||
|
|
||||||
for (my $waits = 0; $waits < 50; $waits++)
|
for (my $waits = 0; $waits < 50; mtr_milli_sleep(100), $waits++)
|
||||||
{
|
{
|
||||||
|
# Race condition seen on Windows: try again until file not empty
|
||||||
|
next if -z $expect_file;
|
||||||
# If last line in expect file starts with "wait"
|
# If last line in expect file starts with "wait"
|
||||||
# sleep a little and try again, thus allowing the
|
# sleep a little and try again, thus allowing the
|
||||||
# test script to control when the server should start
|
# test script to control when the server should start
|
||||||
|
@ -4641,10 +4682,11 @@ sub check_expected_crash_and_restart {
|
||||||
if ($last_line =~ /^wait/ )
|
if ($last_line =~ /^wait/ )
|
||||||
{
|
{
|
||||||
mtr_verbose("Test says wait before restart") if $waits == 0;
|
mtr_verbose("Test says wait before restart") if $waits == 0;
|
||||||
mtr_milli_sleep(100);
|
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Ignore any partial or unknown command
|
||||||
|
next unless $last_line =~ /^restart/;
|
||||||
# If last line begins "restart:", the rest of the line is read as
|
# If last line begins "restart:", the rest of the line is read as
|
||||||
# extra command line options to add to the restarted mysqld.
|
# extra command line options to add to the restarted mysqld.
|
||||||
# Anything other than 'wait' or 'restart:' (with a colon) will
|
# Anything other than 'wait' or 'restart:' (with a colon) will
|
||||||
|
@ -4994,6 +5036,8 @@ sub mysqld_start ($$) {
|
||||||
my @all_opts= @$extra_opts;
|
my @all_opts= @$extra_opts;
|
||||||
if (exists $mysqld->{'restart_opts'}) {
|
if (exists $mysqld->{'restart_opts'}) {
|
||||||
push (@all_opts, @{$mysqld->{'restart_opts'}});
|
push (@all_opts, @{$mysqld->{'restart_opts'}});
|
||||||
|
mtr_verbose(My::Options::toStr("mysqld_start restart",
|
||||||
|
@{$mysqld->{'restart_opts'}}));
|
||||||
}
|
}
|
||||||
mysqld_arguments($args,$mysqld,\@all_opts);
|
mysqld_arguments($args,$mysqld,\@all_opts);
|
||||||
|
|
||||||
|
@ -5960,6 +6004,8 @@ Options for debugging the product
|
||||||
client-gdb Start mysqltest client in gdb
|
client-gdb Start mysqltest client in gdb
|
||||||
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-server Use debug version of server, but without turning on
|
||||||
|
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
|
||||||
manual-debug Let user manually start mysqld in debugger, before
|
manual-debug Let user manually start mysqld in debugger, before
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -21,9 +21,9 @@ insert into t1 values (1, 2, 'a&b a<b a>b');
|
||||||
<mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
<mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
<database name="test">
|
<database name="test">
|
||||||
<table_structure name="t1">
|
<table_structure name="t1">
|
||||||
<field Field="a&b" Type="int(11)" Null="YES" Key="" Extra="" />
|
<field Field="a&b" Type="int(11)" Null="YES" Key="" Extra="" Comment="" />
|
||||||
<field Field="a<b" Type="int(11)" Null="YES" Key="" Extra="" />
|
<field Field="a<b" Type="int(11)" Null="YES" Key="" Extra="" Comment="" />
|
||||||
<field Field="a>b" Type="text" Null="YES" Key="" Extra="" />
|
<field Field="a>b" Type="text" Null="YES" Key="" Extra="" Comment="" />
|
||||||
</table_structure>
|
</table_structure>
|
||||||
<table_data name="t1">
|
<table_data name="t1">
|
||||||
<row>
|
<row>
|
||||||
|
|
|
@ -518,21 +518,21 @@ SUCCESS
|
||||||
# 12. Read-write statement: IODKU, change 0 rows.
|
# 12. Read-write statement: IODKU, change 0 rows.
|
||||||
#
|
#
|
||||||
insert t1 set a=2 on duplicate key update a=2;
|
insert t1 set a=2 on duplicate key update a=2;
|
||||||
call p_verify_status_increment(1, 0, 1, 0);
|
call p_verify_status_increment(2, 2, 1, 0);
|
||||||
SUCCESS
|
SUCCESS
|
||||||
|
|
||||||
commit;
|
commit;
|
||||||
call p_verify_status_increment(1, 0, 1, 0);
|
call p_verify_status_increment(2, 2, 1, 0);
|
||||||
SUCCESS
|
SUCCESS
|
||||||
|
|
||||||
# 13. Read-write statement: INSERT IGNORE, change 0 rows.
|
# 13. Read-write statement: INSERT IGNORE, change 0 rows.
|
||||||
#
|
#
|
||||||
insert ignore t1 set a=2;
|
insert ignore t1 set a=2;
|
||||||
call p_verify_status_increment(1, 0, 1, 0);
|
call p_verify_status_increment(2, 2, 1, 0);
|
||||||
SUCCESS
|
SUCCESS
|
||||||
|
|
||||||
commit;
|
commit;
|
||||||
call p_verify_status_increment(1, 0, 1, 0);
|
call p_verify_status_increment(2, 2, 1, 0);
|
||||||
SUCCESS
|
SUCCESS
|
||||||
|
|
||||||
# 14. Read-write statement: INSERT IGNORE, change 1 row.
|
# 14. Read-write statement: INSERT IGNORE, change 1 row.
|
||||||
|
|
|
@ -19,13 +19,16 @@ INSERT INTO t1 VALUES();
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
a b c d e f
|
a b c d e f
|
||||||
0 foo 0000-00-00
|
0 foo 0000-00-00
|
||||||
|
INSERT INTO t1 VALUES(default,default,default,default,default,default);
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
a b c d e f
|
a b c d e f
|
||||||
0 foo 0000-00-00
|
0 foo 0000-00-00
|
||||||
|
0 foo 0000-00-00
|
||||||
INSERT INTO t1 VALUES(0,'abc','def','ghi','bar','1999-12-31');
|
INSERT INTO t1 VALUES(0,'abc','def','ghi','bar','1999-12-31');
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
a b c d e f
|
a b c d e f
|
||||||
0 foo 0000-00-00
|
0 foo 0000-00-00
|
||||||
|
0 foo 0000-00-00
|
||||||
0 abc def ghi bar 1999-12-31
|
0 abc def ghi bar 1999-12-31
|
||||||
# === insert failures ===
|
# === insert failures ===
|
||||||
INSERT INTO t1 VALUES(NULL,'ab','a','b','foo','2007-01-01');
|
INSERT INTO t1 VALUES(NULL,'ab','a','b','foo','2007-01-01');
|
||||||
|
|
|
@ -238,3 +238,6 @@ select a from t1 where a like "abcdefgh
|
||||||
a
|
a
|
||||||
abcdefghá
|
abcdefghá
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
set global LC_MESSAGES=convert((@@global.log_bin_trust_function_creators)
|
||||||
|
using cp1250);
|
||||||
|
ERROR HY000: Unknown system variable 'LC_MESSAGES'
|
||||||
|
|
|
@ -375,6 +375,8 @@ FD FD FD D18D FD
|
||||||
FE FE FE D18E FE
|
FE FE FE D18E FE
|
||||||
FF FF FF D18F FF
|
FF FF FF D18F FF
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
set global LC_TIME_NAMES=convert((-8388608) using cp1251);
|
||||||
|
ERROR HY000: Unknown locale: '-8388608'
|
||||||
#
|
#
|
||||||
# End of 5.1 tests
|
# End of 5.1 tests
|
||||||
#
|
#
|
||||||
|
|
|
@ -44,6 +44,7 @@ master-bin.000001 # Query # # use `test`; INSERT INTO t4 VALUES ( NAME_CONST('in
|
||||||
master-bin.000001 # Query # # use `test`; DROP PROCEDURE bug18293
|
master-bin.000001 # Query # # use `test`; DROP PROCEDURE bug18293
|
||||||
master-bin.000001 # Query # # use `test`; DROP TABLE t4
|
master-bin.000001 # Query # # use `test`; DROP TABLE t4
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
call mtr.add_suppression("Error in Log_event::read_log_event\\\(\\\): 'Sanity check failed', data_len: 258, event_type: 49");
|
||||||
SHOW BINLOG EVENTS FROM 365;
|
SHOW BINLOG EVENTS FROM 365;
|
||||||
ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Wrong offset or I/O error
|
ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Wrong offset or I/O error
|
||||||
Bug#44352 UPPER/LOWER function doesn't work correctly on cp932 and sjis environment.
|
Bug#44352 UPPER/LOWER function doesn't work correctly on cp932 and sjis environment.
|
||||||
|
|
2
mysql-test/r/ctype_eucjpms.result
Executable file → Normal file
2
mysql-test/r/ctype_eucjpms.result
Executable file → Normal file
|
@ -9859,3 +9859,5 @@ hex(convert(_eucjpms 0xA5FE41 using ucs2))
|
||||||
select hex(convert(_eucjpms 0x8FABF841 using ucs2));
|
select hex(convert(_eucjpms 0x8FABF841 using ucs2));
|
||||||
hex(convert(_eucjpms 0x8FABF841 using ucs2))
|
hex(convert(_eucjpms 0x8FABF841 using ucs2))
|
||||||
003F0041
|
003F0041
|
||||||
|
set global LC_TIME_NAMES=convert((convert((0x63) using eucjpms)) using utf8);
|
||||||
|
ERROR HY000: Unknown locale: 'c'
|
||||||
|
|
|
@ -1683,3 +1683,18 @@ ARMENIAN CAPIT DA 2
|
||||||
ARMENIAN CAPIT ECH 2
|
ARMENIAN CAPIT ECH 2
|
||||||
ARMENIAN CAPIT ZA 2
|
ARMENIAN CAPIT ZA 2
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Start of 5.1 tests
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Bug#58371 Assertion failed: !s.uses_buffer_owned_by(this) with format string function
|
||||||
|
#
|
||||||
|
SET NAMES latin1;
|
||||||
|
DO CONVERT(CAST(SUBSTRING_INDEX(FORMAT(1,'1111'), FORMAT('','Zpq'),1)
|
||||||
|
AS BINARY(0)) USING utf8);
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect INTEGER value: 'Zpq'
|
||||||
|
Warning 1292 Truncated incorrect BINARY(0) value: '1.'
|
||||||
|
#
|
||||||
|
# End of 5.1 tests
|
||||||
|
#
|
||||||
|
|
|
@ -218,4 +218,10 @@ hex(a) hex(lower(a)) hex(upper(a))
|
||||||
8352835E 8352835E 8352835E
|
8352835E 8352835E 8352835E
|
||||||
8372835E 8372835E 8372835E
|
8372835E 8372835E 8372835E
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug#11766519 - Bug#59648: MY_STRTOLL10_MB2: ASSERTION `(*ENDPTR - S) % 2 == 0' FAILED.
|
||||||
|
#
|
||||||
|
SELECT QUOTE('ƒ\');
|
||||||
|
QUOTE('ƒ\')
|
||||||
|
'ƒ\'
|
||||||
# End of 5.1 tests
|
# End of 5.1 tests
|
||||||
|
|
|
@ -990,8 +990,8 @@ old_password(name)
|
||||||
????????
|
????????
|
||||||
select quote(name) from bug20536;
|
select quote(name) from bug20536;
|
||||||
quote(name)
|
quote(name)
|
||||||
????????
|
'test1'
|
||||||
????????????????
|
'\'test\\_2\''
|
||||||
drop table bug20536;
|
drop table bug20536;
|
||||||
set names ucs2;
|
set names ucs2;
|
||||||
ERROR 42000: Variable 'character_set_client' can't be set to the value of 'ucs2'
|
ERROR 42000: Variable 'character_set_client' can't be set to the value of 'ucs2'
|
||||||
|
@ -1238,6 +1238,17 @@ CREATE VIEW v1 AS SELECT 1 from t1
|
||||||
WHERE t1.b <=> (SELECT a FROM t1 WHERE a < SOME(SELECT '1'));
|
WHERE t1.b <=> (SELECT a FROM t1 WHERE a < SOME(SELECT '1'));
|
||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug#59648 my_strtoll10_mb2: Assertion `(*endptr - s) % 2 == 0' failed.
|
||||||
|
#
|
||||||
|
SELECT HEX(CHAR(COALESCE(NULL, CHAR(COUNT('%s') USING ucs2), 1, @@global.license, NULL) USING cp850));
|
||||||
|
HEX(CHAR(COALESCE(NULL, CHAR(COUNT('%s') USING ucs2), 1, @@global.license, NULL) USING cp850))
|
||||||
|
00
|
||||||
|
SELECT CONVERT(QUOTE(CHAR(0xf5 using ucs2)), SIGNED);
|
||||||
|
CONVERT(QUOTE(CHAR(0xf5 using ucs2)), SIGNED)
|
||||||
|
0
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect INTEGER value: ''
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
Start of 5.1 tests
|
Start of 5.1 tests
|
||||||
SET NAMES utf8;
|
SET NAMES utf8;
|
||||||
|
|
|
@ -724,7 +724,7 @@ utf8_general_ci utf8_general_ci
|
||||||
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysqltest1` /*!40100 DEFAULT CHARACTER SET cp866 */;
|
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysqltest1` /*!40100 DEFAULT CHARACTER SET cp866 */;
|
||||||
|
|
||||||
USE `mysqltest1`;
|
USE `mysqltest1`;
|
||||||
ALTER DATABASE mysqltest1 CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
ALTER DATABASE `mysqltest1` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
@ -757,8 +757,8 @@ DELIMITER ;
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
ALTER DATABASE mysqltest1 CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
ALTER DATABASE `mysqltest1` CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
||||||
ALTER DATABASE mysqltest1 CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
ALTER DATABASE `mysqltest1` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
@ -791,7 +791,7 @@ DELIMITER ;
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
ALTER DATABASE mysqltest1 CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
ALTER DATABASE `mysqltest1` CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
||||||
|
|
||||||
---> Dumping mysqltest1 to ddl_i18n_koi8r.sp.mysqltest1.sql
|
---> Dumping mysqltest1 to ddl_i18n_koi8r.sp.mysqltest1.sql
|
||||||
|
|
||||||
|
@ -800,7 +800,7 @@ ALTER DATABASE mysqltest1 CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
||||||
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysqltest2` /*!40100 DEFAULT CHARACTER SET cp866 */;
|
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysqltest2` /*!40100 DEFAULT CHARACTER SET cp866 */;
|
||||||
|
|
||||||
USE `mysqltest2`;
|
USE `mysqltest2`;
|
||||||
ALTER DATABASE mysqltest2 CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
ALTER DATABASE `mysqltest2` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
@ -833,8 +833,8 @@ DELIMITER ;
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
ALTER DATABASE mysqltest2 CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
ALTER DATABASE `mysqltest2` CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
||||||
ALTER DATABASE mysqltest2 CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
ALTER DATABASE `mysqltest2` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
@ -867,7 +867,7 @@ DELIMITER ;
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
ALTER DATABASE mysqltest2 CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
ALTER DATABASE `mysqltest2` CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
||||||
|
|
||||||
---> Dumping mysqltest2 to ddl_i18n_koi8r.sp.mysqltest2.sql
|
---> Dumping mysqltest2 to ddl_i18n_koi8r.sp.mysqltest2.sql
|
||||||
|
|
||||||
|
@ -1742,7 +1742,7 @@ CREATE TABLE `t1` (
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
INSERT INTO `t1` VALUES (1),(0),(1);
|
INSERT INTO `t1` VALUES (1),(0),(1);
|
||||||
ALTER DATABASE mysqltest1 CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
ALTER DATABASE `mysqltest1` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
@ -1770,8 +1770,8 @@ DELIMITER ;
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
ALTER DATABASE mysqltest1 CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
ALTER DATABASE `mysqltest1` CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
||||||
ALTER DATABASE mysqltest1 CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
ALTER DATABASE `mysqltest1` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
@ -1799,7 +1799,7 @@ DELIMITER ;
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
ALTER DATABASE mysqltest1 CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
ALTER DATABASE `mysqltest1` CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
||||||
|
|
||||||
---> Dumping mysqltest1 to ddl_i18n_koi8r.triggers.mysqltest1.sql
|
---> Dumping mysqltest1 to ddl_i18n_koi8r.triggers.mysqltest1.sql
|
||||||
|
|
||||||
|
@ -1821,7 +1821,7 @@ CREATE TABLE `t1` (
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
INSERT INTO `t1` VALUES (1),(0),(1);
|
INSERT INTO `t1` VALUES (1),(0),(1);
|
||||||
ALTER DATABASE mysqltest2 CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
ALTER DATABASE `mysqltest2` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
@ -1849,8 +1849,8 @@ DELIMITER ;
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
ALTER DATABASE mysqltest2 CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
ALTER DATABASE `mysqltest2` CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
||||||
ALTER DATABASE mysqltest2 CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
ALTER DATABASE `mysqltest2` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
@ -1878,7 +1878,7 @@ DELIMITER ;
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
ALTER DATABASE mysqltest2 CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
ALTER DATABASE `mysqltest2` CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
||||||
|
|
||||||
---> Dumping mysqltest2 to ddl_i18n_koi8r.triggers.mysqltest2.sql
|
---> Dumping mysqltest2 to ddl_i18n_koi8r.triggers.mysqltest2.sql
|
||||||
|
|
||||||
|
@ -2486,7 +2486,7 @@ CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysqltest1` /*!40100 DEFAULT CHARACTER
|
||||||
USE `mysqltest1`;
|
USE `mysqltest1`;
|
||||||
/*!50106 SET @save_time_zone= @@TIME_ZONE */ ;
|
/*!50106 SET @save_time_zone= @@TIME_ZONE */ ;
|
||||||
DELIMITER ;;
|
DELIMITER ;;
|
||||||
ALTER DATABASE mysqltest1 CHARACTER SET utf8 COLLATE utf8_unicode_ci ;;
|
ALTER DATABASE `mysqltest1` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;;
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;;
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;;
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;;
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;;
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;;
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;;
|
||||||
|
@ -2512,9 +2512,9 @@ END */ ;;
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;;
|
/*!50003 SET character_set_client = @saved_cs_client */ ;;
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;;
|
/*!50003 SET character_set_results = @saved_cs_results */ ;;
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;;
|
/*!50003 SET collation_connection = @saved_col_connection */ ;;
|
||||||
ALTER DATABASE mysqltest1 CHARACTER SET cp866 COLLATE cp866_general_ci ;;
|
ALTER DATABASE `mysqltest1` CHARACTER SET cp866 COLLATE cp866_general_ci ;;
|
||||||
DELIMITER ;;
|
DELIMITER ;;
|
||||||
ALTER DATABASE mysqltest1 CHARACTER SET utf8 COLLATE utf8_unicode_ci ;;
|
ALTER DATABASE `mysqltest1` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;;
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;;
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;;
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;;
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;;
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;;
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;;
|
||||||
|
@ -2540,7 +2540,7 @@ END */ ;;
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;;
|
/*!50003 SET character_set_client = @saved_cs_client */ ;;
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;;
|
/*!50003 SET character_set_results = @saved_cs_results */ ;;
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;;
|
/*!50003 SET collation_connection = @saved_col_connection */ ;;
|
||||||
ALTER DATABASE mysqltest1 CHARACTER SET cp866 COLLATE cp866_general_ci ;;
|
ALTER DATABASE `mysqltest1` CHARACTER SET cp866 COLLATE cp866_general_ci ;;
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
/*!50106 SET TIME_ZONE= @save_time_zone */ ;
|
/*!50106 SET TIME_ZONE= @save_time_zone */ ;
|
||||||
|
|
||||||
|
@ -2553,7 +2553,7 @@ CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysqltest2` /*!40100 DEFAULT CHARACTER
|
||||||
USE `mysqltest2`;
|
USE `mysqltest2`;
|
||||||
/*!50106 SET @save_time_zone= @@TIME_ZONE */ ;
|
/*!50106 SET @save_time_zone= @@TIME_ZONE */ ;
|
||||||
DELIMITER ;;
|
DELIMITER ;;
|
||||||
ALTER DATABASE mysqltest2 CHARACTER SET utf8 COLLATE utf8_unicode_ci ;;
|
ALTER DATABASE `mysqltest2` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;;
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;;
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;;
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;;
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;;
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;;
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;;
|
||||||
|
@ -2579,9 +2579,9 @@ END */ ;;
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;;
|
/*!50003 SET character_set_client = @saved_cs_client */ ;;
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;;
|
/*!50003 SET character_set_results = @saved_cs_results */ ;;
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;;
|
/*!50003 SET collation_connection = @saved_col_connection */ ;;
|
||||||
ALTER DATABASE mysqltest2 CHARACTER SET cp866 COLLATE cp866_general_ci ;;
|
ALTER DATABASE `mysqltest2` CHARACTER SET cp866 COLLATE cp866_general_ci ;;
|
||||||
DELIMITER ;;
|
DELIMITER ;;
|
||||||
ALTER DATABASE mysqltest2 CHARACTER SET utf8 COLLATE utf8_unicode_ci ;;
|
ALTER DATABASE `mysqltest2` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;;
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;;
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;;
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;;
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;;
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;;
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;;
|
||||||
|
@ -2607,7 +2607,7 @@ END */ ;;
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;;
|
/*!50003 SET character_set_client = @saved_cs_client */ ;;
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;;
|
/*!50003 SET character_set_results = @saved_cs_results */ ;;
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;;
|
/*!50003 SET collation_connection = @saved_col_connection */ ;;
|
||||||
ALTER DATABASE mysqltest2 CHARACTER SET cp866 COLLATE cp866_general_ci ;;
|
ALTER DATABASE `mysqltest2` CHARACTER SET cp866 COLLATE cp866_general_ci ;;
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
/*!50106 SET TIME_ZONE= @save_time_zone */ ;
|
/*!50106 SET TIME_ZONE= @save_time_zone */ ;
|
||||||
|
|
||||||
|
|
|
@ -724,7 +724,7 @@ utf8_general_ci utf8_general_ci
|
||||||
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysqltest1` /*!40100 DEFAULT CHARACTER SET cp866 */;
|
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysqltest1` /*!40100 DEFAULT CHARACTER SET cp866 */;
|
||||||
|
|
||||||
USE `mysqltest1`;
|
USE `mysqltest1`;
|
||||||
ALTER DATABASE mysqltest1 CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
ALTER DATABASE `mysqltest1` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
@ -757,8 +757,8 @@ DELIMITER ;
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
ALTER DATABASE mysqltest1 CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
ALTER DATABASE `mysqltest1` CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
||||||
ALTER DATABASE mysqltest1 CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
ALTER DATABASE `mysqltest1` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
@ -791,7 +791,7 @@ DELIMITER ;
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
ALTER DATABASE mysqltest1 CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
ALTER DATABASE `mysqltest1` CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
||||||
|
|
||||||
---> Dumping mysqltest1 to ddl_i18n_utf8sp.mysqltest1.sql
|
---> Dumping mysqltest1 to ddl_i18n_utf8sp.mysqltest1.sql
|
||||||
|
|
||||||
|
@ -800,7 +800,7 @@ ALTER DATABASE mysqltest1 CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
||||||
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysqltest2` /*!40100 DEFAULT CHARACTER SET cp866 */;
|
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysqltest2` /*!40100 DEFAULT CHARACTER SET cp866 */;
|
||||||
|
|
||||||
USE `mysqltest2`;
|
USE `mysqltest2`;
|
||||||
ALTER DATABASE mysqltest2 CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
ALTER DATABASE `mysqltest2` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
@ -833,8 +833,8 @@ DELIMITER ;
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
ALTER DATABASE mysqltest2 CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
ALTER DATABASE `mysqltest2` CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
||||||
ALTER DATABASE mysqltest2 CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
ALTER DATABASE `mysqltest2` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
@ -867,7 +867,7 @@ DELIMITER ;
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
ALTER DATABASE mysqltest2 CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
ALTER DATABASE `mysqltest2` CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
||||||
|
|
||||||
---> Dumping mysqltest2 to ddl_i18n_utf8sp.mysqltest2.sql
|
---> Dumping mysqltest2 to ddl_i18n_utf8sp.mysqltest2.sql
|
||||||
|
|
||||||
|
@ -1742,7 +1742,7 @@ CREATE TABLE `t1` (
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
INSERT INTO `t1` VALUES (1),(0),(1);
|
INSERT INTO `t1` VALUES (1),(0),(1);
|
||||||
ALTER DATABASE mysqltest1 CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
ALTER DATABASE `mysqltest1` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
@ -1770,8 +1770,8 @@ DELIMITER ;
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
ALTER DATABASE mysqltest1 CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
ALTER DATABASE `mysqltest1` CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
||||||
ALTER DATABASE mysqltest1 CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
ALTER DATABASE `mysqltest1` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
@ -1799,7 +1799,7 @@ DELIMITER ;
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
ALTER DATABASE mysqltest1 CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
ALTER DATABASE `mysqltest1` CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
||||||
|
|
||||||
---> Dumping mysqltest1 to ddl_i18n_utf8triggers.mysqltest1.sql
|
---> Dumping mysqltest1 to ddl_i18n_utf8triggers.mysqltest1.sql
|
||||||
|
|
||||||
|
@ -1821,7 +1821,7 @@ CREATE TABLE `t1` (
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
INSERT INTO `t1` VALUES (1),(0),(1);
|
INSERT INTO `t1` VALUES (1),(0),(1);
|
||||||
ALTER DATABASE mysqltest2 CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
ALTER DATABASE `mysqltest2` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
@ -1849,8 +1849,8 @@ DELIMITER ;
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
ALTER DATABASE mysqltest2 CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
ALTER DATABASE `mysqltest2` CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
||||||
ALTER DATABASE mysqltest2 CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
ALTER DATABASE `mysqltest2` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
@ -1878,7 +1878,7 @@ DELIMITER ;
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
ALTER DATABASE mysqltest2 CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
ALTER DATABASE `mysqltest2` CHARACTER SET cp866 COLLATE cp866_general_ci ;
|
||||||
|
|
||||||
---> Dumping mysqltest2 to ddl_i18n_utf8triggers.mysqltest2.sql
|
---> Dumping mysqltest2 to ddl_i18n_utf8triggers.mysqltest2.sql
|
||||||
|
|
||||||
|
@ -2486,7 +2486,7 @@ CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysqltest1` /*!40100 DEFAULT CHARACTER
|
||||||
USE `mysqltest1`;
|
USE `mysqltest1`;
|
||||||
/*!50106 SET @save_time_zone= @@TIME_ZONE */ ;
|
/*!50106 SET @save_time_zone= @@TIME_ZONE */ ;
|
||||||
DELIMITER ;;
|
DELIMITER ;;
|
||||||
ALTER DATABASE mysqltest1 CHARACTER SET utf8 COLLATE utf8_unicode_ci ;;
|
ALTER DATABASE `mysqltest1` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;;
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;;
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;;
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;;
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;;
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;;
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;;
|
||||||
|
@ -2512,9 +2512,9 @@ END */ ;;
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;;
|
/*!50003 SET character_set_client = @saved_cs_client */ ;;
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;;
|
/*!50003 SET character_set_results = @saved_cs_results */ ;;
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;;
|
/*!50003 SET collation_connection = @saved_col_connection */ ;;
|
||||||
ALTER DATABASE mysqltest1 CHARACTER SET cp866 COLLATE cp866_general_ci ;;
|
ALTER DATABASE `mysqltest1` CHARACTER SET cp866 COLLATE cp866_general_ci ;;
|
||||||
DELIMITER ;;
|
DELIMITER ;;
|
||||||
ALTER DATABASE mysqltest1 CHARACTER SET utf8 COLLATE utf8_unicode_ci ;;
|
ALTER DATABASE `mysqltest1` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;;
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;;
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;;
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;;
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;;
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;;
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;;
|
||||||
|
@ -2540,7 +2540,7 @@ END */ ;;
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;;
|
/*!50003 SET character_set_client = @saved_cs_client */ ;;
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;;
|
/*!50003 SET character_set_results = @saved_cs_results */ ;;
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;;
|
/*!50003 SET collation_connection = @saved_col_connection */ ;;
|
||||||
ALTER DATABASE mysqltest1 CHARACTER SET cp866 COLLATE cp866_general_ci ;;
|
ALTER DATABASE `mysqltest1` CHARACTER SET cp866 COLLATE cp866_general_ci ;;
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
/*!50106 SET TIME_ZONE= @save_time_zone */ ;
|
/*!50106 SET TIME_ZONE= @save_time_zone */ ;
|
||||||
|
|
||||||
|
@ -2553,7 +2553,7 @@ CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysqltest2` /*!40100 DEFAULT CHARACTER
|
||||||
USE `mysqltest2`;
|
USE `mysqltest2`;
|
||||||
/*!50106 SET @save_time_zone= @@TIME_ZONE */ ;
|
/*!50106 SET @save_time_zone= @@TIME_ZONE */ ;
|
||||||
DELIMITER ;;
|
DELIMITER ;;
|
||||||
ALTER DATABASE mysqltest2 CHARACTER SET utf8 COLLATE utf8_unicode_ci ;;
|
ALTER DATABASE `mysqltest2` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;;
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;;
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;;
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;;
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;;
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;;
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;;
|
||||||
|
@ -2579,9 +2579,9 @@ END */ ;;
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;;
|
/*!50003 SET character_set_client = @saved_cs_client */ ;;
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;;
|
/*!50003 SET character_set_results = @saved_cs_results */ ;;
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;;
|
/*!50003 SET collation_connection = @saved_col_connection */ ;;
|
||||||
ALTER DATABASE mysqltest2 CHARACTER SET cp866 COLLATE cp866_general_ci ;;
|
ALTER DATABASE `mysqltest2` CHARACTER SET cp866 COLLATE cp866_general_ci ;;
|
||||||
DELIMITER ;;
|
DELIMITER ;;
|
||||||
ALTER DATABASE mysqltest2 CHARACTER SET utf8 COLLATE utf8_unicode_ci ;;
|
ALTER DATABASE `mysqltest2` CHARACTER SET utf8 COLLATE utf8_unicode_ci ;;
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;;
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;;
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;;
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;;
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;;
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;;
|
||||||
|
@ -2607,7 +2607,7 @@ END */ ;;
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;;
|
/*!50003 SET character_set_client = @saved_cs_client */ ;;
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;;
|
/*!50003 SET character_set_results = @saved_cs_results */ ;;
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;;
|
/*!50003 SET collation_connection = @saved_col_connection */ ;;
|
||||||
ALTER DATABASE mysqltest2 CHARACTER SET cp866 COLLATE cp866_general_ci ;;
|
ALTER DATABASE `mysqltest2` CHARACTER SET cp866 COLLATE cp866_general_ci ;;
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
/*!50106 SET TIME_ZONE= @save_time_zone */ ;
|
/*!50106 SET TIME_ZONE= @save_time_zone */ ;
|
||||||
|
|
||||||
|
|
|
@ -746,6 +746,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;
|
||||||
|
|
19
mysql-test/r/func_encrypt_ucs2.result
Normal file
19
mysql-test/r/func_encrypt_ucs2.result
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
#
|
||||||
|
# Bug#59648 my_strtoll10_mb2: Assertion `(*endptr - s) % 2 == 0' failed.
|
||||||
|
#
|
||||||
|
SELECT CHAR_LENGTH(DES_ENCRYPT(0, CHAR('1' USING ucs2)));
|
||||||
|
CHAR_LENGTH(DES_ENCRYPT(0, CHAR('1' USING ucs2)))
|
||||||
|
9
|
||||||
|
SELECT CONVERT(DES_ENCRYPT(0, CHAR('1' USING ucs2)),UNSIGNED);
|
||||||
|
CONVERT(DES_ENCRYPT(0, CHAR('1' USING ucs2)),UNSIGNED)
|
||||||
|
0
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect INTEGER value: '?T?iK?j??'
|
||||||
|
SELECT CHAR_LENGTH(DES_DECRYPT(0xFF0DC9FC9537CA75F4, CHAR('1' USING ucs2)));
|
||||||
|
CHAR_LENGTH(DES_DECRYPT(0xFF0DC9FC9537CA75F4, CHAR('1' USING ucs2)))
|
||||||
|
4
|
||||||
|
SELECT CONVERT(DES_DECRYPT(0xFF0DC9FC9537CA75F4, CHAR('1' using ucs2)), UNSIGNED);
|
||||||
|
CONVERT(DES_DECRYPT(0xFF0DC9FC9537CA75F4, CHAR('1' using ucs2)), UNSIGNED)
|
||||||
|
0
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect INTEGER value: 'test'
|
|
@ -1737,4 +1737,24 @@ 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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue