1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

Auto merge

This commit is contained in:
He Zhenxing
2008-08-06 18:41:27 +08:00
233 changed files with 11067 additions and 16392 deletions

View File

@ -2095,10 +2095,13 @@ sql/.libs/udf_example.lai
sql/.libs/udf_example.so.0 sql/.libs/udf_example.so.0
sql/.libs/udf_example.so.0.0.0 sql/.libs/udf_example.so.0.0.0
sql/client.c sql/client.c
sql/Doxyfile
sql/f.c sql/f.c
sql/gen_lex_hash sql/gen_lex_hash
sql/gmon.out sql/gmon.out
sql/handlerton.cc sql/handlerton.cc
sql/html
sql/latex
sql/lex_hash.h sql/lex_hash.h
sql/link_sources sql/link_sources
sql/max/* sql/max/*

View File

@ -2101,6 +2101,37 @@ static bool add_line(String &buffer,char *line,char *in_string,
continue; continue;
} }
} }
else if (!*ml_comment && !*in_string &&
(end_of_line - pos) >= 10 &&
!my_strnncoll(charset_info, (uchar*) pos, 10,
(const uchar*) "delimiter ", 10))
{
// Flush previously accepted characters
if (out != line)
{
buffer.append(line, (uint32) (out - line));
out= line;
}
// Flush possible comments in the buffer
if (!buffer.is_empty())
{
if (com_go(&buffer, 0) > 0) // < 0 is not fatal
DBUG_RETURN(1);
buffer.length(0);
}
/*
Delimiter wants the get rest of the given line as argument to
allow one to change ';' to ';;' and back
*/
buffer.append(pos);
if (com_delimiter(&buffer, pos) > 0)
DBUG_RETURN(1);
buffer.length(0);
break;
}
else if (!*ml_comment && !*in_string && is_prefix(pos, delimiter)) else if (!*ml_comment && !*in_string && is_prefix(pos, delimiter))
{ {
// Found a statement. Continue parsing after the delimiter // Found a statement. Continue parsing after the delimiter

View File

@ -171,6 +171,8 @@ static ulonglong timer_now(void);
static ulonglong progress_start= 0; static ulonglong progress_start= 0;
static ulong connection_retry_sleep= 100000; /* Microseconds */
/* Precompiled re's */ /* Precompiled re's */
static my_regex_t ps_re; /* the query can be run using PS protocol */ static my_regex_t ps_re; /* the query can be run using PS protocol */
static my_regex_t sp_re; /* the query can be run as a SP */ static my_regex_t sp_re; /* the query can be run as a SP */
@ -277,6 +279,7 @@ enum enum_commands {
Q_WRITE_FILE, Q_COPY_FILE, Q_PERL, Q_DIE, Q_EXIT, Q_SKIP, Q_WRITE_FILE, Q_COPY_FILE, Q_PERL, Q_DIE, Q_EXIT, Q_SKIP,
Q_CHMOD_FILE, Q_APPEND_FILE, Q_CAT_FILE, Q_DIFF_FILES, Q_CHMOD_FILE, Q_APPEND_FILE, Q_CAT_FILE, Q_DIFF_FILES,
Q_SEND_QUIT, Q_CHANGE_USER, Q_MKDIR, Q_RMDIR, Q_SEND_QUIT, Q_CHANGE_USER, Q_MKDIR, Q_RMDIR,
Q_LIST_FILES, Q_LIST_FILES_WRITE_FILE, Q_LIST_FILES_APPEND_FILE,
Q_SEND_SHUTDOWN, Q_SHUTDOWN_SERVER, Q_SEND_SHUTDOWN, Q_SHUTDOWN_SERVER,
Q_UNKNOWN, /* Unknown command. */ Q_UNKNOWN, /* Unknown command. */
@ -369,6 +372,9 @@ const char *command_names[]=
"change_user", "change_user",
"mkdir", "mkdir",
"rmdir", "rmdir",
"list_files",
"list_files_write_file",
"list_files_append_file",
"send_shutdown", "send_shutdown",
"shutdown_server", "shutdown_server",
@ -496,6 +502,9 @@ void replace_dynstr_append(DYNAMIC_STRING *ds, const char *val);
void replace_dynstr_append_uint(DYNAMIC_STRING *ds, uint val); void replace_dynstr_append_uint(DYNAMIC_STRING *ds, uint val);
void dynstr_append_sorted(DYNAMIC_STRING* ds, DYNAMIC_STRING* ds_input); void dynstr_append_sorted(DYNAMIC_STRING* ds, DYNAMIC_STRING* ds_input);
static int match_expected_error(struct st_command *command,
unsigned int err_errno,
const char *err_sqlstate);
void handle_error(struct st_command*, void handle_error(struct st_command*,
unsigned int err_errno, const char *err_error, unsigned int err_errno, const char *err_error,
const char *err_sqlstate, DYNAMIC_STRING *ds); const char *err_sqlstate, DYNAMIC_STRING *ds);
@ -852,29 +861,25 @@ void check_command_args(struct st_command *command,
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
void handle_command_error(struct st_command *command, uint error) void handle_command_error(struct st_command *command, uint error)
{ {
DBUG_ENTER("handle_command_error"); DBUG_ENTER("handle_command_error");
DBUG_PRINT("enter", ("error: %d", error)); DBUG_PRINT("enter", ("error: %d", error));
if (error != 0) if (error != 0)
{ {
uint i; int i;
if (command->abort_on_error) if (command->abort_on_error)
die("command \"%.*s\" failed with error %d", die("command \"%.*s\" failed with error %d",
command->first_word_len, command->query, error); command->first_word_len, command->query, error);
for (i= 0; i < command->expected_errors.count; i++)
i= match_expected_error(command, error, NULL);
if (i >= 0)
{ {
DBUG_PRINT("info", ("expected error: %d", DBUG_PRINT("info", ("command \"%.*s\" failed with expected error: %d",
command->expected_errors.err[i].code.errnum)); command->first_word_len, command->query, error));
if ((command->expected_errors.err[i].type == ERR_ERRNO) && DBUG_VOID_RETURN;
(command->expected_errors.err[i].code.errnum == error))
{
DBUG_PRINT("info", ("command \"%.*s\" failed with expected error: %d",
command->first_word_len, command->query, error));
DBUG_VOID_RETURN;
}
} }
die("command \"%.*s\" failed with wrong error: %d", die("command \"%.*s\" failed with wrong error: %d",
command->first_word_len, command->query, error); command->first_word_len, command->query, error);
@ -2499,8 +2504,8 @@ void do_exec(struct st_command *command)
error= pclose(res_file); error= pclose(res_file);
if (error > 0) if (error > 0)
{ {
uint status= WEXITSTATUS(error), i; uint status= WEXITSTATUS(error);
my_bool ok= 0; int i;
if (command->abort_on_error) if (command->abort_on_error)
{ {
@ -2512,19 +2517,13 @@ void do_exec(struct st_command *command)
DBUG_PRINT("info", DBUG_PRINT("info",
("error: %d, status: %d", error, status)); ("error: %d, status: %d", error, status));
for (i= 0; i < command->expected_errors.count; i++)
{ i= match_expected_error(command, status, NULL);
DBUG_PRINT("info", ("expected error: %d",
command->expected_errors.err[i].code.errnum)); if (i >= 0)
if ((command->expected_errors.err[i].type == ERR_ERRNO) && DBUG_PRINT("info", ("command \"%s\" failed with expected error: %d",
(command->expected_errors.err[i].code.errnum == status)) command->first_argument, status));
{ else
ok= 1;
DBUG_PRINT("info", ("command \"%s\" failed with expected error: %d",
command->first_argument, status));
}
}
if (!ok)
{ {
dynstr_free(&ds_cmd); dynstr_free(&ds_cmd);
die("command \"%s\" failed with wrong error: %d", die("command \"%s\" failed with wrong error: %d",
@ -2874,6 +2873,126 @@ void do_rmdir(struct st_command *command)
} }
/*
SYNOPSIS
get_list_files
ds output
ds_dirname dir to list
ds_wild wild-card file pattern (can be empty)
DESCRIPTION
list all entries in directory (matching ds_wild if given)
*/
static int get_list_files(DYNAMIC_STRING *ds, const DYNAMIC_STRING *ds_dirname,
const DYNAMIC_STRING *ds_wild)
{
uint i;
MY_DIR *dir_info;
FILEINFO *file;
DBUG_ENTER("get_list_files");
DBUG_PRINT("info", ("listing directory: %s", ds_dirname->str));
/* Note that my_dir sorts the list if not given any flags */
if (!(dir_info= my_dir(ds_dirname->str, MYF(0))))
DBUG_RETURN(1);
for (i= 0; i < (uint) dir_info->number_off_files; i++)
{
file= dir_info->dir_entry + i;
if (file->name[0] == '.' &&
(file->name[1] == '\0' ||
(file->name[1] == '.' && file->name[2] == '\0')))
continue; /* . or .. */
if (ds_wild && ds_wild->length &&
wild_compare(file->name, ds_wild->str, 0))
continue;
dynstr_append(ds, file->name);
dynstr_append(ds, "\n");
}
my_dirend(dir_info);
DBUG_RETURN(0);
}
/*
SYNOPSIS
do_list_files
command called command
DESCRIPTION
list_files <dir_name> [<file_name>]
List files and directories in directory <dir_name> (like `ls`)
[Matching <file_name>, where wild-cards are allowed]
*/
static void do_list_files(struct st_command *command)
{
int error;
static DYNAMIC_STRING ds_dirname;
static DYNAMIC_STRING ds_wild;
const struct command_arg list_files_args[] = {
{"dirname", ARG_STRING, TRUE, &ds_dirname, "Directory to list"},
{"file", ARG_STRING, FALSE, &ds_wild, "Filename (incl. wildcard)"}
};
DBUG_ENTER("do_list_files");
check_command_args(command, command->first_argument,
list_files_args,
sizeof(list_files_args)/sizeof(struct command_arg), ' ');
error= get_list_files(&ds_res, &ds_dirname, &ds_wild);
handle_command_error(command, error);
dynstr_free(&ds_dirname);
dynstr_free(&ds_wild);
DBUG_VOID_RETURN;
}
/*
SYNOPSIS
do_list_files_write_file_command
command called command
append append file, or create new
DESCRIPTION
list_files_{write|append}_file <filename> <dir_name> [<match_file>]
List files and directories in directory <dir_name> (like `ls`)
[Matching <match_file>, where wild-cards are allowed]
Note: File will be truncated if exists and append is not true.
*/
static void do_list_files_write_file_command(struct st_command *command,
my_bool append)
{
int error;
static DYNAMIC_STRING ds_content;
static DYNAMIC_STRING ds_filename;
static DYNAMIC_STRING ds_dirname;
static DYNAMIC_STRING ds_wild;
const struct command_arg list_files_args[] = {
{"filename", ARG_STRING, TRUE, &ds_filename, "Filename for write"},
{"dirname", ARG_STRING, TRUE, &ds_dirname, "Directory to list"},
{"file", ARG_STRING, FALSE, &ds_wild, "Filename (incl. wildcard)"}
};
DBUG_ENTER("do_list_files_write_file");
check_command_args(command, command->first_argument,
list_files_args,
sizeof(list_files_args)/sizeof(struct command_arg), ' ');
init_dynamic_string(&ds_content, "", 1024, 1024);
error= get_list_files(&ds_content, &ds_dirname, &ds_wild);
handle_command_error(command, error);
str_to_file2(ds_filename.str, ds_content.str, ds_content.length, append);
dynstr_free(&ds_content);
dynstr_free(&ds_filename);
dynstr_free(&ds_dirname);
dynstr_free(&ds_wild);
DBUG_VOID_RETURN;
}
/* /*
Read characters from line buffer or file. This is needed to allow Read characters from line buffer or file. This is needed to allow
my_ungetc() to buffer MAX_DELIMITER_LENGTH characters for a file my_ungetc() to buffer MAX_DELIMITER_LENGTH characters for a file
@ -4343,7 +4462,6 @@ void safe_connect(MYSQL* mysql, const char *name, const char *host,
int port, const char *sock) int port, const char *sock)
{ {
int failed_attempts= 0; int failed_attempts= 0;
static ulong connection_retry_sleep= 100000; /* Microseconds */
DBUG_ENTER("safe_connect"); DBUG_ENTER("safe_connect");
while(!mysql_real_connect(mysql, host,user, pass, db, port, sock, while(!mysql_real_connect(mysql, host,user, pass, db, port, sock,
@ -4410,6 +4528,7 @@ int connect_n_handle_errors(struct st_command *command,
const char* db, int port, const char* sock) const char* db, int port, const char* sock)
{ {
DYNAMIC_STRING *ds; DYNAMIC_STRING *ds;
int failed_attempts= 0;
ds= &ds_res; ds= &ds_res;
@ -4438,9 +4557,41 @@ int connect_n_handle_errors(struct st_command *command,
dynstr_append_mem(ds, delimiter, delimiter_length); dynstr_append_mem(ds, delimiter, delimiter_length);
dynstr_append_mem(ds, "\n", 1); dynstr_append_mem(ds, "\n", 1);
} }
if (!mysql_real_connect(con, host, user, pass, db, port, sock ? sock: 0, while (!mysql_real_connect(con, host, user, pass, db, port, sock ? sock: 0,
CLIENT_MULTI_STATEMENTS)) CLIENT_MULTI_STATEMENTS))
{ {
/*
If we have used up all our connections check whether this
is expected (by --error). If so, handle the error right away.
Otherwise, give it some extra time to rule out race-conditions.
If extra-time doesn't help, we have an unexpected error and
must abort -- just proceeding to handle_error() when second
and third chances are used up will handle that for us.
There are various user-limits of which only max_user_connections
and max_connections_per_hour apply at connect time. For the
the second to create a race in our logic, we'd need a limits
test that runs without a FLUSH for longer than an hour, so we'll
stay clear of trying to work out which exact user-limit was
exceeded.
*/
if (((mysql_errno(con) == ER_TOO_MANY_USER_CONNECTIONS) ||
(mysql_errno(con) == ER_USER_LIMIT_REACHED)) &&
(failed_attempts++ < opt_max_connect_retries))
{
int i;
i= match_expected_error(command, mysql_errno(con), mysql_sqlstate(con));
if (i >= 0)
goto do_handle_error; /* expected error, handle */
my_sleep(connection_retry_sleep); /* unexpected error, wait */
continue; /* and give it 1 more chance */
}
do_handle_error:
var_set_errno(mysql_errno(con)); var_set_errno(mysql_errno(con));
handle_error(command, mysql_errno(con), mysql_error(con), handle_error(command, mysql_errno(con), mysql_error(con),
mysql_sqlstate(con), ds); mysql_sqlstate(con), ds);
@ -6202,6 +6353,56 @@ end:
} }
/*
Check whether given error is in list of expected errors
SYNOPSIS
match_expected_error()
PARAMETERS
command the current command (and its expect-list)
err_errno error number of the error that actually occurred
err_sqlstate SQL-state that was thrown, or NULL for impossible
(file-ops, diff, etc.)
RETURNS
-1 for not in list, index in list of expected errors otherwise
NOTE
If caller needs to know whether the list was empty, they should
check command->expected_errors.count.
*/
static int match_expected_error(struct st_command *command,
unsigned int err_errno,
const char *err_sqlstate)
{
uint i;
for (i= 0 ; (uint) i < command->expected_errors.count ; i++)
{
if ((command->expected_errors.err[i].type == ERR_ERRNO) &&
(command->expected_errors.err[i].code.errnum == err_errno))
return i;
if (command->expected_errors.err[i].type == ERR_SQLSTATE)
{
/*
NULL is quite likely, but not in conjunction with a SQL-state expect!
*/
if (unlikely(err_sqlstate == NULL))
die("expecting a SQL-state (%s) from query '%s' which cannot produce one...",
command->expected_errors.err[i].code.sqlstate, command->query);
if (strncmp(command->expected_errors.err[i].code.sqlstate,
err_sqlstate, SQLSTATE_LENGTH) == 0)
return i;
}
}
return -1;
}
/* /*
Handle errors which occurred during execution Handle errors which occurred during execution
@ -6222,7 +6423,7 @@ void handle_error(struct st_command *command,
unsigned int err_errno, const char *err_error, unsigned int err_errno, const char *err_error,
const char *err_sqlstate, DYNAMIC_STRING *ds) const char *err_sqlstate, DYNAMIC_STRING *ds)
{ {
uint i; int i;
DBUG_ENTER("handle_error"); DBUG_ENTER("handle_error");
@ -6248,34 +6449,30 @@ void handle_error(struct st_command *command,
DBUG_PRINT("info", ("expected_errors.count: %d", DBUG_PRINT("info", ("expected_errors.count: %d",
command->expected_errors.count)); command->expected_errors.count));
for (i= 0 ; (uint) i < command->expected_errors.count ; i++)
i= match_expected_error(command, err_errno, err_sqlstate);
if (i >= 0)
{ {
if (((command->expected_errors.err[i].type == ERR_ERRNO) && if (!disable_result_log)
(command->expected_errors.err[i].code.errnum == err_errno)) ||
((command->expected_errors.err[i].type == ERR_SQLSTATE) &&
(strncmp(command->expected_errors.err[i].code.sqlstate,
err_sqlstate, SQLSTATE_LENGTH) == 0)))
{ {
if (!disable_result_log) if (command->expected_errors.count == 1)
{ {
if (command->expected_errors.count == 1) /* Only log error if there is one possible error */
{ dynstr_append_mem(ds, "ERROR ", 6);
/* Only log error if there is one possible error */ replace_dynstr_append(ds, err_sqlstate);
dynstr_append_mem(ds, "ERROR ", 6); dynstr_append_mem(ds, ": ", 2);
replace_dynstr_append(ds, err_sqlstate); replace_dynstr_append(ds, err_error);
dynstr_append_mem(ds, ": ", 2); dynstr_append_mem(ds,"\n",1);
replace_dynstr_append(ds, err_error);
dynstr_append_mem(ds,"\n",1);
}
/* Don't log error if we may not get an error */
else if (command->expected_errors.err[0].type == ERR_SQLSTATE ||
(command->expected_errors.err[0].type == ERR_ERRNO &&
command->expected_errors.err[0].code.errnum != 0))
dynstr_append(ds,"Got one of the listed errors\n");
} }
/* OK */ /* Don't log error if we may not get an error */
DBUG_VOID_RETURN; else if (command->expected_errors.err[0].type == ERR_SQLSTATE ||
(command->expected_errors.err[0].type == ERR_ERRNO &&
command->expected_errors.err[0].code.errnum != 0))
dynstr_append(ds,"Got one of the listed errors\n");
} }
/* OK */
DBUG_VOID_RETURN;
} }
DBUG_PRINT("info",("i: %d expected_errors: %d", i, DBUG_PRINT("info",("i: %d expected_errors: %d", i,
@ -6290,7 +6487,7 @@ void handle_error(struct st_command *command,
dynstr_append_mem(ds, "\n", 1); dynstr_append_mem(ds, "\n", 1);
} }
if (i) if (command->expected_errors.count > 0)
{ {
if (command->expected_errors.err[0].type == ERR_ERRNO) if (command->expected_errors.err[0].type == ERR_ERRNO)
die("query '%s' failed with wrong errno %d: '%s', instead of %d...", die("query '%s' failed with wrong errno %d: '%s', instead of %d...",
@ -7324,6 +7521,13 @@ int main(int argc, char **argv)
case Q_REMOVE_FILE: do_remove_file(command); break; case Q_REMOVE_FILE: do_remove_file(command); break;
case Q_MKDIR: do_mkdir(command); break; case Q_MKDIR: do_mkdir(command); break;
case Q_RMDIR: do_rmdir(command); break; case Q_RMDIR: do_rmdir(command); break;
case Q_LIST_FILES: do_list_files(command); break;
case Q_LIST_FILES_WRITE_FILE:
do_list_files_write_file_command(command, FALSE);
break;
case Q_LIST_FILES_APPEND_FILE:
do_list_files_write_file_command(command, TRUE);
break;
case Q_FILE_EXIST: do_file_exist(command); break; case Q_FILE_EXIST: do_file_exist(command); break;
case Q_WRITE_FILE: do_write_file(command); break; case Q_WRITE_FILE: do_write_file(command); break;
case Q_APPEND_FILE: do_append_file(command); break; case Q_APPEND_FILE: do_append_file(command); break;

View File

@ -617,19 +617,19 @@ fi
AC_MSG_CHECKING(whether features provided by the user community should be included.) AC_MSG_CHECKING(whether features provided by the user community should be included.)
AC_ARG_ENABLE(community-features, AC_ARG_ENABLE(community-features,
AC_HELP_STRING( AC_HELP_STRING(
[--enable-community-features], [--disable-community-features],
[Enable additional features provided by the user community.]), [Disable additional features provided by the user community.]),
[ ENABLE_COMMUNITY_FEATURES=$enableval ], [ ENABLE_COMMUNITY_FEATURES=$enableval ],
[ ENABLE_COMMUNITY_FEATURES=no ] [ ENABLE_COMMUNITY_FEATURES=yes ]
) )
if test "$ENABLE_COMMUNITY_FEATURES" = "yes" if test "$ENABLE_COMMUNITY_FEATURES" = "yes"
then then
AC_DEFINE([COMMUNITY_SERVER], [1], AC_DEFINE([COMMUNITY_SERVER], [1],
[Whether features provided by the user community should be included]) [Whether features provided by the user community should be included])
AC_MSG_RESULT([yes, community server]) AC_MSG_RESULT([yes])
else else
AC_MSG_RESULT([no, enterprise server]) AC_MSG_RESULT([no])
fi fi
AC_ARG_WITH(server-suffix, AC_ARG_WITH(server-suffix,

View File

@ -693,6 +693,7 @@ extern char * fn_format(char * to,const char *name,const char *dir,
const char *form, uint flag); const char *form, uint flag);
extern size_t strlength(const char *str); extern size_t strlength(const char *str);
extern void pack_dirname(char * to,const char *from); extern void pack_dirname(char * to,const char *from);
extern size_t normalize_dirname(char * to, const char *from);
extern size_t unpack_dirname(char * to,const char *from); extern size_t unpack_dirname(char * to,const char *from);
extern size_t cleanup_dirname(char * to,const char *from); extern size_t cleanup_dirname(char * to,const char *from);
extern size_t system_filename(char * to,const char *from); extern size_t system_filename(char * to,const char *from);

View File

@ -447,7 +447,8 @@ int emb_load_querycache_result(THD *thd, Querycache_stream *src)
if (thd->protocol == &thd->protocol_binary) if (thd->protocol == &thd->protocol_binary)
{ {
uint length; uint length;
row= (MYSQL_ROWS *)alloc_root(&data->alloc, rows * sizeof(MYSQL_ROWS)); row= (MYSQL_ROWS *)alloc_root(&data->alloc,
(size_t) (rows * sizeof(MYSQL_ROWS)));
end_row= row + rows; end_row= row + rows;
data->data= row; data->data= row;

View File

@ -259,7 +259,7 @@ DELETE FROM t1;
query_vertical SELECT COUNT(*) FROM t1 ORDER BY c1,c2; query_vertical SELECT COUNT(*) FROM t1 ORDER BY c1,c2;
sync_slave_with_master; sync_slave_with_master;
set @@global.slave_exec_mode= default; set @@global.slave_exec_mode= default;
let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1); let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Error, 1);
disable_query_log; disable_query_log;
eval SELECT "$last_error" AS Last_SQL_Error; eval SELECT "$last_error" AS Last_SQL_Error;
enable_query_log; enable_query_log;
@ -288,3 +288,150 @@ SELECT * FROM t1;
connection master; connection master;
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7,t8; DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7,t8;
sync_slave_with_master; sync_slave_with_master;
#
# BUG#37426: RBR breaks for CHAR() UTF8 fields > 85 chars
#
# We have 4 combinations to test with respect to the field length
# (i.e., the number of bytes) of the CHAR fields:
#
# 1. Replicating from CHAR<256 to CHAR<256
# 2. Replicating from CHAR<256 to CHAR>255
# 3. Replicating from CHAR>255 to CHAR<256
# 4. Replicating from CHAR>255 to CHAR>255
# We also make a special case of using the max size of a field on the
# master, i.e. CHAR(255) in UTF-8, giving another three cases.
#
# 5. Replicating UTF-8 CHAR(255) to CHAR(<256)
# 6. Replicating UTF-8 CHAR(255) to CHAR(>255)
# 7. Replicating UTF-8 CHAR(255) to CHAR(255) UTF-8
connection master;
CREATE TABLE t1 (i INT NOT NULL,
c CHAR(16) CHARACTER SET utf8 NOT NULL,
j INT NOT NULL);
CREATE TABLE t2 (i INT NOT NULL,
c CHAR(16) CHARACTER SET utf8 NOT NULL,
j INT NOT NULL);
sync_slave_with_master;
ALTER TABLE t2 MODIFY c CHAR(128) CHARACTER SET utf8 NOT NULL;
connection master;
CREATE TABLE t3 (i INT NOT NULL,
c CHAR(128) CHARACTER SET utf8 NOT NULL,
j INT NOT NULL);
sync_slave_with_master;
ALTER TABLE t3 MODIFY c CHAR(16) CHARACTER SET utf8 NOT NULL;
connection master;
CREATE TABLE t4 (i INT NOT NULL,
c CHAR(128) CHARACTER SET utf8 NOT NULL,
j INT NOT NULL);
CREATE TABLE t5 (i INT NOT NULL,
c CHAR(255) CHARACTER SET utf8 NOT NULL,
j INT NOT NULL);
sync_slave_with_master;
ALTER TABLE t5 MODIFY c CHAR(16) CHARACTER SET utf8 NOT NULL;
connection master;
CREATE TABLE t6 (i INT NOT NULL,
c CHAR(255) CHARACTER SET utf8 NOT NULL,
j INT NOT NULL);
sync_slave_with_master;
ALTER TABLE t6 MODIFY c CHAR(128) CHARACTER SET utf8 NOT NULL;
connection master;
CREATE TABLE t7 (i INT NOT NULL,
c CHAR(255) CHARACTER SET utf8 NOT NULL,
j INT NOT NULL);
--echo [expecting slave to replicate correctly]
connection master;
INSERT INTO t1 VALUES (1, "", 1);
INSERT INTO t1 VALUES (2, repeat(_utf8'a', 16), 2);
let $diff_table_1=master:test.t1;
let $diff_table_2=slave:test.t1;
source include/diff_tables.inc;
--echo [expecting slave to replicate correctly]
connection master;
INSERT INTO t2 VALUES (1, "", 1);
INSERT INTO t2 VALUES (2, repeat(_utf8'a', 16), 2);
let $diff_table_1=master:test.t2;
let $diff_table_2=slave:test.t2;
source include/diff_tables.inc;
--echo [expecting slave to stop]
connection master;
INSERT INTO t3 VALUES (1, "", 1);
INSERT INTO t3 VALUES (2, repeat(_utf8'a', 128), 2);
connection slave;
source include/wait_for_slave_sql_to_stop.inc;
let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Error, 1);
disable_query_log;
eval SELECT "$last_error" AS Last_SQL_Error;
enable_query_log;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=8;
START SLAVE;
source include/wait_for_slave_to_start.inc;
--echo [expecting slave to replicate correctly]
connection master;
INSERT INTO t4 VALUES (1, "", 1);
INSERT INTO t4 VALUES (2, repeat(_utf8'a', 128), 2);
let $diff_table_1=master:test.t4;
let $diff_table_2=slave:test.t4;
source include/diff_tables.inc;
--echo [expecting slave to stop]
connection master;
INSERT INTO t5 VALUES (1, "", 1);
INSERT INTO t5 VALUES (2, repeat(_utf8'a', 255), 2);
connection slave;
source include/wait_for_slave_sql_to_stop.inc;
let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Error, 1);
disable_query_log;
eval SELECT "$last_error" AS Last_SQL_Error;
enable_query_log;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=8;
START SLAVE;
source include/wait_for_slave_to_start.inc;
--echo [expecting slave to stop]
connection master;
INSERT INTO t6 VALUES (1, "", 1);
INSERT INTO t6 VALUES (2, repeat(_utf8'a', 255), 2);
connection slave;
source include/wait_for_slave_sql_to_stop.inc;
let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Error, 1);
disable_query_log;
eval SELECT "$last_error" AS Last_SQL_Error;
enable_query_log;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=8;
START SLAVE;
source include/wait_for_slave_to_start.inc;
--echo [expecting slave to replicate correctly]
connection master;
INSERT INTO t7 VALUES (1, "", 1);
INSERT INTO t7 VALUES (2, repeat(_utf8'a', 255), 2);
let $diff_table_1=master:test.t7;
let $diff_table_2=slave:test.t7;
source include/diff_tables.inc;
connection master;
drop table t1, t2, t3, t4, t5, t6, t7;
sync_slave_with_master;

View File

@ -1,4 +1,4 @@
-- require r/have_big5.require -- require r/have_big5.require
disable_query_log; disable_query_log;
show collation like "big5_chinese_ci"; show collation like 'big5_chinese_ci';
enable_query_log; enable_query_log;

View File

@ -2,5 +2,5 @@
-- require r/have_binlog_format_mixed.require -- require r/have_binlog_format_mixed.require
disable_query_log; disable_query_log;
show variables like "binlog_format"; show variables like 'binlog_format';
enable_query_log; enable_query_log;

View File

@ -3,5 +3,5 @@
--require r/have_binlog_format_row.require --require r/have_binlog_format_row.require
--disable_query_log --disable_query_log
--replace_result MIXED ROW --replace_result MIXED ROW
show variables like "binlog_format"; show variables like 'binlog_format';
--enable_query_log --enable_query_log

View File

@ -4,5 +4,5 @@ source include/have_log_bin.inc;
--require r/have_binlog_format_statement.require --require r/have_binlog_format_statement.require
--disable_query_log --disable_query_log
--replace_result MIXED STATEMENT --replace_result MIXED STATEMENT
show variables like "binlog_format"; show variables like 'binlog_format';
--enable_query_log --enable_query_log

View File

@ -2,5 +2,5 @@
-- require r/have_binlog_format_row.require -- require r/have_binlog_format_row.require
disable_query_log; disable_query_log;
show variables like "binlog_format"; show variables like 'binlog_format';
enable_query_log; enable_query_log;

View File

@ -3,5 +3,5 @@
-- require r/have_binlog_format_statement.require -- require r/have_binlog_format_statement.require
--disable_query_log --disable_query_log
--replace_result ROW STATEMENT --replace_result ROW STATEMENT
show variables like "binlog_format"; show variables like 'binlog_format';
--enable_query_log --enable_query_log

View File

@ -2,5 +2,5 @@
-- require r/have_binlog_format_statement.require -- require r/have_binlog_format_statement.require
disable_query_log; disable_query_log;
show variables like "binlog_format"; show variables like 'binlog_format';
enable_query_log; enable_query_log;

View File

@ -1,4 +1,4 @@
--require r/case_sensitive_file_system.require --require r/case_sensitive_file_system.require
--disable_query_log --disable_query_log
show variables like "lower_case_file_system"; show variables like 'lower_case_file_system';
--enable_query_log --enable_query_log

View File

@ -1,4 +1,4 @@
--require r/have_community_features.require --require r/have_community_features.require
--disable_query_log --disable_query_log
show variables like "have_community_features"; show variables like 'have_community_features';
--enable_query_log --enable_query_log

View File

@ -1,4 +1,4 @@
-- require r/have_compress.require -- require r/have_compress.require
disable_query_log; disable_query_log;
show variables like "have_compress"; show variables like 'have_compress';
enable_query_log; enable_query_log;

View File

@ -1,4 +1,4 @@
-- require r/have_cp1250_ch.require -- require r/have_cp1250_ch.require
disable_query_log; disable_query_log;
show collation like "cp1250_czech_cs"; show collation like 'cp1250_czech_cs';
enable_query_log; enable_query_log;

View File

@ -1,4 +1,4 @@
-- require r/have_cp932.require -- require r/have_cp932.require
disable_query_log; disable_query_log;
show collation like "cp932_japanese_ci"; show collation like 'cp932_japanese_ci';
enable_query_log; enable_query_log;

View File

@ -1,4 +1,4 @@
-- require r/have_crypt.require -- require r/have_crypt.require
disable_query_log; disable_query_log;
show variables like "have_crypt"; show variables like 'have_crypt';
enable_query_log; enable_query_log;

View File

@ -1,4 +1,4 @@
-- require r/have_debug.require -- require r/have_debug.require
disable_query_log; disable_query_log;
select (version() like "%debug%") as debug; select (version() like '%debug%') as debug;
enable_query_log; enable_query_log;

View File

@ -1,4 +1,4 @@
-- require r/have_eucjpms.require -- require r/have_eucjpms.require
disable_query_log; disable_query_log;
show collation like "eucjpms_japanese_ci"; show collation like 'eucjpms_japanese_ci';
enable_query_log; enable_query_log;

View File

@ -1,4 +1,4 @@
-- require r/have_euckr.require -- require r/have_euckr.require
disable_query_log; disable_query_log;
show collation like "euckr_korean_ci"; show collation like 'euckr_korean_ci';
enable_query_log; enable_query_log;

View File

@ -4,7 +4,7 @@
# #
--require r/have_dynamic_loading.require --require r/have_dynamic_loading.require
disable_query_log; disable_query_log;
show variables like "have_dynamic_loading"; show variables like 'have_dynamic_loading';
enable_query_log; enable_query_log;
# #
@ -12,5 +12,5 @@ enable_query_log;
# #
--require r/have_example_plugin.require --require r/have_example_plugin.require
disable_query_log; disable_query_log;
eval select LENGTH("$EXAMPLE_PLUGIN") > 0 as "have_example_plugin"; eval select LENGTH('$EXAMPLE_PLUGIN') > 0 as 'have_example_plugin';
enable_query_log; enable_query_log;

View File

@ -1,4 +1,4 @@
-- require r/have_gb2312.require -- require r/have_gb2312.require
disable_query_log; disable_query_log;
show collation like "gb2312_chinese_ci"; show collation like 'gb2312_chinese_ci';
enable_query_log; enable_query_log;

View File

@ -1,4 +1,4 @@
-- require r/have_gbk.require -- require r/have_gbk.require
disable_query_log; disable_query_log;
show collation like "gbk_chinese_ci"; show collation like 'gbk_chinese_ci';
enable_query_log; enable_query_log;

View File

@ -1,4 +1,4 @@
--require r/have_geometry.require --require r/have_geometry.require
--disable_query_log --disable_query_log
show variables like "have_geometry"; show variables like 'have_geometry';
--enable_query_log --enable_query_log

View File

@ -1,4 +1,4 @@
-- require r/have_latin2_ch.require -- require r/have_latin2_ch.require
disable_query_log; disable_query_log;
show collation like "latin2_czech_cs"; show collation like 'latin2_czech_cs';
enable_query_log; enable_query_log;

View File

@ -1,7 +1,6 @@
# ==== Purpose ==== # ==== Purpose ====
# #
# Ensure that the server is running with binlogging on and reset the # Ensure that the server is running with binlogging on
# binlog.
# #
# ==== Usage ==== # ==== Usage ====
# #
@ -9,6 +8,5 @@
-- require r/have_log_bin.require -- require r/have_log_bin.require
disable_query_log; disable_query_log;
show variables like "log_bin"; show variables like 'log_bin';
RESET MASTER;
enable_query_log; enable_query_log;

View File

@ -1,4 +1,4 @@
--require r/lowercase0.require --require r/lowercase0.require
--disable_query_log --disable_query_log
show variables like "lower_case_%"; show variables like 'lower_case_%';
--enable_query_log --enable_query_log

View File

@ -1,4 +1,4 @@
--require r/have_ndbapi_examples.require --require r/have_ndbapi_examples.require
disable_query_log; disable_query_log;
eval select LENGTH("$NDB_EXAMPLES_BINARY") > 0 as "have_ndb_example"; eval select LENGTH('$NDB_EXAMPLES_BINARY') > 0 as 'have_ndb_example';
enable_query_log; enable_query_log;

View File

@ -1,5 +1,5 @@
-- require r/have_outfile.require -- require r/have_outfile.require
disable_query_log; disable_query_log;
select load_file(concat(@tmpdir,"/outfile.test")); select load_file(concat(@tmpdir,'/outfile.test'));
--remove_file $MYSQLTEST_VARDIR/tmp/outfile.test --remove_file $MYSQLTEST_VARDIR/tmp/outfile.test
enable_query_log; enable_query_log;

View File

@ -1,4 +1,4 @@
-- require r/have_partition.require -- require r/have_partition.require
disable_query_log; disable_query_log;
show variables like "have_partitioning"; show variables like 'have_partitioning';
enable_query_log; enable_query_log;

View File

@ -1,4 +1,4 @@
-- require r/have_query_cache.require -- require r/have_query_cache.require
disable_query_log; disable_query_log;
show variables like "have_query_cache"; show variables like 'have_query_cache';
enable_query_log; enable_query_log;

View File

@ -1,4 +1,4 @@
-- require r/have_sjis.require -- require r/have_sjis.require
disable_query_log; disable_query_log;
show collation like "sjis_japanese_ci"; show collation like 'sjis_japanese_ci';
enable_query_log; enable_query_log;

View File

@ -1,4 +1,4 @@
-- require r/have_ssl.require -- require r/have_ssl.require
disable_query_log; disable_query_log;
show variables like "have_ssl"; show variables like 'have_ssl';
enable_query_log; enable_query_log;

View File

@ -6,5 +6,5 @@
-- require r/have_symlink.require -- require r/have_symlink.require
disable_query_log; disable_query_log;
show variables like "have_symlink"; show variables like 'have_symlink';
enable_query_log; enable_query_log;

View File

@ -1,4 +1,4 @@
-- require r/have_tis620.require -- require r/have_tis620.require
disable_query_log; disable_query_log;
show collation like "tis620_thai_ci"; show collation like 'tis620_thai_ci';
enable_query_log; enable_query_log;

View File

@ -1,4 +1,4 @@
-- require r/have_ucs2.require -- require r/have_ucs2.require
disable_query_log; disable_query_log;
show collation like "ucs2_general_ci"; show collation like 'ucs2_general_ci';
enable_query_log; enable_query_log;

View File

@ -4,7 +4,7 @@
# #
--require r/have_dynamic_loading.require --require r/have_dynamic_loading.require
disable_query_log; disable_query_log;
show variables like "have_dynamic_loading"; show variables like 'have_dynamic_loading';
enable_query_log; enable_query_log;
# #
@ -12,5 +12,5 @@ enable_query_log;
# #
--require r/have_udf_example.require --require r/have_udf_example.require
disable_query_log; disable_query_log;
eval select LENGTH("$UDF_EXAMPLE_LIB") > 0 as "have_udf_example_lib"; eval select LENGTH('$UDF_EXAMPLE_LIB') > 0 as 'have_udf_example_lib';
enable_query_log; enable_query_log;

View File

@ -1,4 +1,4 @@
-- require r/have_ujis.require -- require r/have_ujis.require
disable_query_log; disable_query_log;
show collation like "ujis_japanese_ci"; show collation like 'ujis_japanese_ci';
enable_query_log; enable_query_log;

View File

@ -1104,6 +1104,24 @@ set @my_innodb_commit_concurrency=@@global.innodb_commit_concurrency;
set global innodb_commit_concurrency=0; set global innodb_commit_concurrency=0;
set global innodb_commit_concurrency=@my_innodb_commit_concurrency; set global innodb_commit_concurrency=@my_innodb_commit_concurrency;
#
# Bug #37830: ORDER BY ASC/DESC - no difference
#
CREATE TABLE t1 (a int, b int, c int, PRIMARY KEY (a), KEY t1_b (b))
ENGINE=InnoDB;
INSERT INTO t1 (a,b,c) VALUES (1,1,1), (2,1,1), (3,1,1), (4,1,1);
INSERT INTO t1 (a,b,c) SELECT a+4,b,c FROM t1;
# should be range access
EXPLAIN SELECT a, b, c FROM t1 WHERE b = 1 ORDER BY a DESC LIMIT 5;
# should produce '8 7 6 5 4' for a
SELECT a, b, c FROM t1 WHERE b = 1 ORDER BY a DESC LIMIT 5;
DROP TABLE t1;
--echo End of 5.0 tests --echo End of 5.0 tests
# Fix for BUG#19243 "wrong LAST_INSERT_ID() after ON DUPLICATE KEY # Fix for BUG#19243 "wrong LAST_INSERT_ID() after ON DUPLICATE KEY

View File

@ -1,32 +1,35 @@
############## mysql-test\t\query_prealloc_size_basic.test ############### ################# mysql-test\t\query_prealloc_size_basic.test ##################
# # # #
# Variable Name: query_prealloc_size # # Variable Name: query_prealloc_size #
# Scope: GLOBAL | SESSION # # Scope: GLOBAL | SESSION #
# Access Type: Dynamic # # Access Type: Dynamic #
# Data Type: numeric # # Data Type: numeric #
# Default Value: 8192 # # Default Value: 8192 #
# Range: 8192-4294967295 # # Range: 8192-4294967295 #
# # # #
# # # #
# Creation Date: 2008-02-07 # # Creation Date: 2008-02-07 #
# Author: Rizwan # # Author: Rizwan #
# # # #
# Description: Test Cases of Dynamic System Variable query_prealloc_size # # Description: Test Cases of Dynamic System Variable query_prealloc_size #
# that checks the behavior of this variable in the following ways# # that checks the behavior of this variable in the following ways #
# * Default Value # # * Default Value #
# * Valid & Invalid values # # * Valid & Invalid values #
# * Scope & Access method # # * Scope & Access method #
# * Data Integrity # # * Data Integrity #
# # # #
# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # # Reference: #
# server-system-variables.html # # http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html #
# # # #
############################################################################### # Last Modification: #
# 2008-07-14 hhunger removed values for 64 bit platforms. #
# #
################################################################################
--source include/load_sysvars.inc --source include/load_sysvars.inc
######################################################################## ########################################################################
# START OF query_prealloc_size TESTS # # START OF query_prealloc_size TESTS #
######################################################################## ########################################################################
@ -42,7 +45,7 @@ SELECT @start_session_value;
--echo '#--------------------FN_DYNVARS_005_01-------------------------#' --echo '#--------------------FN_DYNVARS_005_01-------------------------#'
######################################################################## ########################################################################
# Display the DEFAULT value of myisam_block_size # # Display the DEFAULT value of myisam_block_size #
######################################################################## ########################################################################
SET @@global.query_prealloc_size = 100; SET @@global.query_prealloc_size = 100;
@ -56,7 +59,7 @@ SELECT @@session.query_prealloc_size ;
--echo '#--------------------FN_DYNVARS_005_02-------------------------#' --echo '#--------------------FN_DYNVARS_005_02-------------------------#'
######################################################################## ########################################################################
# Check the DEFAULT value of query_prealloc_size # # Check the DEFAULT value of query_prealloc_size #
######################################################################## ########################################################################
SET @@global.query_prealloc_size = DEFAULT; SET @@global.query_prealloc_size = DEFAULT;
@ -67,30 +70,32 @@ SELECT @@session.query_prealloc_size = 8192;
--echo '#--------------------FN_DYNVARS_005_03-------------------------#' --echo '#--------------------FN_DYNVARS_005_03-------------------------#'
################################################################################## ################################################################################
# Change the value of query_prealloc_size to a valid value for GLOBAL Scope # # Change the value of query_prealloc_size to a valid value for GLOBAL Scope #
################################################################################## ################################################################################
SET @@global.query_prealloc_size = 8192; SET @@global.query_prealloc_size = 8192;
SELECT @@global.query_prealloc_size ; SELECT @@global.query_prealloc_size ;
SET @@global.query_prealloc_size = 4294967295; # Due to problems with 64 bit machines having less than 6 GB main memory.
SELECT @@global.query_prealloc_size ; #SET @@global.query_prealloc_size = 4294967295;
#SELECT @@global.query_prealloc_size ;
SET @@global.query_prealloc_size = 655354; SET @@global.query_prealloc_size = 655354;
SELECT @@global.query_prealloc_size ; SELECT @@global.query_prealloc_size ;
--echo '#--------------------FN_DYNVARS_005_04-------------------------#' --echo '#--------------------FN_DYNVARS_005_04-------------------------#'
################################################################################### ##################################################################################
# Change the value of query_prealloc_size to a valid value for SESSION Scope # # Change the value of query_prealloc_size to a valid value for SESSION Scope #
################################################################################### ##################################################################################
SET @@session.query_prealloc_size = 8192; SET @@session.query_prealloc_size = 8192;
SELECT @@session.query_prealloc_size ; SELECT @@session.query_prealloc_size ;
SET @@session.query_prealloc_size = 4294967295; # Due to problems with 64 bit machines having less than 6 GB main memory.
SELECT @@session.query_prealloc_size ; #SET @@session.query_prealloc_size = 4294967295;
#SELECT @@session.query_prealloc_size ;
SET @@session.query_prealloc_size = 655345; SET @@session.query_prealloc_size = 655345;
SELECT @@session.query_prealloc_size ; SELECT @@session.query_prealloc_size ;
@ -100,7 +105,7 @@ SELECT @@session.query_prealloc_size ;
--echo '#------------------FN_DYNVARS_005_05-----------------------#' --echo '#------------------FN_DYNVARS_005_05-----------------------#'
#################################################################### ####################################################################
# Change the value of query_prealloc_size to an invalid value # # Change the value of query_prealloc_size to an invalid value #
#################################################################### ####################################################################
SET @@global.query_prealloc_size = 0; SET @@global.query_prealloc_size = 0;
@ -109,8 +114,9 @@ SELECT @@global.query_prealloc_size ;
SET @@global.query_prealloc_size = -1024; SET @@global.query_prealloc_size = -1024;
SELECT @@global.query_prealloc_size ; SELECT @@global.query_prealloc_size ;
SET @@global.query_prealloc_size = 429496729533; # Due to problems with 64 bit machines having less than 6 GB main memory.
SELECT @@global.query_prealloc_size ; #SET @@global.query_prealloc_size = 429496729533;
#SELECT @@global.query_prealloc_size ;
--Error ER_PARSE_ERROR --Error ER_PARSE_ERROR
@ -161,8 +167,8 @@ SELECT @@session.query_prealloc_size ;
#################################################################### ####################################################################
SELECT @@global.query_prealloc_size = VARIABLE_VALUE SELECT @@global.query_prealloc_size = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='query_prealloc_size '; WHERE VARIABLE_NAME='query_prealloc_size ';
--echo '#------------------FN_DYNVARS_005_07-----------------------#' --echo '#------------------FN_DYNVARS_005_07-----------------------#'
@ -170,8 +176,8 @@ WHERE VARIABLE_NAME='query_prealloc_size ';
# Check if the value in SESSION Table matches value in variable # # Check if the value in SESSION Table matches value in variable #
#################################################################### ####################################################################
SELECT @@session.query_prealloc_size = VARIABLE_VALUE SELECT @@session.query_prealloc_size = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='query_prealloc_size '; WHERE VARIABLE_NAME='query_prealloc_size ';
@ -188,18 +194,19 @@ SELECT @@global.query_prealloc_size ;
--echo '#---------------------FN_DYNVARS_001_09----------------------#' --echo '#---------------------FN_DYNVARS_001_09----------------------#'
#################################################################################### ################################################################################
# Check if accessing variable with and without GLOBAL point to same variable # # Check if accessing variable with and without GLOBAL point to same variable #
#################################################################################### ################################################################################
SET @@global.query_prealloc_size = 10; SET @@global.query_prealloc_size = 10;
SELECT @@query_prealloc_size = @@global.query_prealloc_size ; SELECT @@query_prealloc_size = @@global.query_prealloc_size ;
--echo '#---------------------FN_DYNVARS_001_10----------------------#' --echo '#---------------------FN_DYNVARS_001_10----------------------#'
######################################################################################################## ##############################################################################
# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # # Check if accessing variable with SESSION,LOCAL and without SCOPE points to #
######################################################################################################## # to the same session variable #
##############################################################################
SET @@query_prealloc_size = 100; SET @@query_prealloc_size = 100;
SELECT @@query_prealloc_size = @@local.query_prealloc_size ; SELECT @@query_prealloc_size = @@local.query_prealloc_size ;
@ -207,9 +214,9 @@ SELECT @@local.query_prealloc_size = @@session.query_prealloc_size ;
--echo '#---------------------FN_DYNVARS_001_11----------------------#' --echo '#---------------------FN_DYNVARS_001_11----------------------#'
################################################################################### ################################################################################
# Check if query_prealloc_size can be accessed with and without @@ sign # # Check if query_prealloc_size can be accessed with and without @@ sign #
################################################################################### ################################################################################
SET query_prealloc_size = 1; SET query_prealloc_size = 1;
SELECT @@query_prealloc_size ; SELECT @@query_prealloc_size ;
@ -235,5 +242,6 @@ SELECT @@session.query_prealloc_size ;
############################################################# #############################################################
# END OF query_prealloc_size TESTS # # END OF query_prealloc_size TESTS #
############################################################# #############################################################

View File

@ -0,0 +1,19 @@
# ==== Purpose ====
#
# Waits until the IO thread of the current connection has started and
# connected to the master (i.e., until SHOW SLAVE STATUS returns Yes
# in the Slave_IO_Running field), or until a timeout is reached.
#
# ==== Usage ====
#
# source include/wait_for_slave_io_to_start.inc;
#
# Parameters to this macro are $slave_timeout and
# $slave_keep_connection. See wait_for_slave_param.inc for
# descriptions.
let $slave_param= Slave_IO_Running;
let $slave_param_value= Yes;
let $slave_error_message= Failed while waiting for slave IO thread to start;
source include/wait_for_slave_param.inc;
let $slave_error_message= ;

View File

@ -25,7 +25,6 @@ use constant DEFAULT_BOGO_MIPS => 2000;
sub _cpuinfo { sub _cpuinfo {
my ($self)= @_; my ($self)= @_;
print "_cpuinfo\n";
my $info_file= "/proc/cpuinfo"; my $info_file= "/proc/cpuinfo";
if ( !( -e $info_file and -f $info_file) ) { if ( !( -e $info_file and -f $info_file) ) {

View File

@ -536,6 +536,26 @@ sub optimize_cases {
} }
} }
} }
# =======================================================
# Check that engine selected by
# --default-storage-engine=<engine> is supported
# =======================================================
foreach my $opt ( @{$tinfo->{master_opt}} ) {
my $default_engine=
mtr_match_prefix($opt, "--default-storage-engine=");
if (defined $default_engine){
if ( ! exists $::mysqld_variables{$default_engine} )
{
$tinfo->{'skip'}= 1;
$tinfo->{'comment'}=
"'$default_engine' not supported";
}
}
}
} }
} }

View File

@ -148,13 +148,14 @@ my $opt_build_thread= $ENV{'MTR_BUILD_THREAD'} || "auto";
my $opt_record; my $opt_record;
my $opt_report_features; my $opt_report_features;
our $opt_check_testcases= 1; our $opt_check_testcases= 1;
my $opt_mark_progress; my $opt_mark_progress;
my $opt_sleep; my $opt_sleep;
my $opt_testcase_timeout= 15; # minutes my $opt_testcase_timeout= 15; # minutes
my $opt_suite_timeout = 180; # minutes my $opt_suite_timeout = 300; # minutes
my $opt_shutdown_timeout= 10; # seconds my $opt_shutdown_timeout= 10; # seconds
my $opt_start_timeout = 180; # seconds my $opt_start_timeout = 180; # seconds
@ -215,7 +216,7 @@ sub main {
mtr_report("Logging: $0 ", join(" ", @ARGV)); mtr_report("Logging: $0 ", join(" ", @ARGV));
Getopt::Long::Configure("pass_through"); Getopt::Long::Configure("pass_through");
GetOptions('parallel=i' => \$opt_parallel) or usage("Can't read options"); GetOptions('parallel=i' => \$opt_parallel) or usage(0, "Can't read options");
if ( not defined $opt_parallel ) { if ( not defined $opt_parallel ) {
# Try to find a suitable value for number of workers # Try to find a suitable value for number of workers
@ -451,7 +452,7 @@ sub run_test_server {
push(@$completed, $result); push(@$completed, $result);
return $completed; return $completed;
} }
elsif ($num_failed_test > 0 and elsif ($opt_max_test_fail > 0 and
$num_failed_test >= $opt_max_test_fail) { $num_failed_test >= $opt_max_test_fail) {
$suite_timeout_proc->kill(); $suite_timeout_proc->kill();
mtr_report("Too many tests($num_failed_test) failed!", mtr_report("Too many tests($num_failed_test) failed!",
@ -662,7 +663,7 @@ sub run_worker ($) {
sub ignore_option { sub ignore_option {
my ($opt, $value)= @_; my ($opt, $value)= @_;
print "Ignoring option '$opt'\n"; mtr_report("Ignoring option '$opt'");
} }
sub command_line_setup { sub command_line_setup {
@ -671,6 +672,9 @@ sub command_line_setup {
my $opt_comment; my $opt_comment;
my $opt_usage; my $opt_usage;
# Default verbosity, server ON and workers OFF
report_option('verbose', $thread_num ? undef : 0);
# Read the command line options # Read the command line options
# Note: Keep list, and the order, in sync with usage at end of this file # Note: Keep list, and the order, in sync with usage at end of this file
Getopt::Long::Configure("pass_through"); Getopt::Long::Configure("pass_through");
@ -791,19 +795,15 @@ sub command_line_setup {
'timediff' => \&report_option, 'timediff' => \&report_option,
'help|h' => \$opt_usage, 'help|h' => \$opt_usage,
) or usage("Can't read options"); ) or usage($thread_num, "Can't read options");
usage("") if $opt_usage; usage($thread_num, "") if $opt_usage;
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
# Setup verbosity # Setup verbosity
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
if ($thread_num == 0){ if ($opt_verbose != 0){
# The server should by default have verbose on report_option('verbose', $opt_verbose);
report_option('verbose', $opt_verbose ? $opt_verbose : 0);
} else {
# Worker should by default have verbose off
report_option('verbose', $opt_verbose ? $opt_verbose : undef);
} }
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
@ -900,7 +900,7 @@ sub command_line_setup {
} }
elsif ( $arg =~ /^-/ ) elsif ( $arg =~ /^-/ )
{ {
usage("Invalid option \"$arg\""); usage($thread_num, "Invalid option \"$arg\"");
} }
else else
{ {
@ -1654,7 +1654,8 @@ sub environment_setup {
# ---------------------------------------------------- # ----------------------------------------------------
my $file_mysql_fix_privilege_tables= my $file_mysql_fix_privilege_tables=
mtr_file_exists("$basedir/scripts/mysql_fix_privilege_tables.sql", mtr_file_exists("$basedir/scripts/mysql_fix_privilege_tables.sql",
"$basedir/share/mysql_fix_privilege_tables.sql"); "$basedir/share/mysql_fix_privilege_tables.sql",
"$basedir/share/mysql/mysql_fix_privilege_tables.sql");
$ENV{'MYSQL_FIX_PRIVILEGE_TABLES'}= $file_mysql_fix_privilege_tables; $ENV{'MYSQL_FIX_PRIVILEGE_TABLES'}= $file_mysql_fix_privilege_tables;
# ---------------------------------------------------- # ----------------------------------------------------
@ -2771,6 +2772,7 @@ sub run_testcase ($) {
if (defined $value){ if (defined $value){
mtr_verbose("Restoring $option to $value"); mtr_verbose("Restoring $option to $value");
$ENV{$option}= $value; $ENV{$option}= $value;
} else { } else {
mtr_verbose("Removing $option"); mtr_verbose("Removing $option");
delete($ENV{$option}); delete($ENV{$option});
@ -3019,6 +3021,23 @@ sub start_check_warnings ($$) {
mtr_add_arg($args, "--skip-safemalloc"); mtr_add_arg($args, "--skip-safemalloc");
mtr_add_arg($args, "--test-file=%s", "include/check-warnings.test"); mtr_add_arg($args, "--test-file=%s", "include/check-warnings.test");
if ( $opt_embedded_server )
{
# Get the args needed for the embedded server
# and append them to args prefixed
# with --sever-arg=
my $mysqld= $config->group('embedded')
or mtr_error("Could not get [embedded] section");
my $mysqld_args;
mtr_init_args(\$mysqld_args);
my $extra_opts= get_extra_opts($mysqld, $tinfo);
mysqld_arguments($mysqld_args, $mysqld, $extra_opts);
mtr_add_arg($args, "--server-arg=%s", $_) for @$mysqld_args;
}
my $errfile= "$opt_vardir/tmp/$name.err"; my $errfile= "$opt_vardir/tmp/$name.err";
my $proc= My::SafeProcess->new my $proc= My::SafeProcess->new
( (
@ -4304,7 +4323,10 @@ sub valgrind_arguments {
# Usage # Usage
# #
sub usage ($) { sub usage ($) {
my $message= shift; my ($thread_num, $message)= @_;
# Only main thread should print usage
return if $thread_num != 0;
if ( $message ) if ( $message )
{ {

View File

@ -1,5 +1,6 @@
set @old_concurrent_insert= @@global.concurrent_insert; set @old_concurrent_insert= @@global.concurrent_insert;
set @@global.concurrent_insert= 0; set @@global.concurrent_insert= 0;
drop table if exists t1;
create table t1 ( create table t1 (
`a&b` int, `a&b` int,
`a<b` int, `a<b` int,

View File

@ -45,7 +45,7 @@ ERROR 42000: You have an error in your SQL syntax; check the manual that corresp
prepare bar from "DELETE FROM table_28779 WHERE a = 7 OR 1=1/*! AND 2=2;"; prepare bar from "DELETE FROM table_28779 WHERE a = 7 OR 1=1/*! AND 2=2;";
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
prepare bar from "DELETE FROM table_28779 WHERE a = 7 OR 1=1/*! AND 2=2;*"; prepare bar from "DELETE FROM table_28779 WHERE a = 7 OR 1=1/*! AND 2=2;*";
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ';*' at line 1 ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*' at line 1
prepare bar from "DELETE FROM table_28779 WHERE a = 7 OR 1=1/*!98765' AND b = 'bar';"; prepare bar from "DELETE FROM table_28779 WHERE a = 7 OR 1=1/*!98765' AND b = 'bar';";
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '/*!98765' AND b = 'bar'' at line 1 ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '/*!98765' AND b = 'bar'' at line 1
prepare bar from "DELETE FROM table_28779 WHERE a = 7 OR 1=1/*!98765' AND b = 'bar';*"; prepare bar from "DELETE FROM table_28779 WHERE a = 7 OR 1=1/*!98765' AND b = 'bar';*";

View File

@ -569,4 +569,10 @@ insert into t1 values (),(),(),(),(),(),(),(),(),();
select a from t1 where a not in (a,a,a) group by a; select a from t1 where a not in (a,a,a) group by a;
a a
drop table t1; drop table t1;
create table t1 (id int);
select * from t1 where NOT id in (select null union all select 1);
id
select * from t1 where NOT id in (null, 1);
id
drop table t1;
End of 5.1 tests End of 5.1 tests

View File

@ -310,6 +310,20 @@ drop table t1;
SELECT NAME_CONST('var', 'value') COLLATE latin1_general_cs; SELECT NAME_CONST('var', 'value') COLLATE latin1_general_cs;
NAME_CONST('var', 'value') COLLATE latin1_general_cs NAME_CONST('var', 'value') COLLATE latin1_general_cs
value value
select @@session.time_zone into @save_tz;
set @@session.time_zone='UTC';
select uuid() into @my_uuid;
select mid(@my_uuid,15,1);
mid(@my_uuid,15,1)
1
select 24 * 60 * 60 * 1000 * 1000 * 10 into @my_uuid_one_day;
select concat('0',mid(@my_uuid,16,3),mid(@my_uuid,10,4),left(@my_uuid,8)) into @my_uuidate;
select floor(conv(@my_uuidate,16,10)/@my_uuid_one_day) into @my_uuid_date;
select 141427 + datediff(curdate(),'1970-01-01') into @my_uuid_synthetic;
select @my_uuid_date - @my_uuid_synthetic;
@my_uuid_date - @my_uuid_synthetic
0
set @@session.time_zone=@save_tz;
End of 5.0 tests End of 5.0 tests
select connection_id() > 0; select connection_id() > 0;
connection_id() > 0 connection_id() > 0

View File

@ -1,3 +1,5 @@
drop view if exists v1;
drop table if exists t1,t4;
create table t4 ( create table t4 (
pk_col int auto_increment primary key, a1 char(64), a2 char(64), b char(16), c char(16) not null, d char(16), dummy char(64) default ' ' pk_col int auto_increment primary key, a1 char(64), a2 char(64), b char(16), c char(16) not null, d char(16), dummy char(64) default ' '
) engine=innodb; ) engine=innodb;
@ -70,3 +72,25 @@ explain select distinct f1, f2 from t1;
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range NULL PRIMARY 5 NULL 3 Using index for group-by; Using temporary 1 SIMPLE t1 range NULL PRIMARY 5 NULL 3 Using index for group-by; Using temporary
drop table t1; drop table t1;
create table t1(pk int primary key) engine=innodb;
create view v1 as select pk from t1 where pk < 20;
insert into t1 values (1), (2), (3), (4);
select distinct pk from v1;
pk
1
2
3
4
insert into t1 values (5), (6), (7);
select distinct pk from v1;
pk
1
2
3
4
5
6
7
drop view v1;
drop table t1;
End of 5.1 tests

View File

@ -1362,6 +1362,21 @@ set global innodb_autoextend_increment=@my_innodb_autoextend_increment;
set @my_innodb_commit_concurrency=@@global.innodb_commit_concurrency; set @my_innodb_commit_concurrency=@@global.innodb_commit_concurrency;
set global innodb_commit_concurrency=0; set global innodb_commit_concurrency=0;
set global innodb_commit_concurrency=@my_innodb_commit_concurrency; set global innodb_commit_concurrency=@my_innodb_commit_concurrency;
CREATE TABLE t1 (a int, b int, c int, PRIMARY KEY (a), KEY t1_b (b))
ENGINE=InnoDB;
INSERT INTO t1 (a,b,c) VALUES (1,1,1), (2,1,1), (3,1,1), (4,1,1);
INSERT INTO t1 (a,b,c) SELECT a+4,b,c FROM t1;
EXPLAIN SELECT a, b, c FROM t1 WHERE b = 1 ORDER BY a DESC LIMIT 5;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 index t1_b PRIMARY 4 NULL 8 Using where
SELECT a, b, c FROM t1 WHERE b = 1 ORDER BY a DESC LIMIT 5;
a b c
8 1 1
7 1 1
6 1 1
5 1 1
4 1 1
DROP TABLE t1;
End of 5.0 tests End of 5.0 tests
CREATE TABLE `t2` ( CREATE TABLE `t2` (
`k` int(11) NOT NULL auto_increment, `k` int(11) NOT NULL auto_increment,

View File

@ -1,6 +1,6 @@
** Setup ** ** Setup **
SET @default_max_user_connections = @@max_user_connections; SET @default_max_user_connections = @@global.max_user_connections;
Set Global max_user_connections=2; Set Global max_user_connections=2;
'#--------------------FN_DYNVARS_114_01-------------------------#' '#--------------------FN_DYNVARS_114_01-------------------------#'
** Connecting conn1 using username 'root' ** ** Connecting conn1 using username 'root' **
@ -9,10 +9,11 @@ Set Global max_user_connections=2;
ERROR 42000: User root already has more than 'max_user_connections' active connections ERROR 42000: User root already has more than 'max_user_connections' active connections
Expected error "too many connections" Expected error "too many connections"
** Disconnecting conn1 ** ** Disconnecting conn1 **
** Poll till disconnected conn1 disappears from processlist
'#--------------------FN_DYNVARS_114_02-------------------------#' '#--------------------FN_DYNVARS_114_02-------------------------#'
Set Global max_user_connections=3; Set Global max_user_connections=3;
** Connecting conn5 using username 'root' ** ** Connecting conn5 using username 'root' **
** Connecting conn6 using username 'root' ** ** Connecting conn6 using username 'root' **
** Connection default ** ** Connection default **
** Disconnecting conn5, conn6 ** ** Disconnecting conn5, conn6 **
SET GLOBAL max_user_connections = @default_max_user_connections; SET @@global.max_user_connections = @default_max_user_connections;

View File

@ -38,8 +38,6 @@ t2
t3 t3
Tables_in_test Tables_in_test
t1 t1
delimiter
1
_ _
Test delimiter : from command line Test delimiter : from command line
a a

View File

@ -1,3 +1,4 @@
reset master;
create table t1 (a int); create table t1 (a int);
insert into t1 values (1); insert into t1 values (1);
insert into t1 values (2); insert into t1 values (2);

View File

@ -14,6 +14,7 @@ select otto from (select 1 as otto) as t1;
otto otto
1 1
mysqltest: At line 1: query 'select otto from (select 1 as otto) as t1' succeeded - should have failed with sqlstate 42S22... mysqltest: At line 1: query 'select otto from (select 1 as otto) as t1' succeeded - should have failed with sqlstate 42S22...
mysqltest: At line 1: expecting a SQL-state (00000) from query 'remove_file MYSQLTEST_VARDIR/tmp/test_nonexistent.tmp' which cannot produce one...
select friedrich from (select 1 as otto) as t1; select friedrich from (select 1 as otto) as t1;
ERROR 42S22: Unknown column 'friedrich' in 'field list' ERROR 42S22: Unknown column 'friedrich' in 'field list'
mysqltest: At line 1: query 'select friedrich from (select 1 as otto) as t1' failed with wrong sqlstate 42S22: 'Unknown column 'friedrich' in 'field list'', instead of 00000... mysqltest: At line 1: query 'select friedrich from (select 1 as otto) as t1' failed with wrong sqlstate 42S22: 'Unknown column 'friedrich' in 'field list'', instead of 00000...
@ -725,6 +726,9 @@ drop table t1;
mysqltest: At line 1: change user failed: Unknown database 'inexistent' mysqltest: At line 1: change user failed: Unknown database 'inexistent'
mysqltest: At line 1: change user failed: Access denied for user 'inexistent'@'localhost' (using password: NO) mysqltest: At line 1: change user failed: Access denied for user 'inexistent'@'localhost' (using password: NO)
mysqltest: At line 1: change user failed: Access denied for user 'root'@'localhost' (using password: YES) mysqltest: At line 1: change user failed: Access denied for user 'root'@'localhost' (using password: YES)
file1.txt
file1.txt
file2.txt
SELECT 'c:\\a.txt' AS col; SELECT 'c:\\a.txt' AS col;
col col
z z

View File

@ -284,6 +284,74 @@ Field Type Null Key Default Extra
DROP TABLE table_25930_a; DROP TABLE table_25930_a;
DROP TABLE table_25930_b; DROP TABLE table_25930_b;
SET @@sql_mode=@save_sql_mode; SET @@sql_mode=@save_sql_mode;
DROP PROCEDURE IF EXISTS p26030;
select "non terminated"$$
non terminated
non terminated
select "terminated";$$
terminated
terminated
select "non terminated, space" $$
non terminated, space
non terminated, space
select "terminated, space"; $$
terminated, space
terminated, space
select "non terminated, comment" /* comment */$$
non terminated, comment
non terminated, comment
select "terminated, comment"; /* comment */$$
terminated, comment
terminated, comment
select "stmt 1";select "stmt 2 non terminated"$$
stmt 1
stmt 1
stmt 2 non terminated
stmt 2 non terminated
select "stmt 1";select "stmt 2 terminated";$$
stmt 1
stmt 1
stmt 2 terminated
stmt 2 terminated
select "stmt 1";select "stmt 2 non terminated, space" $$
stmt 1
stmt 1
stmt 2 non terminated, space
stmt 2 non terminated, space
select "stmt 1";select "stmt 2 terminated, space"; $$
stmt 1
stmt 1
stmt 2 terminated, space
stmt 2 terminated, space
select "stmt 1";select "stmt 2 non terminated, comment" /* comment */$$
stmt 1
stmt 1
stmt 2 non terminated, comment
stmt 2 non terminated, comment
select "stmt 1";select "stmt 2 terminated, comment"; /* comment */$$
stmt 1
stmt 1
stmt 2 terminated, comment
stmt 2 terminated, comment
select "stmt 1"; select "space, stmt 2"$$
stmt 1
stmt 1
space, stmt 2
space, stmt 2
select "stmt 1";/* comment */select "comment, stmt 2"$$
stmt 1
stmt 1
comment, stmt 2
comment, stmt 2
DROP PROCEDURE IF EXISTS p26030; CREATE PROCEDURE p26030() BEGIN SELECT 1; END; CALL p26030()
$$
1
1
DROP PROCEDURE IF EXISTS p26030; CREATE PROCEDURE p26030() SELECT 1; CALL p26030()
$$
1
1
DROP PROCEDURE p26030;
select pi(3.14); select pi(3.14);
ERROR 42000: Incorrect parameter count in the call to native function 'pi' ERROR 42000: Incorrect parameter count in the call to native function 'pi'
select tan(); select tan();

View File

@ -0,0 +1,306 @@
use test;
SELECT
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
1
))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
;
1
1
prepare stmt from
"
SELECT
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
1
))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
"
;
execute stmt;
1
1
drop view if exists view_overflow;
CREATE VIEW view_overflow AS
SELECT
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
1
))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
;
SELECT * from view_overflow;
1
1
drop view view_overflow;
drop procedure if exists proc_overflow;
CREATE PROCEDURE proc_overflow()
BEGIN
BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN
BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN
BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN
BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN
BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN
BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN
BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN
BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN
BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN
BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN
select 1;
select 2;
select 3;
END; END; END; END; END; END; END; END; END; END; END; END;
END; END; END; END; END; END; END; END; END; END; END; END;
END; END; END; END; END; END; END; END; END; END; END; END;
END; END; END; END; END; END; END; END; END; END; END; END;
END; END; END; END; END; END; END; END; END; END; END; END;
END; END; END; END; END; END; END; END; END; END; END; END;
END; END; END; END; END; END; END; END; END; END; END; END;
END; END; END; END; END; END; END; END; END; END; END; END;
END; END; END; END; END; END; END; END; END; END; END; END;
END; END; END; END; END; END; END; END; END; END; END; END;
END $$
call proc_overflow();
1
1
2
2
3
3
drop procedure proc_overflow;
drop function if exists func_overflow;
create function func_overflow() returns int
BEGIN
DECLARE x int default 0;
BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN
BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN
BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN
BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN
BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN
BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN
BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN
BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN
BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN
BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN
SET x=x+1;
SET x=x+2;
SET x=x+3;
END; END; END; END; END; END; END; END; END; END; END; END;
END; END; END; END; END; END; END; END; END; END; END; END;
END; END; END; END; END; END; END; END; END; END; END; END;
END; END; END; END; END; END; END; END; END; END; END; END;
END; END; END; END; END; END; END; END; END; END; END; END;
END; END; END; END; END; END; END; END; END; END; END; END;
END; END; END; END; END; END; END; END; END; END; END; END;
END; END; END; END; END; END; END; END; END; END; END; END;
END; END; END; END; END; END; END; END; END; END; END; END;
END; END; END; END; END; END; END; END; END; END; END; END;
return x;
END $$
select func_overflow();
func_overflow()
6
drop function func_overflow;
drop table if exists table_overflow;
create table table_overflow(a int, b int);
create trigger trigger_overflow before insert on table_overflow
for each row
BEGIN
BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN
BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN
BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN
BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN
BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN
BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN
BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN
BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN
BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN
BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN BEGIN
SET NEW.b := NEW.a;
SET NEW.b := NEW.b + 1;
SET NEW.b := NEW.b + 2;
SET NEW.b := NEW.b + 3;
END; END; END; END; END; END; END; END; END; END; END; END;
END; END; END; END; END; END; END; END; END; END; END; END;
END; END; END; END; END; END; END; END; END; END; END; END;
END; END; END; END; END; END; END; END; END; END; END; END;
END; END; END; END; END; END; END; END; END; END; END; END;
END; END; END; END; END; END; END; END; END; END; END; END;
END; END; END; END; END; END; END; END; END; END; END; END;
END; END; END; END; END; END; END; END; END; END; END; END;
END; END; END; END; END; END; END; END; END; END; END; END;
END; END; END; END; END; END; END; END; END; END; END; END;
END $$
insert into table_overflow set a=10;
insert into table_overflow set a=20;
select * from table_overflow;
a b
10 16
20 26
drop table table_overflow;
drop procedure if exists proc_35577;
CREATE PROCEDURE proc_35577()
BEGIN
DECLARE z_done INT DEFAULT 0;
DECLARE t_done VARCHAR(5000);
outer_loop: LOOP
IF t_done=1 THEN
LEAVE outer_loop;
END IF;
inner_block:BEGIN
DECLARE z_done INT DEFAULT 0;
SET z_done = 0;
inner_loop: LOOP
IF z_done=1 THEN
LEAVE inner_loop;
END IF;
IF (t_done = 'a') THEN
IF (t_done <> 0) THEN
IF ( t_done > 0) THEN
IF (t_done = 'a') THEN
SET t_done = 'a';
ELSEIF (t_done = 'a') THEN
SET t_done = 'a';
ELSEIF(t_done = 'a') THEN
SET t_done = 'a';
ELSEIF(t_done = 'a') THEN
SET t_done = 'a';
ELSEIF(t_done = 'a') THEN
SET t_done = 'a';
ELSEIF(t_done = 'a') THEN
SET t_done = 'a';
ELSEIF(t_done = 'a') THEN
SET t_done = 'a';
ELSEIF(t_done = 'a') THEN
SET t_done = 'a';
END IF;
END IF;
END IF;
END IF;
END LOOP inner_loop;
END inner_block;
END LOOP outer_loop;
END $$
drop procedure proc_35577;
drop procedure if exists p_37269;
create procedure p_37269()
begin
declare done int default 0;
declare varb int default 0;
declare vara int default 0;
repeat
select now();
until done end repeat;
while varb do
select now();
begin
select now();
repeat
select now();
until done end repeat;
if vara then
select now();
repeat
select now();
loop
select now();
end loop;
repeat
select now();
label1: while varb do
select now();
end while label1;
if vara then
select now();
repeat
select now();
until done end repeat;
begin
select now();
while varb do
select now();
label1: while varb do
select now();
end while label1;
if vara then
select now();
while varb do
select now();
loop
select now();
end loop;
repeat
select now();
loop
select now();
while varb do
select now();
end while;
repeat
select now();
label1: loop
select now();
if vara then
select now();
end if;
end loop label1;
until done end repeat;
end loop;
until done end repeat;
end while;
end if;
end while;
end;
end if;
until done end repeat;
until done end repeat;
end if;
end;
end while;
end $$
drop procedure p_37269;
drop procedure if exists p_37228;
create procedure p_37228 ()
BEGIN
DECLARE v INT DEFAULT 123;
IF (v > 1) THEN SET v = 1;
ELSEIF (v < 10) THEN SET v = 10;
ELSEIF (v < 11) THEN SET v = 11;
ELSEIF (v < 12) THEN SET v = 12;
ELSEIF (v < 13) THEN SET v = 13;
ELSEIF (v < 14) THEN SET v = 14;
ELSEIF (v < 15) THEN SET v = 15;
ELSEIF (v < 16) THEN SET v = 16;
ELSEIF (v < 17) THEN SET v = 17;
ELSEIF (v < 18) THEN SET v = 18;
ELSEIF (v < 19) THEN SET v = 19;
ELSEIF (v < 20) THEN SET v = 20;
ELSEIF (v < 21) THEN SET v = 21;
ELSEIF (v < 22) THEN SET v = 22;
ELSEIF (v < 23) THEN SET v = 23;
ELSEIF (v < 24) THEN SET v = 24;
ELSEIF (v < 25) THEN SET v = 25;
ELSEIF (v < 26) THEN SET v = 26;
ELSEIF (v < 27) THEN SET v = 27;
ELSEIF (v < 28) THEN SET v = 28;
ELSEIF (v < 29) THEN SET v = 29;
ELSEIF (v < 30) THEN SET v = 30;
ELSEIF (v < 31) THEN SET v = 31;
ELSEIF (v < 32) THEN SET v = 32;
ELSEIF (v < 33) THEN SET v = 33;
ELSEIF (v < 34) THEN SET v = 34;
ELSEIF (v < 35) THEN SET v = 35;
ELSEIF (v < 36) THEN SET v = 36;
ELSEIF (v < 37) THEN SET v = 37;
ELSEIF (v < 38) THEN SET v = 38;
ELSEIF (v < 39) THEN SET v = 39;
END IF;
END $$
drop procedure p_37228;

View File

@ -1131,7 +1131,7 @@ NULL
2 2
explain partitions select * from t1 where a is null or a < 0 or a > 1; explain partitions select * from t1 where a is null or a < 0 or a > 1;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 pn,p2 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t1 pn,p2 ALL NULL NULL NULL NULL 4 Using where
drop table t1; drop table t1;
CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY, name VARCHAR(20)) CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY, name VARCHAR(20))
ENGINE=MyISAM DEFAULT CHARSET=latin1 ENGINE=MyISAM DEFAULT CHARSET=latin1

View File

@ -69,25 +69,25 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p0,p1,p2,p3 ALL NULL NULL NULL NULL 9 Using where 1 SIMPLE t1 p0,p1,p2,p3 ALL NULL NULL NULL NULL 9 Using where
explain partitions select * from t1 where a is null or (a >= 5 and a <= 7); explain partitions select * from t1 where a is null or (a >= 5 and a <= 7);
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p0,p2,p3 ALL NULL NULL NULL NULL 7 Using where 1 SIMPLE t1 p0,p2,p3 ALL NULL NULL NULL NULL 9 Using where
explain partitions select * from t1 where a is null; explain partitions select * from t1 where a is null;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 9 Using where
explain partitions select * from t1 where a is not null; explain partitions select * from t1 where a is not null;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p0,p1,p2,p3 ALL NULL NULL NULL NULL 9 Using where 1 SIMPLE t1 p0,p1,p2,p3 ALL NULL NULL NULL NULL 9 Using where
explain partitions select * from t1 where a >= 1 and a < 3; explain partitions select * from t1 where a >= 1 and a < 3;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p0,p1 ALL NULL NULL NULL NULL 5 Using where 1 SIMPLE t1 p0,p1 ALL NULL NULL NULL NULL 9 Using where
explain partitions select * from t1 where a >= 3 and a <= 5; explain partitions select * from t1 where a >= 3 and a <= 5;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p1,p2 ALL NULL NULL NULL NULL 4 Using where 1 SIMPLE t1 p1,p2 ALL NULL NULL NULL NULL 9 Using where
explain partitions select * from t1 where a > 2 and a < 4; explain partitions select * from t1 where a > 2 and a < 4;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p1 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t1 p1 ALL NULL NULL NULL NULL 9 Using where
explain partitions select * from t1 where a > 3 and a <= 6; explain partitions select * from t1 where a > 3 and a <= 6;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p2,p3 ALL NULL NULL NULL NULL 4 Using where 1 SIMPLE t1 p2,p3 ALL NULL NULL NULL NULL 9 Using where
explain partitions select * from t1 where a > 5; explain partitions select * from t1 where a > 5;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p0,p1,p2,p3 ALL NULL NULL NULL NULL 9 Using where 1 SIMPLE t1 p0,p1,p2,p3 ALL NULL NULL NULL NULL 9 Using where

View File

@ -31,7 +31,7 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 p0,p1 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t2 p0,p1 ALL NULL NULL NULL NULL 3 Using where
explain partitions select * from t2 where a=1 and b=1; explain partitions select * from t2 where a=1 and b=1;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 p0 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t2 p0 ALL NULL NULL NULL NULL 3 Using where
create table t3 ( create table t3 (
a int a int
) )
@ -89,25 +89,25 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
explain partitions select * from t5 explain partitions select * from t5
where (a=10 and b=1) or (a=10 and b=2) or (a=10 and b = 3); where (a=10 and b=1) or (a=10 and b=2) or (a=10 and b = 3);
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t5 p0_p0sp0,p0_p0sp1 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t5 p0_p0sp0,p0_p0sp1 ALL NULL NULL NULL NULL 4 Using where
explain partitions select * from t5 where (a=10 and b=2) or (a=10 and b=3) explain partitions select * from t5 where (a=10 and b=2) or (a=10 and b=3)
or (a=10 and b = 4); or (a=10 and b = 4);
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t5 p0_p0sp0,p0_p0sp1,p1_p1sp0,p1_p1sp1 ALL NULL NULL NULL NULL 4 Using where 1 SIMPLE t5 p0_p0sp0,p0_p0sp1,p1_p1sp0,p1_p1sp1 ALL NULL NULL NULL NULL 4 Using where
explain partitions select * from t5 where (c=1 and d=1); explain partitions select * from t5 where (c=1 and d=1);
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t5 p0_p0sp0,p1_p1sp0 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t5 p0_p0sp0,p1_p1sp0 ALL NULL NULL NULL NULL 4 Using where
explain partitions select * from t5 where (c=2 and d=1); explain partitions select * from t5 where (c=2 and d=1);
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t5 p0_p0sp1,p1_p1sp1 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t5 p0_p0sp1,p1_p1sp1 ALL NULL NULL NULL NULL 4 Using where
explain partitions select * from t5 where (a=10 and b=2 and c=1 and d=1) or explain partitions select * from t5 where (a=10 and b=2 and c=1 and d=1) or
(c=2 and d=1); (c=2 and d=1);
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t5 p0_p0sp0,p0_p0sp1,p1_p1sp1 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t5 p0_p0sp0,p0_p0sp1,p1_p1sp1 ALL NULL NULL NULL NULL 4 Using where
explain partitions select * from t5 where (a=10 and b=2 and c=1 and d=1) or explain partitions select * from t5 where (a=10 and b=2 and c=1 and d=1) or
(b=2 and c=2 and d=1); (b=2 and c=2 and d=1);
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t5 p0_p0sp0,p0_p0sp1,p1_p1sp1 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t5 p0_p0sp0,p0_p0sp1,p1_p1sp1 ALL NULL NULL NULL NULL 4 Using where
create table t6 (a int not null) partition by LIST(a) ( create table t6 (a int not null) partition by LIST(a) (
partition p1 values in (1), partition p1 values in (1),
partition p3 values in (3), partition p3 values in (3),
@ -145,7 +145,7 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t6 p5,p7,p9 system NULL NULL NULL NULL 1 1 SIMPLE t6 p5,p7,p9 system NULL NULL NULL NULL 1
explain partitions select * from t6 where a >= 3 and a <= 8; explain partitions select * from t6 where a >= 3 and a <= 8;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t6 p3,p5,p7 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t6 p3,p5,p7 ALL NULL NULL NULL NULL 3 Using where
explain partitions select * from t6 where a > 3 and a < 5; explain partitions select * from t6 where a > 3 and a < 5;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
@ -187,7 +187,7 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t6 p5,p7,p9 system NULL NULL NULL NULL 1 1 SIMPLE t6 p5,p7,p9 system NULL NULL NULL NULL 1
explain partitions select * from t6 where a >= 3 and a <= 8; explain partitions select * from t6 where a >= 3 and a <= 8;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t6 p3,p5,p7 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t6 p3,p5,p7 ALL NULL NULL NULL NULL 3 Using where
explain partitions select * from t6 where a > 3 and a < 5; explain partitions select * from t6 where a > 3 and a < 5;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
@ -342,7 +342,7 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
explain partitions explain partitions
select * from t1 X, t1 Y where X.a = Y.a and (X.a=1 or X.a=2); select * from t1 X, t1 Y where X.a = Y.a and (X.a=1 or X.a=2);
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE X p1,p2 ALL a NULL NULL NULL 2 Using where 1 SIMPLE X p1,p2 ALL a NULL NULL NULL 4 Using where
1 SIMPLE Y p1,p2 ref a a 4 test.X.a 2 1 SIMPLE Y p1,p2 ref a a 4 test.X.a 2
drop table t1; drop table t1;
create table t1 (a int) partition by hash(a) partitions 20; create table t1 (a int) partition by hash(a) partitions 20;
@ -355,7 +355,7 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p1,p2 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t1 p1,p2 ALL NULL NULL NULL NULL 2 Using where
explain partitions select * from t1 where a > 1 and a <= 3; explain partitions select * from t1 where a > 1 and a <= 3;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p2,p3 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t1 p2,p3 ALL NULL NULL NULL NULL 3 Using where
explain partitions select * from t1 where a >= 1 and a <= 3; explain partitions select * from t1 where a >= 1 and a <= 3;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p1,p2,p3 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t1 p1,p2,p3 ALL NULL NULL NULL NULL 3 Using where
@ -445,22 +445,22 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 p0,p1,p2,p3,p4 ALL NULL NULL NULL NULL 1010 1 SIMPLE t2 p0,p1,p2,p3,p4 ALL NULL NULL NULL NULL 1010
explain partitions select * from t2 where a < 801 and a > 200; explain partitions select * from t2 where a < 801 and a > 200;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 p1,p2,p3,p4 ALL NULL NULL NULL NULL 800 Using where 1 SIMPLE t2 p1,p2,p3,p4 ALL NULL NULL NULL NULL 1010 Using where
explain partitions select * from t2 where a < 801 and a > 800; explain partitions select * from t2 where a < 801 and a > 800;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 p4 ALL NULL NULL NULL NULL 200 Using where 1 SIMPLE t2 p4 ALL NULL NULL NULL NULL 1010 Using where
explain partitions select * from t2 where a > 600; explain partitions select * from t2 where a > 600;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 p3,p4 ALL NULL NULL NULL NULL 400 Using where 1 SIMPLE t2 p3,p4 ALL NULL NULL NULL NULL 1010 Using where
explain partitions select * from t2 where a > 600 and b = 1; explain partitions select * from t2 where a > 600 and b = 1;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 p3,p4 ALL NULL NULL NULL NULL 400 Using where 1 SIMPLE t2 p3,p4 ALL NULL NULL NULL NULL 1010 Using where
explain partitions select * from t2 where a > 600 and b = 4; explain partitions select * from t2 where a > 600 and b = 4;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 p3,p4 ALL NULL NULL NULL NULL 400 Using where 1 SIMPLE t2 p3,p4 ALL NULL NULL NULL NULL 1010 Using where
explain partitions select * from t2 where a > 600 and b = 5; explain partitions select * from t2 where a > 600 and b = 5;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 p3,p4 ALL NULL NULL NULL NULL 400 Using where 1 SIMPLE t2 p3,p4 ALL NULL NULL NULL NULL 1010 Using where
explain partitions select * from t2 where b = 5; explain partitions select * from t2 where b = 5;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 p0,p1,p2,p3,p4 ALL NULL NULL NULL NULL 1010 Using where 1 SIMPLE t2 p0,p1,p2,p3,p4 ALL NULL NULL NULL NULL 1010 Using where
@ -515,19 +515,19 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 p0,p1,p2,p3,p4 ALL NULL NULL NULL NULL 910 1 SIMPLE t2 p0,p1,p2,p3,p4 ALL NULL NULL NULL NULL 910
explain partitions select * from t2 where a = 101; explain partitions select * from t2 where a = 101;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 p0 ALL NULL NULL NULL NULL 110 Using where 1 SIMPLE t2 p0 ALL NULL NULL NULL NULL 910 Using where
explain partitions select * from t2 where a = 550; explain partitions select * from t2 where a = 550;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 p2 ALL NULL NULL NULL NULL 200 Using where 1 SIMPLE t2 p2 ALL NULL NULL NULL NULL 910 Using where
explain partitions select * from t2 where a = 833; explain partitions select * from t2 where a = 833;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 p4 ALL NULL NULL NULL NULL 200 Using where 1 SIMPLE t2 p4 ALL NULL NULL NULL NULL 910 Using where
explain partitions select * from t2 where (a = 100 OR a = 900); explain partitions select * from t2 where (a = 100 OR a = 900);
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 p0,p4 ALL NULL NULL NULL NULL 310 Using where 1 SIMPLE t2 p0,p4 ALL NULL NULL NULL NULL 910 Using where
explain partitions select * from t2 where (a > 100 AND a < 600); explain partitions select * from t2 where (a > 100 AND a < 600);
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 p0,p1,p2,p3 ALL NULL NULL NULL NULL 710 Using where 1 SIMPLE t2 p0,p1,p2,p3 ALL NULL NULL NULL NULL 910 Using where
explain partitions select * from t2 where b = 4; explain partitions select * from t2 where b = 4;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 p0,p1,p2,p3,p4 ref b b 5 const 76 Using where 1 SIMPLE t2 p0,p1,p2,p3,p4 ref b b 5 const 76 Using where
@ -813,17 +813,17 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
explain partitions select * from t1 explain partitions select * from t1
where a >= 18446744073709551000-1 and a <= 18446744073709551000+1; where a >= 18446744073709551000-1 and a <= 18446744073709551000+1;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p3,p4 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t1 p3,p4 ALL NULL NULL NULL NULL 4 Using where
explain partitions select * from t1 explain partitions select * from t1
where a between 18446744073709551001 and 18446744073709551002; where a between 18446744073709551001 and 18446744073709551002;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p4 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t1 p4 ALL NULL NULL NULL NULL 4 Using where
explain partitions select * from t1 where a = 18446744073709551000; explain partitions select * from t1 where a = 18446744073709551000;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p4 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t1 p4 ALL NULL NULL NULL NULL 4 Using where
explain partitions select * from t1 where a = 18446744073709551613; explain partitions select * from t1 where a = 18446744073709551613;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p4 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t1 p4 ALL NULL NULL NULL NULL 4 Using where
explain partitions select * from t1 where a = 18446744073709551614; explain partitions select * from t1 where a = 18446744073709551614;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
@ -850,10 +850,10 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 p0 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t2 p0 ALL NULL NULL NULL NULL 2 Using where
explain partitions select * from t1 where a=0xFE; explain partitions select * from t1 where a=0xFE;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p2 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t1 p2 ALL NULL NULL NULL NULL 4 Using where
explain partitions select * from t2 where a=0xFE; explain partitions select * from t2 where a=0xFE;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 p2 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t2 p2 ALL NULL NULL NULL NULL 4 Using where
explain partitions select * from t1 where a > 0xFE AND a <= 0xFF; explain partitions select * from t1 where a > 0xFE AND a <= 0xFF;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
@ -862,22 +862,22 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
explain partitions select * from t1 where a >= 0xFE AND a <= 0xFF; explain partitions select * from t1 where a >= 0xFE AND a <= 0xFF;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p2 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t1 p2 ALL NULL NULL NULL NULL 4 Using where
explain partitions select * from t2 where a >= 0xFE AND a <= 0xFF; explain partitions select * from t2 where a >= 0xFE AND a <= 0xFF;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 p2 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t2 p2 ALL NULL NULL NULL NULL 4 Using where
explain partitions select * from t1 where a < 64 AND a >= 63; explain partitions select * from t1 where a < 64 AND a >= 63;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 4 Using where
explain partitions select * from t2 where a < 64 AND a >= 63; explain partitions select * from t2 where a < 64 AND a >= 63;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 p0 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t2 p0 ALL NULL NULL NULL NULL 4 Using where
explain partitions select * from t1 where a <= 64 AND a >= 63; explain partitions select * from t1 where a <= 64 AND a >= 63;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p0,p1 ALL NULL NULL NULL NULL 4 Using where 1 SIMPLE t1 p0,p1 ALL NULL NULL NULL NULL 6 Using where
explain partitions select * from t2 where a <= 64 AND a >= 63; explain partitions select * from t2 where a <= 64 AND a >= 63;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 p0,p1 ALL NULL NULL NULL NULL 4 Using where 1 SIMPLE t2 p0,p1 ALL NULL NULL NULL NULL 6 Using where
drop table t1; drop table t1;
drop table t2; drop table t2;
create table t1(a bigint unsigned not null) partition by range(a+0) ( create table t1(a bigint unsigned not null) partition by range(a+0) (

View File

@ -57,13 +57,13 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 pnull system NULL NULL NULL NULL 1 1 SIMPLE t1 pnull system NULL NULL NULL NULL 1
explain partitions select * from t1 where a >= 0; explain partitions select * from t1 where a >= 0;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p0,p1 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t1 p0,p1 ALL NULL NULL NULL NULL 3 Using where
explain partitions select * from t1 where a < 0; explain partitions select * from t1 where a < 0;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
explain partitions select * from t1 where a <= 0; explain partitions select * from t1 where a <= 0;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 pnull,p0 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t1 pnull,p0 ALL NULL NULL NULL NULL 3 Using where
explain partitions select * from t1 where a > 1; explain partitions select * from t1 where a > 1;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
@ -96,16 +96,16 @@ select * from t1 where a > 1;
a b a b
explain partitions select * from t1 where a is null; explain partitions select * from t1 where a is null;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 pnull_pnullsp0,pnull_pnullsp1 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t1 pnull_pnullsp0,pnull_pnullsp1 ALL NULL NULL NULL NULL 6 Using where
explain partitions select * from t1 where a >= 0; explain partitions select * from t1 where a >= 0;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p0_p0sp0,p0_p0sp1,p1_p1sp0,p1_p1sp1 ALL NULL NULL NULL NULL 4 Using where 1 SIMPLE t1 p0_p0sp0,p0_p0sp1,p1_p1sp0,p1_p1sp1 ALL NULL NULL NULL NULL 6 Using where
explain partitions select * from t1 where a < 0; explain partitions select * from t1 where a < 0;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 pnull_pnullsp0,pnull_pnullsp1 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t1 pnull_pnullsp0,pnull_pnullsp1 ALL NULL NULL NULL NULL 6 Using where
explain partitions select * from t1 where a <= 0; explain partitions select * from t1 where a <= 0;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 pnull_pnullsp0,pnull_pnullsp1,p0_p0sp0,p0_p0sp1 ALL NULL NULL NULL NULL 4 Using where 1 SIMPLE t1 pnull_pnullsp0,pnull_pnullsp1,p0_p0sp0,p0_p0sp1 ALL NULL NULL NULL NULL 6 Using where
explain partitions select * from t1 where a > 1; explain partitions select * from t1 where a > 1;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables

View File

@ -85,9 +85,9 @@ NULL
NULL NULL
NULL NULL
prepare stmt6 from 'select 1; select2'; prepare stmt6 from 'select 1; select2';
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '; select2' at line 1 ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select2' at line 1
prepare stmt6 from 'insert into t1 values (5,"five"); select2'; prepare stmt6 from 'insert into t1 values (5,"five"); select2';
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '; select2' at line 1 ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select2' at line 1
explain prepare stmt6 from 'insert into t1 values (5,"five"); select2'; explain prepare stmt6 from 'insert into t1 values (5,"five"); select2';
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from 'insert into t1 values (5,"five"); select2'' at line 1 ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from 'insert into t1 values (5,"five"); select2'' at line 1
create table t2 create table t2

View File

@ -290,7 +290,7 @@ SUCCESS
# Test 7-b: dependent FUNCTION has changed # Test 7-b: dependent FUNCTION has changed
# #
# Note, this scenario is not supported, subject of Bug#12093 # Note, this scenario is supported, subject of Bug#12093
# #
drop trigger t1_ai; drop trigger t1_ai;
create trigger t1_ai after insert on t1 for each row create trigger t1_ai after insert on t1 for each row
@ -305,8 +305,7 @@ select @var;
drop function f1; drop function f1;
create function f1 (a int) returns int return 0; create function f1 (a int) returns int return 0;
execute stmt using @var; execute stmt using @var;
ERROR 42000: FUNCTION test.f1 does not exist call p_verify_reprepare_count(1);
call p_verify_reprepare_count(0);
SUCCESS SUCCESS
drop function f1; drop function f1;
@ -359,8 +358,14 @@ a
drop view v1; drop view v1;
create view v1 as select a from t2; create view v1 as select a from t2;
set @var=8; set @var=8;
# XXX: bug, the SQL statement in the trigger is still
# pointing at table 't3', since the view was expanded
# at first statement execution.
# Repreparation of the main statement doesn't cause repreparation
# of trigger statements.
execute stmt using @var; execute stmt using @var;
call p_verify_reprepare_count(0); ERROR 42S02: Table 'test.t3' doesn't exist
call p_verify_reprepare_count(1);
SUCCESS SUCCESS
# #
@ -377,7 +382,6 @@ select * from t3;
a a
6 6
7 7
8
flush table t1; flush table t1;
set @var=9; set @var=9;
execute stmt using @var; execute stmt using @var;
@ -392,7 +396,6 @@ select * from t3;
a a
6 6
7 7
8
drop view v1; drop view v1;
drop table t1,t2,t3; drop table t1,t2,t3;
# Test 7-d: dependent TABLE has changed # Test 7-d: dependent TABLE has changed
@ -798,14 +801,17 @@ SUCCESS
drop function f1; drop function f1;
create function f1() returns int return 2; create function f1() returns int return 2;
# XXX: Bug#12093. We only get a different error # XXX: Used to be another manifestation of Bug#12093.
# We only used to get a different error
# message because the non-existing procedure error is masked # message because the non-existing procedure error is masked
# by the view. # by the view.
execute stmt; execute stmt;
ERROR HY000: View 'test.v1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them f1()
2
execute stmt; execute stmt;
ERROR HY000: View 'test.v1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them f1()
call p_verify_reprepare_count(0); 2
call p_verify_reprepare_count(1);
SUCCESS SUCCESS
# Part 18b: dependent procedure has changed (referred to via a function) # Part 18b: dependent procedure has changed (referred to via a function)
@ -831,19 +837,20 @@ SUCCESS
drop procedure p1; drop procedure p1;
create procedure p1(out x int) select max(a) from t2 into x; create procedure p1(out x int) select max(a) from t2 into x;
# XXX: bug. The prelocked list is not invalidated # XXX: used to be a bug. The prelocked list was not invalidated
# and we keep opening table t1, whereas the procedure # and we kept opening table t1, whereas the procedure
# is now referring to table t2 # is now referring to table t2
execute stmt; execute stmt;
ERROR HY000: View 'test.v1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them f1()
call p_verify_reprepare_count(0); 6
call p_verify_reprepare_count(1);
SUCCESS SUCCESS
flush table t1; flush table t1;
execute stmt; execute stmt;
f1() f1()
6 6
call p_verify_reprepare_count(1); call p_verify_reprepare_count(0);
SUCCESS SUCCESS
execute stmt; execute stmt;
@ -1528,7 +1535,6 @@ drop view v_27690_1;
drop table v_27690_2; drop table v_27690_2;
deallocate prepare stmt; deallocate prepare stmt;
#===================================================================== #=====================================================================
# TODO: fix the below two bugs and modify their tests
# #
# Bug#21294 Executing a prepared statement that executes # Bug#21294 Executing a prepared statement that executes
# a stored function which was recreat # a stored function which was recreat
@ -1541,12 +1547,14 @@ f1()
drop function f1; drop function f1;
create function f1() returns int return 10; create function f1() returns int return 10;
execute stmt; execute stmt;
ERROR 42000: FUNCTION test.f1 does not exist f1()
10
drop function f1; drop function f1;
create function f1() returns int return 20; create function f1() returns int return 20;
execute stmt; execute stmt;
ERROR 42000: FUNCTION test.f1 does not exist f1()
call p_verify_reprepare_count(0); 20
call p_verify_reprepare_count(2);
SUCCESS SUCCESS
drop function f1; drop function f1;
@ -1573,19 +1581,21 @@ execute stmt_sp;
a a
drop function f_12093_unrelated; drop function f_12093_unrelated;
drop procedure p_12093_unrelated; drop procedure p_12093_unrelated;
# XXX: bug # XXX: used to be a bug
execute stmt_sf; execute stmt_sf;
ERROR 42000: FUNCTION test.f_12093 does not exist f_12093()
# XXX: bug 0
# XXX: used to be a bug
execute stmt_sp; execute stmt_sp;
ERROR 42000: PROCEDURE test.p_12093 does not exist a
# XXX: bug # XXX: used to be a bug
execute stmt_sf; execute stmt_sf;
ERROR 42000: FUNCTION test.f_12093 does not exist f_12093()
# XXX: bug 0
# XXX: used to be a bug
execute stmt_sp; execute stmt_sp;
ERROR 42000: PROCEDURE test.p_12093 does not exist a
call p_verify_reprepare_count(0); call p_verify_reprepare_count(2);
SUCCESS SUCCESS
drop table t_12093; drop table t_12093;

View File

@ -460,7 +460,7 @@ create schema mysqltest;
end| end|
execute stmt; execute stmt;
ERROR 42000: PROCEDURE test.p1 does not exist ERROR 42000: PROCEDURE test.p1 does not exist
call p_verify_reprepare_count(0); call p_verify_reprepare_count(1);
SUCCESS SUCCESS
execute stmt; execute stmt;

View File

@ -35,10 +35,6 @@ SET @@global.query_prealloc_size = 8192;
SELECT @@global.query_prealloc_size ; SELECT @@global.query_prealloc_size ;
@@global.query_prealloc_size @@global.query_prealloc_size
8192 8192
SET @@global.query_prealloc_size = 4294967295;
SELECT @@global.query_prealloc_size ;
@@global.query_prealloc_size
4294966272
SET @@global.query_prealloc_size = 655354; SET @@global.query_prealloc_size = 655354;
SELECT @@global.query_prealloc_size ; SELECT @@global.query_prealloc_size ;
@@global.query_prealloc_size @@global.query_prealloc_size
@ -48,10 +44,6 @@ SET @@session.query_prealloc_size = 8192;
SELECT @@session.query_prealloc_size ; SELECT @@session.query_prealloc_size ;
@@session.query_prealloc_size @@session.query_prealloc_size
8192 8192
SET @@session.query_prealloc_size = 4294967295;
SELECT @@session.query_prealloc_size ;
@@session.query_prealloc_size
4294966272
SET @@session.query_prealloc_size = 655345; SET @@session.query_prealloc_size = 655345;
SELECT @@session.query_prealloc_size ; SELECT @@session.query_prealloc_size ;
@@session.query_prealloc_size @@session.query_prealloc_size
@ -69,37 +61,31 @@ Warning 1292 Truncated incorrect query_prealloc_size value: '0'
SELECT @@global.query_prealloc_size ; SELECT @@global.query_prealloc_size ;
@@global.query_prealloc_size @@global.query_prealloc_size
8192 8192
SET @@global.query_prealloc_size = 429496729533;
Warnings:
Warning 1292 Truncated incorrect query_prealloc_size value: '429496729533'
SELECT @@global.query_prealloc_size ;
@@global.query_prealloc_size
4294966272
SET @@global.query_prealloc_size = 65530.34.; SET @@global.query_prealloc_size = 65530.34.;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1
SELECT @@global.query_prealloc_size ; SELECT @@global.query_prealloc_size ;
@@global.query_prealloc_size @@global.query_prealloc_size
4294966272 8192
SET @@global.query_prealloc_size = test; SET @@global.query_prealloc_size = test;
ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' ERROR 42000: Incorrect argument type to variable 'query_prealloc_size'
SELECT @@global.query_prealloc_size ; SELECT @@global.query_prealloc_size ;
@@global.query_prealloc_size @@global.query_prealloc_size
4294966272 8192
SET @@global.query_prealloc_size = "test"; SET @@global.query_prealloc_size = "test";
ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' ERROR 42000: Incorrect argument type to variable 'query_prealloc_size'
SELECT @@global.query_prealloc_size ; SELECT @@global.query_prealloc_size ;
@@global.query_prealloc_size @@global.query_prealloc_size
4294966272 8192
SET @@global.query_prealloc_size = 'test'; SET @@global.query_prealloc_size = 'test';
ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' ERROR 42000: Incorrect argument type to variable 'query_prealloc_size'
SELECT @@global.query_prealloc_size ; SELECT @@global.query_prealloc_size ;
@@global.query_prealloc_size @@global.query_prealloc_size
4294966272 8192
SET @@global.query_prealloc_size = ON; SET @@global.query_prealloc_size = ON;
ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' ERROR 42000: Incorrect argument type to variable 'query_prealloc_size'
SELECT @@global.query_prealloc_size ; SELECT @@global.query_prealloc_size ;
@@global.query_prealloc_size @@global.query_prealloc_size
4294966272 8192
SET @@session.query_prealloc_size = 0; SET @@session.query_prealloc_size = 0;
Warnings: Warnings:
Warning 1292 Truncated incorrect query_prealloc_size value: '0' Warning 1292 Truncated incorrect query_prealloc_size value: '0'
@ -128,14 +114,14 @@ SELECT @@session.query_prealloc_size ;
@@session.query_prealloc_size @@session.query_prealloc_size
8192 8192
'#------------------FN_DYNVARS_005_06-----------------------#' '#------------------FN_DYNVARS_005_06-----------------------#'
SELECT @@global.query_prealloc_size = VARIABLE_VALUE SELECT @@global.query_prealloc_size = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='query_prealloc_size '; WHERE VARIABLE_NAME='query_prealloc_size ';
@@global.query_prealloc_size = VARIABLE_VALUE @@global.query_prealloc_size = VARIABLE_VALUE
1 1
'#------------------FN_DYNVARS_005_07-----------------------#' '#------------------FN_DYNVARS_005_07-----------------------#'
SELECT @@session.query_prealloc_size = VARIABLE_VALUE SELECT @@session.query_prealloc_size = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='query_prealloc_size '; WHERE VARIABLE_NAME='query_prealloc_size ';
@@session.query_prealloc_size = VARIABLE_VALUE @@session.query_prealloc_size = VARIABLE_VALUE
1 1

View File

@ -35,10 +35,6 @@ SET @@global.query_prealloc_size = 8192;
SELECT @@global.query_prealloc_size ; SELECT @@global.query_prealloc_size ;
@@global.query_prealloc_size @@global.query_prealloc_size
8192 8192
SET @@global.query_prealloc_size = 4294967295;
SELECT @@global.query_prealloc_size ;
@@global.query_prealloc_size
4294966272
SET @@global.query_prealloc_size = 655354; SET @@global.query_prealloc_size = 655354;
SELECT @@global.query_prealloc_size ; SELECT @@global.query_prealloc_size ;
@@global.query_prealloc_size @@global.query_prealloc_size
@ -48,10 +44,6 @@ SET @@session.query_prealloc_size = 8192;
SELECT @@session.query_prealloc_size ; SELECT @@session.query_prealloc_size ;
@@session.query_prealloc_size @@session.query_prealloc_size
8192 8192
SET @@session.query_prealloc_size = 4294967295;
SELECT @@session.query_prealloc_size ;
@@session.query_prealloc_size
4294966272
SET @@session.query_prealloc_size = 655345; SET @@session.query_prealloc_size = 655345;
SELECT @@session.query_prealloc_size ; SELECT @@session.query_prealloc_size ;
@@session.query_prealloc_size @@session.query_prealloc_size
@ -69,35 +61,31 @@ Warning 1292 Truncated incorrect query_prealloc_size value: '0'
SELECT @@global.query_prealloc_size ; SELECT @@global.query_prealloc_size ;
@@global.query_prealloc_size @@global.query_prealloc_size
8192 8192
SET @@global.query_prealloc_size = 429496729533;
SELECT @@global.query_prealloc_size ;
@@global.query_prealloc_size
429496728576
SET @@global.query_prealloc_size = 65530.34.; SET @@global.query_prealloc_size = 65530.34.;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1
SELECT @@global.query_prealloc_size ; SELECT @@global.query_prealloc_size ;
@@global.query_prealloc_size @@global.query_prealloc_size
429496728576 8192
SET @@global.query_prealloc_size = test; SET @@global.query_prealloc_size = test;
ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' ERROR 42000: Incorrect argument type to variable 'query_prealloc_size'
SELECT @@global.query_prealloc_size ; SELECT @@global.query_prealloc_size ;
@@global.query_prealloc_size @@global.query_prealloc_size
429496728576 8192
SET @@global.query_prealloc_size = "test"; SET @@global.query_prealloc_size = "test";
ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' ERROR 42000: Incorrect argument type to variable 'query_prealloc_size'
SELECT @@global.query_prealloc_size ; SELECT @@global.query_prealloc_size ;
@@global.query_prealloc_size @@global.query_prealloc_size
429496728576 8192
SET @@global.query_prealloc_size = 'test'; SET @@global.query_prealloc_size = 'test';
ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' ERROR 42000: Incorrect argument type to variable 'query_prealloc_size'
SELECT @@global.query_prealloc_size ; SELECT @@global.query_prealloc_size ;
@@global.query_prealloc_size @@global.query_prealloc_size
429496728576 8192
SET @@global.query_prealloc_size = ON; SET @@global.query_prealloc_size = ON;
ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' ERROR 42000: Incorrect argument type to variable 'query_prealloc_size'
SELECT @@global.query_prealloc_size ; SELECT @@global.query_prealloc_size ;
@@global.query_prealloc_size @@global.query_prealloc_size
429496728576 8192
SET @@session.query_prealloc_size = 0; SET @@session.query_prealloc_size = 0;
Warnings: Warnings:
Warning 1292 Truncated incorrect query_prealloc_size value: '0' Warning 1292 Truncated incorrect query_prealloc_size value: '0'
@ -126,14 +114,14 @@ SELECT @@session.query_prealloc_size ;
@@session.query_prealloc_size @@session.query_prealloc_size
8192 8192
'#------------------FN_DYNVARS_005_06-----------------------#' '#------------------FN_DYNVARS_005_06-----------------------#'
SELECT @@global.query_prealloc_size = VARIABLE_VALUE SELECT @@global.query_prealloc_size = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='query_prealloc_size '; WHERE VARIABLE_NAME='query_prealloc_size ';
@@global.query_prealloc_size = VARIABLE_VALUE @@global.query_prealloc_size = VARIABLE_VALUE
1 1
'#------------------FN_DYNVARS_005_07-----------------------#' '#------------------FN_DYNVARS_005_07-----------------------#'
SELECT @@session.query_prealloc_size = VARIABLE_VALUE SELECT @@session.query_prealloc_size = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='query_prealloc_size '; WHERE VARIABLE_NAME='query_prealloc_size ';
@@session.query_prealloc_size = VARIABLE_VALUE @@session.query_prealloc_size = VARIABLE_VALUE
1 1

View File

@ -797,7 +797,7 @@ bug11834_2()
10 10
drop function bug11834_1; drop function bug11834_1;
execute stmt; execute stmt;
ERROR 42000: FUNCTION test.bug11834_2 does not exist ERROR 42000: FUNCTION test.bug11834_1 does not exist
deallocate prepare stmt; deallocate prepare stmt;
drop function bug11834_2; drop function bug11834_2;
DROP FUNCTION IF EXISTS bug12953| DROP FUNCTION IF EXISTS bug12953|
@ -1046,7 +1046,8 @@ select bug12329();
bug12329() bug12329()
101 101
execute stmt1; execute stmt1;
ERROR 42S02: Table 'test.t2' doesn't exist bug12329()
101
deallocate prepare stmt1; deallocate prepare stmt1;
drop function bug12329; drop function bug12329;
drop table t1, t2; drop table t1, t2;

View File

@ -4398,3 +4398,4 @@ INSERT INTO t1 VALUES (1), (3);
SELECT * FROM t2 WHERE b NOT IN (SELECT max(t.c) FROM t1, t1 t WHERE t.c>10); SELECT * FROM t2 WHERE b NOT IN (SELECT max(t.c) FROM t1, t1 t WHERE t.c>10);
a b a b
DROP TABLE t1,t2; DROP TABLE t1,t2;
End of 5.0 tests.

View File

@ -0,0 +1,12 @@
CREATE TABLE t1(id INT);
INSERT INTO t1 VALUES (1),(2),(3),(4);
INSERT INTO t1 SELECT a.id FROM t1 a,t1 b,t1 c,t1 d;
SET SESSION debug="d,subselect_exec_fail";
SELECT SUM(EXISTS(SELECT RAND() FROM t1)) FROM t1;
SUM(EXISTS(SELECT RAND() FROM t1))
0
SELECT REVERSE(EXISTS(SELECT RAND() FROM t1));
REVERSE(EXISTS(SELECT RAND() FROM t1))
0
SET SESSION debug=DEFAULT;
DROP TABLE t1;

View File

@ -95,3 +95,34 @@ table_28127_b CREATE TABLE `table_28127_b` (
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table table_28127_a; drop table table_28127_a;
drop table table_28127_b; drop table table_28127_b;
select 0b01000001;
0b01000001
A
select 0x41;
0x41
A
select b'01000001';
b'01000001'
A
select x'41', 0+x'41';
x'41' 0+x'41'
A 65
select N'abc', length(N'abc');
abc length(N'abc')
abc 3
select N'', length(N'');
length(N'')
0
select '', length('');
length('')
0
select b'', 0+b'';
b'' 0+b''
0
select x'', 0+x'';
x'' 0+x''
0
select 0x;
ERROR 42S22: Unknown column '0x' in 'field list'
select 0b;
ERROR 42S22: Unknown column '0b' in 'field list'

View File

@ -66,4 +66,28 @@ a
1 1
1 1
3 3
drop table t1; CREATE TABLE char128_utf8 (
i1 INT NOT NULL,
c CHAR(128) CHARACTER SET utf8 NOT NULL,
i2 INT NOT NULL);
CREATE TABLE char63_utf8 (
i1 INT NOT NULL,
c CHAR(63) CHARACTER SET utf8 NOT NULL,
i2 INT NOT NULL);
BINLOG '
MuNkSA8BAAAAZgAAAGoAAAAAAAQANS4xLjI1LXJjLWRlYnVnLWxvZwAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAy42RIEzgNAAgAEgAEBAQEEgAAUwAEGggAAAAICAgC
';
BINLOG '
3u9kSBMBAAAANgAAAJYBAAAAABAAAAAAAAAABHRlc3QAC2NoYXI2M191dGY4AAMD/gMC/r0A
3u9kSBcBAAAAKgAAAMABAAAQABAAAAAAAAEAA//4AQAAAAMxMjMBAAAA
';
SELECT * FROM char63_utf8;
i1 c i2
1 123 1
BINLOG '
iONkSBMBAAAANwAAAJkBAAAAABAAAAAAAAAABHRlc3QADGNoYXIxMjhfdXRmOAADA/4DAv6AAA==
iONkSBcBAAAAKwAAAMQBAAAQABAAAAAAAAEAA//4AQAAAAMAMTIzAQAAAA==
';
ERROR HY000: master may suffer from http://bugs.mysql.com/bug.php?id=37426 so slave stops; check error log on slave for more info
drop table t1, char63_utf8, char128_utf8;

View File

@ -104,6 +104,49 @@ Dl1YRxcBAAAAIgAAAFYBAAAQABAAAAAAAAEAAf/+BQAAAA==
# the above line should fail and 5 should not be in the binlog. # the above line should fail and 5 should not be in the binlog.
select * from t1; select * from t1;
# Test that BUG#37426 is triggered.
# clean up CREATE TABLE char128_utf8 (
drop table t1; i1 INT NOT NULL,
c CHAR(128) CHARACTER SET utf8 NOT NULL,
i2 INT NOT NULL);
CREATE TABLE char63_utf8 (
i1 INT NOT NULL,
c CHAR(63) CHARACTER SET utf8 NOT NULL,
i2 INT NOT NULL);
#
# This is the format description log event
#
BINLOG '
MuNkSA8BAAAAZgAAAGoAAAAAAAQANS4xLjI1LXJjLWRlYnVnLWxvZwAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAy42RIEzgNAAgAEgAEBAQEEgAAUwAEGggAAAAICAgC
';
# ... this event corresponding to
#
# INSERT INTO char63_utf8 VALUES ( 1, "123", 1 )
#
# The binlog event below shall not trigger the bug check
BINLOG '
3u9kSBMBAAAANgAAAJYBAAAAABAAAAAAAAAABHRlc3QAC2NoYXI2M191dGY4AAMD/gMC/r0A
3u9kSBcBAAAAKgAAAMABAAAQABAAAAAAAAEAA//4AQAAAAMxMjMBAAAA
';
SELECT * FROM char63_utf8;
# ... and this is an event corresponding to
#
# INSERT INTO char128_utf8 VALUES ( 1, "123", 1 )
#
# The binlog event below shall trigger the bug check and produce an error
#
error ER_UNKNOWN_ERROR;
BINLOG '
iONkSBMBAAAANwAAAJkBAAAAABAAAAAAAAAABHRlc3QADGNoYXIxMjhfdXRmOAADA/4DAv6AAA==
iONkSBcBAAAAKwAAAMQBAAAQABAAAAAAAAEAA//4AQAAAAMAMTIzAQAAAA==
';
drop table t1, char63_utf8, char128_utf8;

View File

@ -0,0 +1,8 @@
[row]
--binlog-format=row
[stmt]
--binlog-format=statement
[mix]
--binlog-format=mixed

View File

@ -0,0 +1,17 @@
stop slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
CREATE TABLE char128_utf8 (
i1 INT NOT NULL,
c CHAR(128) CHARACTER SET utf8 NOT NULL,
i2 INT NOT NULL);
INSERT INTO char128_utf8 VALUES ( 1, "123", 1 );
SELECT * FROM char128_utf8;
i1 c i2
1 123 1
SELECT * FROM char128_utf8;
i1 c i2
1 123 1

View File

@ -0,0 +1,22 @@
#############################################################
# Author: Mats Kindahl <mats@mysql.com>
# Date: 2008-06-18
# Purpose: Test for BUG#37426
# RBR breaks for CHAR() UTF8 fields > 85 chars
#############################################################
source include/master-slave.inc;
source include/have_binlog_format_row.inc;
connection master;
CREATE TABLE char128_utf8 (
i1 INT NOT NULL,
c CHAR(128) CHARACTER SET utf8 NOT NULL,
i2 INT NOT NULL);
INSERT INTO char128_utf8 VALUES ( 1, "123", 1 );
SELECT * FROM char128_utf8;
sync_slave_with_master;
SELECT * FROM char128_utf8;

View File

@ -3635,13 +3635,9 @@ SELECT count(*) into cnt from t2;
set @count = cnt; set @count = cnt;
SELECT @count; SELECT @count;
END// END//
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '; ERROR 42S22: Unknown column 'cnt' in 'field list'
set @count = cnt;
SELECT @count;
END' at line 2
CALL sp1( 10 ); CALL sp1( 10 );
ERROR 42000: PROCEDURE db_storedproc.sp1 does not exist DROP PROCEDURE sp1;
DROP PROCEDURE IF EXISTS sp1;
CREATE PROCEDURE sp1( cnt int(20) ) CREATE PROCEDURE sp1( cnt int(20) )
END END
SELECT count(*) into cnt from t2; SELECT count(*) into cnt from t2;

View File

@ -3636,13 +3636,9 @@ SELECT count(*) into cnt from t2;
set @count = cnt; set @count = cnt;
SELECT @count; SELECT @count;
END// END//
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '; ERROR 42S22: Unknown column 'cnt' in 'field list'
set @count = cnt;
SELECT @count;
END' at line 2
CALL sp1( 10 ); CALL sp1( 10 );
ERROR 42000: PROCEDURE db_storedproc.sp1 does not exist DROP PROCEDURE sp1;
DROP PROCEDURE IF EXISTS sp1;
CREATE PROCEDURE sp1( cnt int(20) ) CREATE PROCEDURE sp1( cnt int(20) )
END END
SELECT count(*) into cnt from t2; SELECT count(*) into cnt from t2;

View File

@ -3636,13 +3636,9 @@ SELECT count(*) into cnt from t2;
set @count = cnt; set @count = cnt;
SELECT @count; SELECT @count;
END// END//
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '; ERROR 42S22: Unknown column 'cnt' in 'field list'
set @count = cnt;
SELECT @count;
END' at line 2
CALL sp1( 10 ); CALL sp1( 10 );
ERROR 42000: PROCEDURE db_storedproc.sp1 does not exist DROP PROCEDURE sp1;
DROP PROCEDURE IF EXISTS sp1;
CREATE PROCEDURE sp1( cnt int(20) ) CREATE PROCEDURE sp1( cnt int(20) )
END END
SELECT count(*) into cnt from t2; SELECT count(*) into cnt from t2;

View File

@ -3635,13 +3635,9 @@ SELECT count(*) into cnt from t2;
set @count = cnt; set @count = cnt;
SELECT @count; SELECT @count;
END// END//
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '; ERROR 42S22: Unknown column 'cnt' in 'field list'
set @count = cnt;
SELECT @count;
END' at line 2
CALL sp1( 10 ); CALL sp1( 10 );
ERROR 42000: PROCEDURE db_storedproc.sp1 does not exist DROP PROCEDURE sp1;
DROP PROCEDURE IF EXISTS sp1;
CREATE PROCEDURE sp1( cnt int(20) ) CREATE PROCEDURE sp1( cnt int(20) )
END END
SELECT count(*) into cnt from t2; SELECT count(*) into cnt from t2;

View File

@ -2862,8 +2862,20 @@ DROP PROCEDURE IF EXISTS sp1;
--enable_warnings --enable_warnings
# missing BEGIN # missing BEGIN
# PLEASE NOTE:
# this test client has the MULTI_QUERY capability,
# so that the following request (starting at 'CREATE' and ending at the //
# delimiter) is interpreted as follows:
# 1) it's a multi query
# 2) the first query is a valid CREATE PROCEDURE statement, and the
# procedure consist of only one SELECT statement
# 3) the second query is a SET statement, which is broken since it's
# referencing an unknown column 'cnt'
# 4) the next query (SELECT @count) is not parsed or executed, since 3)
# failed
delimiter //; delimiter //;
--error ER_PARSE_ERROR --error ER_BAD_FIELD_ERROR
CREATE PROCEDURE sp1( cnt int(20) ) CREATE PROCEDURE sp1( cnt int(20) )
SELECT count(*) into cnt from t2; SELECT count(*) into cnt from t2;
set @count = cnt; set @count = cnt;
@ -2871,11 +2883,10 @@ CREATE PROCEDURE sp1( cnt int(20) )
END// END//
delimiter ;// delimiter ;//
--error ER_SP_DOES_NOT_EXIST
CALL sp1( 10 ); CALL sp1( 10 );
--disable_warnings --disable_warnings
DROP PROCEDURE IF EXISTS sp1; DROP PROCEDURE sp1;
--enable_warnings --enable_warnings
# wrong order of BEGIN and END # wrong order of BEGIN and END

View File

@ -10,11 +10,6 @@
# 2008-06-06 mleich Create this this variant for the embedded server. # 2008-06-06 mleich Create this this variant for the embedded server.
# #
let $value= query_get_value(SHOW VARIABLES LIKE 'version_compile_os',Value,1);
if (`SELECT '$value' LIKE 'apple-darwin%'`)
{
skip Bug#37380 Test funcs_1.is_columns_myisam_embedded fails on OS X;
}
if (`SELECT VERSION() NOT LIKE '%embedded%'`) if (`SELECT VERSION() NOT LIKE '%embedded%'`)
{ {
--skip Test requires: embedded server --skip Test requires: embedded server

View File

@ -13,6 +13,13 @@
USE test; USE test;
--source suite/funcs_1/include/tb3.inc --source suite/funcs_1/include/tb3.inc
# This test cannot be used for the embedded server because we check here
# privilgeges.
--source include/not_embedded.inc
USE test;
--source suite/funcs_1/include/tb3.inc
--disable_abort_on_error --disable_abort_on_error
########################################### ###########################################

View File

@ -8,6 +8,9 @@
USE test; USE test;
--source suite/funcs_1/include/tb3.inc --source suite/funcs_1/include/tb3.inc
USE test;
--source suite/funcs_1/include/tb3.inc
# General setup for Trigger tests # General setup for Trigger tests
let $message= Testcase: 3.5:; let $message= Testcase: 3.5:;
--source include/show_msg.inc --source include/show_msg.inc

View File

@ -13,6 +13,14 @@ eval
load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/memory_tb3.txt' load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/memory_tb3.txt'
into table tb3; into table tb3;
USE test;
--source suite/funcs_1/include/tb3.inc
--replace_result $MYSQLTEST_VARDIR <MYSQLTEST_VARDIR>
eval
load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/memory_tb3.txt'
into table tb3;
--disable_abort_on_error --disable_abort_on_error
############################################## ##############################################

View File

@ -1,14 +1,96 @@
################################################################################# #################################################################################
# Author: Serge Kozlov # # Author: Serge Kozlov #
# Date: 09/21/2005 # # Date: 2005-09-21 #
# Purpose: used by ../t/*_charset.test # # Purpose: used by ../t/*_charset.test #
# Require: set $engine_type= [NDB,MyISAM,InnoDB,etc] before calling # # Require: set $engine_type= [NDB,MyISAM,InnoDB,etc] before calling #
# #
# Last modification: Matthias Leich #
# Date: 2008-07-02 #
# Purpose: Fix Bug#37160 funcs_2: The tests do not check if optional character #
# sets exist. #
# Add checking of prerequisites + minor cleanup #
################################################################################# #################################################################################
# #
# #
# #
# Check that all character sets needed are available
# Note(mleich):
# It is intentional that the common solution with
# "--source include/have_<character set>.inc"
# is not applied.
# - We currently do not have such a prerequisite test for every character set
# /collation needed.
# - There is also no real value in mentioning the first missing character set
# /collation within the "skip message" because it is most probably only
# one of many.
#
# Hint: 5 character_set_names per source line if possible
if (`SELECT COUNT(*) <> 36 FROM information_schema.character_sets
WHERE CHARACTER_SET_NAME IN (
'armscii8', 'ascii' , 'big5' , 'binary' , 'cp1250',
'cp1251' , 'cp1256' , 'cp1257' , 'cp850' , 'cp852' ,
'cp866' , 'cp932' , 'dec8' , 'eucjpms', 'euckr' ,
'gb2312' , 'gbk' , 'geostd8', 'greek' , 'hebrew',
'hp8' , 'keybcs2', 'koi8r' , 'koi8u' , 'latin1',
'latin2' , 'latin5' , 'latin7' , 'macce' , 'macroman',
'sjis' , 'swe7' , 'tis620' , 'ucs2' , 'ujis',
'utf8'
)`)
{
--skip Not all character sets required for this test are present
}
# Check that all collations needed are available
# Hint: 4 collation_names per source line if possible
if (`SELECT COUNT(*) <> 123 FROM information_schema.collations
WHERE collation_name IN (
'armscii8_bin', 'armscii8_general_ci', 'ascii_bin', 'ascii_general_ci',
'big5_bin', 'big5_chinese_ci', 'cp1250_bin', 'cp1250_croatian_ci',
'cp1250_czech_cs', 'cp1250_general_ci', 'cp1251_bin', 'cp1251_bulgarian_ci',
'cp1251_general_ci', 'cp1251_general_cs', 'cp1251_ukrainian_ci', 'cp1256_bin',
'cp1256_general_ci', 'cp1257_bin', 'cp1257_general_ci', 'cp1257_lithuanian_ci',
'cp850_bin', 'cp850_general_ci', 'cp852_bin', 'cp852_general_ci',
'cp866_bin', 'cp866_general_ci', 'cp932_bin', 'cp932_japanese_ci',
'dec8_bin', 'dec8_swedish_ci', 'eucjpms_bin', 'eucjpms_japanese_ci',
'euckr_bin', 'euckr_korean_ci', 'gb2312_bin', 'gb2312_chinese_ci',
'gbk_bin', 'gbk_chinese_ci', 'geostd8_bin', 'geostd8_general_ci',
'greek_bin', 'greek_general_ci', 'hebrew_bin', 'hebrew_general_ci',
'hp8_bin', 'hp8_english_ci', 'keybcs2_bin', 'keybcs2_general_ci',
'koi8r_bin', 'koi8r_general_ci', 'koi8u_bin', 'koi8u_general_ci',
'latin1_bin', 'latin1_danish_ci', 'latin1_general_ci', 'latin1_general_cs',
'latin1_german1_ci', 'latin1_german2_ci', 'latin1_spanish_ci', 'latin1_swedish_ci',
'latin2_bin', 'latin2_croatian_ci', 'latin2_czech_cs', 'latin2_general_ci',
'latin2_hungarian_ci', 'latin5_bin', 'latin5_turkish_ci', 'latin7_bin',
'latin7_estonian_cs', 'latin7_general_ci', 'latin7_general_cs', 'macce_bin',
'macce_general_ci', 'macroman_bin', 'macroman_general_ci', 'sjis_bin',
'sjis_japanese_ci', 'swe7_bin', 'swe7_swedish_ci', 'tis620_bin',
'tis620_thai_ci', 'ucs2_bin', 'ucs2_czech_ci', 'ucs2_danish_ci',
'ucs2_estonian_ci', 'ucs2_general_ci', 'ucs2_hungarian_ci', 'ucs2_icelandic_ci',
'ucs2_latvian_ci', 'ucs2_lithuanian_ci', 'ucs2_persian_ci', 'ucs2_polish_ci',
'ucs2_roman_ci', 'ucs2_romanian_ci', 'ucs2_slovak_ci', 'ucs2_slovenian_ci',
'ucs2_spanish2_ci', 'ucs2_spanish_ci', 'ucs2_swedish_ci', 'ucs2_turkish_ci',
'ucs2_unicode_ci', 'ujis_bin', 'ujis_japanese_ci', 'utf8_bin',
'utf8_czech_ci', 'utf8_danish_ci', 'utf8_estonian_ci', 'utf8_general_ci',
'utf8_hungarian_ci', 'utf8_icelandic_ci', 'utf8_latvian_ci', 'utf8_lithuanian_ci',
'utf8_persian_ci', 'utf8_polish_ci', 'utf8_roman_ci', 'utf8_romanian_ci',
'utf8_slovak_ci', 'utf8_slovenian_ci', 'utf8_spanish2_ci', 'utf8_spanish_ci',
'utf8_swedish_ci', 'utf8_turkish_ci', 'utf8_unicode_ci'
)`)
{
--skip Not all collations required for this test are present
}
################################
let $check_std_csets= 1;
let $check_ucs2_csets= 1;
let $check_utf8_csets= 1;
#
# Check all charsets/collation combinations
#
################################
let $check_std_csets= 1; let $check_std_csets= 1;
let $check_ucs2_csets= 1; let $check_ucs2_csets= 1;
let $check_utf8_csets= 1; let $check_utf8_csets= 1;

View File

@ -1,8 +1,10 @@
################################################################################# ################################################################################
# Author: Serge Kozlov # # Author: Serge Kozlov #
# Date: 09/21/2005 # # Date: 2005-09-21 #
# Purpose: Testing the charsets for InnoDB engine # # Purpose: Testing the charsets for InnoDB engine #
################################################################################# # #
# Checking of other prerequisites is in charset_master.test #
################################################################################
--source include/have_innodb.inc --source include/have_innodb.inc

View File

@ -1,8 +1,10 @@
################################################################################# ################################################################################
# Author: Serge Kozlov # # Author: Serge Kozlov #
# Date: 09/21/2005 # # Date: 2005-09-21 #
# Purpose: Testing the charsets for Memory engine # # Purpose: Testing the charsets for Memory engine #
################################################################################# # #
# Checking of other prerequisites is in charset_master.test #
################################################################################
let $engine_type= Memory; let $engine_type= Memory;
--source suite/funcs_2/charset/charset_master.test --source suite/funcs_2/charset/charset_master.test

View File

@ -1,8 +1,10 @@
################################################################################# ################################################################################
# Author: Serge Kozlov # # Author: Serge Kozlov #
# Date: 09/21/2005 # # Date: 2005-09-21 #
# Purpose: Testing the charsets for MyISAM engine # # Purpose: Testing the charsets for MyISAM engine #
################################################################################# # #
# Checking of other prerequisites is in charset_master.test #
################################################################################
let $engine_type= MyISAM; let $engine_type= MyISAM;
--source suite/funcs_2/charset/charset_master.test --source suite/funcs_2/charset/charset_master.test

View File

@ -1,8 +1,10 @@
################################################################################# ################################################################################
# Author: Serge Kozlov # # Author: Serge Kozlov #
# Date: 09/21/2005 # # Date: 09/21/2005 #
# Purpose: Testing the charsets for NDB engine # # Purpose: Testing the charsets for NDB engine #
################################################################################# # #
# Checking of other prerequisites is in charset_master.test #
################################################################################
--source include/have_ndb.inc --source include/have_ndb.inc
--source include/not_embedded.inc --source include/not_embedded.inc

View File

@ -12,5 +12,6 @@
partition_03ndb : BUG#16385 2006-03-24 mikael Partitions: crash when updating a range partitioned NDB table partition_03ndb : BUG#16385 2006-03-24 mikael Partitions: crash when updating a range partitioned NDB table
ndb_partition_error2 : HF is not sure if the test can work as internded on all the platforms ndb_partition_error2 : HF is not sure if the test can work as internded on all the platforms
ndb_index_ordered : Bug#38370 The test ndb.ndb_index_ordered fails with the community features on
# the below testcase have been reworked to avoid the bug, test contains comment, keep bug open # the below testcase have been reworked to avoid the bug, test contains comment, keep bug open

View File

@ -43,6 +43,8 @@ eval select * from $t4 order by colint;
eval select * from $t5 order by colint; eval select * from $t5 order by colint;
eval select * from $t6 order by colint; eval select * from $t6 order by colint;
if (!$drop_partition_not_supported)
{
eval alter table $t1 drop partition p0; eval alter table $t1 drop partition p0;
eval alter table $t2 drop partition p0; eval alter table $t2 drop partition p0;
eval alter table $t4 drop partition p0; eval alter table $t4 drop partition p0;
@ -55,3 +57,4 @@ eval select * from $t3 order by col1;
eval select * from $t4 order by colint; eval select * from $t4 order by colint;
eval select * from $t5 order by colint; eval select * from $t5 order by colint;
eval select * from $t6 order by colint; eval select * from $t6 order by colint;
}

View File

@ -92,16 +92,13 @@ $partitioning;
#----------- PARTITION BY RANGE #----------- PARTITION BY RANGE
if ($with_partitioning) if ($with_partitioning)
{ {
--disable_query_log let $partitioning= PARTITION BY RANGE(f_int1)
eval SET @aux = 'PARTITION BY RANGE(f_int1)
(PARTITION parta VALUES LESS THAN (0), (PARTITION parta VALUES LESS THAN (0),
PARTITION partb VALUES LESS THAN ($max_row_div4), PARTITION partb VALUES LESS THAN ($max_row_div4),
PARTITION partc VALUES LESS THAN ($max_row_div2), PARTITION partc VALUES LESS THAN ($max_row_div2),
PARTITION partd VALUES LESS THAN ($max_row_div2 + $max_row_div4), PARTITION partd VALUES LESS THAN ($max_row_div2 + $max_row_div4),
PARTITION parte VALUES LESS THAN ($max_row), PARTITION parte VALUES LESS THAN ($max_row),
PARTITION partf VALUES LESS THAN $MAX_VALUE)'; PARTITION partf VALUES LESS THAN $MAX_VALUE);
let $partitioning= `SELECT @aux`;
--enable_query_log
} }
eval CREATE TABLE t1 ( eval CREATE TABLE t1 (
$column_list $column_list
@ -113,15 +110,11 @@ $partitioning;
#----------- PARTITION BY RANGE -- SUBPARTITION BY HASH #----------- PARTITION BY RANGE -- SUBPARTITION BY HASH
if ($with_partitioning) if ($with_partitioning)
{ {
--disable_query_log let $partitioning= PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
eval SET @aux =
'PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
(PARTITION parta VALUES LESS THAN (0), (PARTITION parta VALUES LESS THAN (0),
PARTITION partb VALUES LESS THAN ($max_row_div4), PARTITION partb VALUES LESS THAN ($max_row_div4),
PARTITION partc VALUES LESS THAN ($max_row_div2), PARTITION partc VALUES LESS THAN ($max_row_div2),
PARTITION partd VALUES LESS THAN $MAX_VALUE)'; PARTITION partd VALUES LESS THAN $MAX_VALUE);
let $partitioning= `SELECT @aux`;
--enable_query_log
} }
eval CREATE TABLE t1 ( eval CREATE TABLE t1 (
$column_list $column_list
@ -133,8 +126,7 @@ $partitioning;
#----------- PARTITION BY RANGE -- SUBPARTITION BY KEY #----------- PARTITION BY RANGE -- SUBPARTITION BY KEY
if ($with_partitioning) if ($with_partitioning)
{ {
--disable_query_log let $partitioning= PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
eval SET @aux = 'PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
(PARTITION part1 VALUES LESS THAN (0) (PARTITION part1 VALUES LESS THAN (0)
(SUBPARTITION subpart11, SUBPARTITION subpart12), (SUBPARTITION subpart11, SUBPARTITION subpart12),
PARTITION part2 VALUES LESS THAN ($max_row_div4) PARTITION part2 VALUES LESS THAN ($max_row_div4)
@ -142,9 +134,7 @@ PARTITION part2 VALUES LESS THAN ($max_row_div4)
PARTITION part3 VALUES LESS THAN ($max_row_div2) PARTITION part3 VALUES LESS THAN ($max_row_div2)
(SUBPARTITION subpart31, SUBPARTITION subpart32), (SUBPARTITION subpart31, SUBPARTITION subpart32),
PARTITION part4 VALUES LESS THAN $MAX_VALUE PARTITION part4 VALUES LESS THAN $MAX_VALUE
(SUBPARTITION subpart41, SUBPARTITION subpart42))'; (SUBPARTITION subpart41, SUBPARTITION subpart42));
let $partitioning= `SELECT @aux`;
--enable_query_log
} }
eval CREATE TABLE t1 ( eval CREATE TABLE t1 (
$column_list $column_list
@ -176,15 +166,11 @@ $partitioning;
#----------- PARTITION BY LIST -- SUBPARTITION BY KEY #----------- PARTITION BY LIST -- SUBPARTITION BY KEY
if ($with_partitioning) if ($with_partitioning)
{ {
--disable_query_log let $partitioning= PARTITION BY LIST(ABS(MOD(f_int1,2)))
eval SET @aux =
'PARTITION BY LIST(ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS $sub_part_no SUBPARTITION BY KEY(f_int1) SUBPARTITIONS $sub_part_no
(PARTITION part1 VALUES IN (0), (PARTITION part1 VALUES IN (0),
PARTITION part2 VALUES IN (1), PARTITION part2 VALUES IN (1),
PARTITION part3 VALUES IN (NULL))'; PARTITION part3 VALUES IN (NULL));
let $partitioning= `SELECT @aux`;
--enable_query_log
} }
eval CREATE TABLE t1 ( eval CREATE TABLE t1 (
$column_list $column_list

View File

@ -6,22 +6,27 @@ partition pa3 max_rows=30 min_rows=4,
partition pa4 max_rows=40 min_rows=2); partition pa4 max_rows=40 min_rows=2);
show create table t1; show create table t1;
insert into t1 values (18446744073709551615), (0xFFFFFFFFFFFFFFFE), (18446744073709551613), (18446744073709551612), (1), (2), (65535); insert into t1 values (18446744073709551615), (0xFFFFFFFFFFFFFFFE), (18446744073709551613), (18446744073709551612), (1), (2), (65535);
--sorted_result
select * from t1; select * from t1;
select * from t1 where a=-2; select * from t1 where a=-2;
delete from t1 where a=-2; delete from t1 where a=-2;
--sorted_result
select * from t1; select * from t1;
select * from t1 where a=18446744073709551615; select * from t1 where a=18446744073709551615;
delete from t1 where a=18446744073709551615; delete from t1 where a=18446744073709551615;
--sorted_result
select * from t1; select * from t1;
drop table t1; drop table t1;
eval create table t2 (a bigint unsigned not null, primary key(a)) engine=$engine eval create table t2 (a bigint unsigned not null, primary key(a)) engine=$engine
partition by key (a) partitions 10; partition by key (a) partitions 8;
show create table t2; show create table t2;
insert into t2 values (18446744073709551615), (0xFFFFFFFFFFFFFFFE), (18446744073709551613), (18446744073709551612); insert into t2 values (18446744073709551615), (0xFFFFFFFFFFFFFFFE), (18446744073709551613), (18446744073709551612);
--sorted_result
select * from t2; select * from t2;
select * from t2 where a=18446744073709551615; select * from t2 where a=18446744073709551615;
delete from t2 where a=18446744073709551615; delete from t2 where a=18446744073709551615;
--sorted_result
select * from t2; select * from t2;
delete from t2; delete from t2;
let $count=$maxrows; let $count=$maxrows;
@ -37,11 +42,13 @@ select count(*) from t2;
drop table t2; drop table t2;
eval create table t3 (a bigint not null, primary key(a)) engine=$engine eval create table t3 (a bigint not null, primary key(a)) engine=$engine
partition by key (a) partitions 10; partition by key (a) partitions 7;
show create table t3; show create table t3;
insert into t3 values (9223372036854775807), (9223372036854775806), (9223372036854775805), (9223372036854775804), (-9223372036854775808), (-9223372036854775807), (1), (-1), (0); insert into t3 values (9223372036854775807), (9223372036854775806), (9223372036854775805), (9223372036854775804), (-9223372036854775808), (-9223372036854775807), (1), (-1), (0);
--sorted_result
select * from t3; select * from t3;
select * from t3 where a=9223372036854775806; select * from t3 where a=9223372036854775806;
delete from t3 where a=9223372036854775806; delete from t3 where a=9223372036854775806;
--sorted_result
select * from t3; select * from t3;
drop table t3; drop table t3;

View File

@ -11,9 +11,6 @@
#------------------------------------------------------------------------------# #------------------------------------------------------------------------------#
# Original Author: mleich # # Original Author: mleich #
# Original Date: 2006-05-12 # # Original Date: 2006-05-12 #
# Change Author: #
# Change Date: #
# Change: #
################################################################################ ################################################################################
if ($no_debug) if ($no_debug)
@ -27,25 +24,29 @@ let $MYSQLD_DATADIR= `select LEFT(@@datadir, LENGTH(@@datadir)-1)`;
if ($do_file_tests) if ($do_file_tests)
{ {
# List the files belonging to the table t1 let $ls_file= $MYSQLD_DATADIR/test/tmp2;
--exec ls $MYSQLD_DATADIR/test/t1* > $MYSQLD_DATADIR/test/tmp2 || true # List the files belonging to the table t1
if ($with_directories) --list_files_write_file $ls_file $MYSQLD_DATADIR/test t1*
{ --chmod 0644 $ls_file
--exec ls $MYSQLTEST_VARDIR/tmp/t1* >> $MYSQLD_DATADIR/test/tmp2 || true if ($with_directories)
} {
eval SET @aux = CONCAT('load_file(''$MYSQLD_DATADIR','/test/tmp2'')'); --list_files_append_file $ls_file $MYSQLTEST_VARDIR/tmp t1*
let $file_list= `SELECT @aux`; }
eval SET @aux = load_file('$ls_file');
# clean up
remove_file $ls_file;
} }
if (!$do_file_tests) if (!$do_file_tests)
{ {
let $file_list= '--- not determined ---'; SET @aux = '--- not determined ---';
} }
# UPDATE the current filelist of the table t1 within t0_definition # UPDATE the current filelist of the table t1 within t0_definition
# Note: This list should be empty, because the table t1 was dropped ! # Note: This list should be empty, because the table t1 was dropped !
eval INSERT INTO t0_definition SET state = 'old', file_list = $file_list eval INSERT INTO t0_definition SET state = 'old', file_list = @aux
ON DUPLICATE KEY UPDATE file_list = $file_list; ON DUPLICATE KEY UPDATE file_list = @aux;
# eval UPDATE t0_definition SET file_list = $file_list WHERE state = 'old'; # eval UPDATE t0_definition SET file_list = @aux WHERE state = 'old';
# Check if filelist is empty. # Check if filelist is empty.
let $found_garbage= `SELECT file_list <> '' FROM t0_definition WHERE state = 'old'`; let $found_garbage= `SELECT file_list <> '' FROM t0_definition WHERE state = 'old'`;

View File

@ -6,19 +6,23 @@ partition pa3 max_rows=30 min_rows=4,
partition pa4 max_rows=40 min_rows=2); partition pa4 max_rows=40 min_rows=2);
show create table t1; show create table t1;
insert into t1 values (4294967295), (4294967294), (4294967293), (4294967292), (1), (2), (65535); insert into t1 values (4294967295), (4294967294), (4294967293), (4294967292), (1), (2), (65535);
--sorted_result
select * from t1; select * from t1;
select * from t1 where a=4294967293; select * from t1 where a=4294967293;
delete from t1 where a=4294967293; delete from t1 where a=4294967293;
--sorted_result
select * from t1; select * from t1;
drop table t1; drop table t1;
eval create table t2 (a int unsigned not null, primary key(a)) engine=$engine eval create table t2 (a int unsigned not null, primary key(a)) engine=$engine
partition by key (a) partitions 10; partition by key (a) partitions 8;
show create table t2; show create table t2;
insert into t2 values (4294967295), (4294967294), (4294967293), (4294967292); insert into t2 values (4294967295), (4294967294), (4294967293), (4294967292);
--sorted_result
select * from t2; select * from t2;
select * from t2 where a=4294967293; select * from t2 where a=4294967293;
delete from t2 where a=4294967293; delete from t2 where a=4294967293;
--sorted_result
select * from t2; select * from t2;
delete from t2; delete from t2;
let $count=$maxrows; let $count=$maxrows;
@ -34,11 +38,13 @@ select count(*) from t2;
drop table t2; drop table t2;
eval create table t3 (a int not null, primary key(a)) engine=$engine eval create table t3 (a int not null, primary key(a)) engine=$engine
partition by key (a) partitions 10; partition by key (a) partitions 7;
show create table t3; show create table t3;
insert into t3 values (2147483647), (2147483646), (2147483645), (2147483644), (-2147483648), (-2147483647), (1), (-1), (0); insert into t3 values (2147483647), (2147483646), (2147483645), (2147483644), (-2147483648), (-2147483647), (1), (-1), (0);
--sorted_result
select * from t3; select * from t3;
select * from t3 where a=2147483645; select * from t3 where a=2147483645;
delete from t3 where a=2147483645; delete from t3 where a=2147483645;
--sorted_result
select * from t3; select * from t3;
drop table t3; drop table t3;

View File

@ -11,5 +11,5 @@ if ($ls)
{ {
let $MYSQLD_DATADIR= `select @@datadir`; let $MYSQLD_DATADIR= `select @@datadir`;
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR --replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
--exec ls $MYSQLD_DATADIR/test/t1* --list_files $MYSQLD_DATADIR/test t1*
} }

View File

@ -37,23 +37,22 @@ let $MYSQLD_DATADIR= `select LEFT(@@datadir, LENGTH(@@datadir)-1)`;
# - SHOW CREATE TABLE .. cannot write its out put into a file like SELECT # - SHOW CREATE TABLE .. cannot write its out put into a file like SELECT
let $show_file= $MYSQLD_DATADIR/test/tmp1; let $show_file= $MYSQLD_DATADIR/test/tmp1;
--exec echo "SHOW CREATE TABLE t1;" | $MYSQL_TEST > $show_file 2>&1 || true --exec echo "SHOW CREATE TABLE t1;" | $MYSQL_TEST > $show_file 2>&1 || true
if ($do_file_tests) if ($do_file_tests)
{ {
# List the files belonging to the table t1 # List the files belonging to the table t1
let $ls_file= $MYSQLD_DATADIR/test/tmp2; let $ls_file= $MYSQLD_DATADIR/test/tmp2;
let $err_file= $MYSQLD_DATADIR/test/err2; --list_files_write_file $ls_file $MYSQLD_DATADIR/test t1*
--exec ls $MYSQLD_DATADIR/test/t1* > $ls_file 2>$err_file || true --chmod 0644 $ls_file
if ($with_directories) if ($with_directories)
{ {
--exec ls $MYSQLTEST_VARDIR/mysql-test-data-dir/t1* >> $ls_file 2>>$err_file || true --list_files_append_file $ls_file $MYSQLTEST_VARDIR/mysql-test-data-dir t1*
--exec ls $MYSQLTEST_VARDIR/mysql-test-idx-dir/t1* >> $ls_file 2>>$err_file || true --list_files_append_file $ls_file $MYSQLTEST_VARDIR/mysql-test-idx-dir t1*
} }
eval SET @aux = load_file('$ls_file'); eval SET @aux = load_file('$ls_file');
} }
if (!$do_file_tests) if (!$do_file_tests)
{ {
SET @aux = '--- not determined ---'; SET @aux = '--- not determined ---';
} }
# Insert the current definition of the table t1 into t0_definition # Insert the current definition of the table t1 into t0_definition

View File

@ -14,9 +14,6 @@
#------------------------------------------------------------------------------# #------------------------------------------------------------------------------#
# Original Author: mleich # # Original Author: mleich #
# Original Date: 2006-03-05 # # Original Date: 2006-03-05 #
# Change Author: #
# Change Date: #
# Change: #
################################################################################ ################################################################################
if ($no_debug) if ($no_debug)
@ -37,20 +34,20 @@ let $show_file= $MYSQLD_DATADIR/test/tmp1;
if ($do_file_tests) if ($do_file_tests)
{ {
# List the files belonging to the table t1 # List the files belonging to the table t1
let $ls_file= $MYSQLD_DATADIR/test/tmp2; let $ls_file= $MYSQLD_DATADIR/test/tmp2;
let $err_file= $MYSQLD_DATADIR/test/err2; --list_files_write_file $ls_file $MYSQLD_DATADIR/test t1*
--exec ls $MYSQLD_DATADIR/test/t1* > $ls_file 2>$err_file || true --chmod 0644 $ls_file
if ($with_directories) if ($with_directories)
{ {
--exec ls $MYSQLTEST_VARDIR/mysql-test-data-dir/t1* >> $ls_file 2>>$err_file || true --list_files_append_file $ls_file $MYSQLTEST_VARDIR/mysql-test-data-dir t1*
--exec ls $MYSQLTEST_VARDIR/mysql-test-idx-dir/t1* >> $ls_file 2>>$err_file || true --list_files_append_file $ls_file $MYSQLTEST_VARDIR/mysql-test-idx-dir t1*
} }
eval SET @aux = load_file('$ls_file'); eval SET @aux = load_file('$ls_file');
} }
if (!$do_file_tests) if (!$do_file_tests)
{ {
SET @aux = '--- not determined ---'; SET @aux = '--- not determined ---';
} }
# Insert the current definition of the table t1 into t0_definition # Insert the current definition of the table t1 into t0_definition

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