Automerge with 5.1

This commit is contained in:
Michael Widenius 2010-11-24 00:09:54 +02:00
commit b16c389248
525 changed files with 12292 additions and 4751 deletions

File diff suppressed because it is too large Load diff

View file

@ -16,12 +16,14 @@ check_cpu () {
# on Linux (and others?) we can get detailed CPU information out of /proc # on Linux (and others?) we can get detailed CPU information out of /proc
cpuinfo="cat $CPUINFO" cpuinfo="cat $CPUINFO"
# detect CPU architecture
cpu_arch=`$cpuinfo | grep 'arch' | cut -d ':' -f 2 | cut -d ' ' -f 2 | head -1`
# detect CPU family # detect CPU family
cpu_family=`$cpuinfo | grep 'family' | cut -d ':' -f 2 | cut -d ' ' -f 2 | head -1` cpu_family=`$cpuinfo | grep 'family' | cut -d ':' -f 2 | cut -d ' ' -f 2 | head -1`
if test -z "$cpu_family" ; then if test -z "$cpu_family" ; then
cpu_family=`$cpuinfo | grep 'cpu' | cut -d ':' -f 2 | cut -d ' ' -f 2 | head -1` cpu_family=`$cpuinfo | grep 'cpu' | cut -d ':' -f 2 | cut -d ' ' -f 2 | head -1`
fi fi
# detect CPU vendor and model # detect CPU vendor and model
cpu_vendor=`$cpuinfo | grep 'vendor_id' | cut -d ':' -f 2 | cut -d ' ' -f 2 | head -1` cpu_vendor=`$cpuinfo | grep 'vendor_id' | cut -d ':' -f 2 | cut -d ' ' -f 2 | head -1`
model_name=`$cpuinfo | grep 'model name' | cut -d ':' -f 2 | head -1` model_name=`$cpuinfo | grep 'model name' | cut -d ':' -f 2 | head -1`
@ -56,8 +58,8 @@ check_cpu () {
fi fi
;; ;;
*) *)
cpu_family=`uname -m`; cpu_family=`uname -p`;
model_name=`uname -p`; model_name=`uname -m`;
;; ;;
esac esac
fi fi
@ -65,9 +67,10 @@ check_cpu () {
# detect CPU shortname as used by gcc options # detect CPU shortname as used by gcc options
# this list is not complete, feel free to add further entries # this list is not complete, feel free to add further entries
cpu_arg="" cpu_arg=""
case "$cpu_family--$model_name" in low_cpu_arg=""
case "$cpu_vendor--$cpu_family--$model_name--$cpu_arch" in
# DEC Alpha # DEC Alpha
Alpha*EV6*) *Alpha*EV6*)
cpu_arg="ev6"; cpu_arg="ev6";
;; ;;
#Core 2 Duo #Core 2 Duo
@ -96,6 +99,13 @@ check_cpu () {
*Pentium*4*Mobile*) *Pentium*4*Mobile*)
cpu_arg="pentium4m" cpu_arg="pentium4m"
;; ;;
*Pentium\(R\)*\ M*)
cpu_arg="pentium-m"
low_cpu_arg="pentium3"
;;
*Pentium\(R\)*\ D*)
cpu_arg="prescott"
;;
*Pentium*4*) *Pentium*4*)
cpu_arg="pentium4" cpu_arg="pentium4"
;; ;;
@ -120,6 +130,12 @@ check_cpu () {
*Celeron*) *Celeron*)
cpu_arg="pentium2" cpu_arg="pentium2"
;; ;;
*Atom*)
cpu_arg="prescott"
;;
*GenuineIntel*)
cpu_arg="pentium"
;;
*Turion*) *Turion*)
cpu_arg="athlon64" cpu_arg="athlon64"
;; ;;
@ -129,9 +145,30 @@ check_cpu () {
*Athlon*) *Athlon*)
cpu_arg="athlon" cpu_arg="athlon"
;; ;;
*AMD-K7*)
cpu_arg="athlon"
;;
*Athlon*XP\ *)
cpu_arg="athlon-xp"
;;
*AMD*Sempron\(tm\)*)
cpu_arg="athlon-mp"
;;
*AMD*Athlon\(tm\)\ 64*)
cpu_arg="k8"
;;
*Opteron*) *Opteron*)
cpu_arg="opteron" cpu_arg="opteron"
;; ;;
*Phenom*)
cpu_arg="k8"
;;
*AuthenticAMD*)
cpu_arg="k6"
;;
*VIA\ *)
cpu_arg="i686"
;;
# MacOSX / Intel # MacOSX / Intel
*i386*i486*) *i386*i486*)
cpu_arg="pentium-m" cpu_arg="pentium-m"
@ -143,8 +180,11 @@ check_cpu () {
*Itanium*) *Itanium*)
cpu_arg="itanium" cpu_arg="itanium"
;; ;;
*IA-64*)
cpu_arg="itanium"
;;
# Solaris Sparc # Solaris Sparc
*sparc*sun4u*) *sparc*sun4[uv]*)
cpu_arg="sparc" cpu_arg="sparc"
;; ;;
# Power PC # Power PC
@ -160,6 +200,10 @@ check_cpu () {
;; ;;
esac esac
if test "x$low_cpu_arg" = "x" ; then
low_cpu_arg="$cpu_arg"
fi
if test -z "$cpu_arg" ; then if test -z "$cpu_arg" ; then
if test "$CPUINFO" != " " ; then if test "$CPUINFO" != " " ; then
# fallback to uname if necessary # fallback to uname if necessary
@ -198,7 +242,7 @@ check_cpu () {
case `gcc -dumpmachine` in case `gcc -dumpmachine` in
i?86-* | x86_64-*) i?86-* | x86_64-*)
if test "$cc_comp" -lt 304 ; then if test "$cc_comp" -lt 304 ; then
check_cpu_cflags="-mcpu=${cpu_arg}" check_cpu_cflags="-mcpu=${low_cpu_arg}"
elif test "$cc_comp" -ge 402 ; then elif test "$cc_comp" -ge 402 ; then
check_cpu_cflags="-mtune=native" check_cpu_cflags="-mtune=native"
else else

View file

@ -74,8 +74,7 @@ mysqlimport_SOURCES= mysqlimport.c
mysqlimport_CFLAGS= -DTHREAD -UUNDEF_THREADS_HACK mysqlimport_CFLAGS= -DTHREAD -UUNDEF_THREADS_HACK
mysqlimport_LDADD = $(CXXLDFLAGS) $(CLIENT_THREAD_LIBS) \ mysqlimport_LDADD = $(CXXLDFLAGS) $(CLIENT_THREAD_LIBS) \
@CLIENT_EXTRA_LDFLAGS@ \ @CLIENT_EXTRA_LDFLAGS@ \
$(LIBMYSQLCLIENT_LA) \ $(LIBMYSQLCLIENT_LA)
$(top_builddir)/mysys/libmysys.a
mysqlshow_SOURCES= mysqlshow.c mysqlshow_SOURCES= mysqlshow.c
@ -83,16 +82,15 @@ mysqlslap_SOURCES= mysqlslap.c
mysqlslap_CFLAGS= -DTHREAD -UMYSQL_CLIENT_NO_THREADS mysqlslap_CFLAGS= -DTHREAD -UMYSQL_CLIENT_NO_THREADS
mysqlslap_LDADD = $(CXXLDFLAGS) $(CLIENT_THREAD_LIBS) \ mysqlslap_LDADD = $(CXXLDFLAGS) $(CLIENT_THREAD_LIBS) \
@CLIENT_EXTRA_LDFLAGS@ \ @CLIENT_EXTRA_LDFLAGS@ \
$(LIBMYSQLCLIENT_LA) \ $(LIBMYSQLCLIENT_LA)
$(top_builddir)/mysys/libmysys.a
mysqltest_SOURCES= mysqltest.cc mysqltest_SOURCES= mysqltest.cc
mysqltest_CXXFLAGS= -DTHREAD -UMYSQL_CLIENT_NO_THREADS mysqltest_CXXFLAGS= -DTHREAD -UMYSQL_CLIENT_NO_THREADS
mysqltest_LDADD = $(CXXLDFLAGS) $(CLIENT_THREAD_LIBS) \ mysqltest_LDADD = $(CXXLDFLAGS) $(CLIENT_THREAD_LIBS) \
@CLIENT_EXTRA_LDFLAGS@ \ @CLIENT_EXTRA_LDFLAGS@ \
$(LIBMYSQLCLIENT_LA) \
$(top_builddir)/mysys/libmysys.a \ $(top_builddir)/mysys/libmysys.a \
$(top_builddir)/regex/libregex.a \ $(LIBMYSQLCLIENT_LA) \
$(top_builddir)/regex/libregex.la
$(CLIENT_THREAD_LIBS) $(CLIENT_THREAD_LIBS)
mysql_upgrade_SOURCES= mysql_upgrade.c \ mysql_upgrade_SOURCES= mysql_upgrade.c \

View file

@ -4082,7 +4082,7 @@ static int com_source(String *buffer, char *line)
If we got an error during source operation, don't abort the client If we got an error during source operation, don't abort the client
if ignore_errors is set if ignore_errors is set
*/ */
if (error && !batch_abort_on_error && ignore_errors) if (error && ignore_errors)
error= -1; // Ignore error error= -1; // Ignore error
return error; return error;
} }

View file

@ -109,6 +109,7 @@ static my_bool parsing_disabled= 0;
static my_bool display_result_vertically= FALSE, display_result_lower= FALSE, static my_bool display_result_vertically= FALSE, display_result_lower= FALSE,
display_metadata= FALSE, display_result_sorted= FALSE; display_metadata= FALSE, display_result_sorted= FALSE;
static my_bool disable_query_log= 0, disable_result_log= 0; static my_bool disable_query_log= 0, disable_result_log= 0;
static my_bool disable_connect_log= 1;
static my_bool disable_warnings= 0; static my_bool disable_warnings= 0;
static my_bool prepare_warnings_enabled= 0; static my_bool prepare_warnings_enabled= 0;
static my_bool disable_info= 1; static my_bool disable_info= 1;
@ -202,6 +203,8 @@ static int replace(DYNAMIC_STRING *ds_str,
const char *search_str, ulong search_len, const char *search_str, ulong search_len,
const char *replace_str, ulong replace_len); const char *replace_str, ulong replace_len);
static uint opt_protocol=0;
DYNAMIC_ARRAY q_lines; DYNAMIC_ARRAY q_lines;
#include "sslopt-vars.h" #include "sslopt-vars.h"
@ -253,7 +256,9 @@ struct st_connection
int cur_query_len; int cur_query_len;
pthread_mutex_t mutex; pthread_mutex_t mutex;
pthread_cond_t cond; pthread_cond_t cond;
pthread_t tid;
int query_done; int query_done;
my_bool has_thread;
#endif /*EMBEDDED_LIBRARY*/ #endif /*EMBEDDED_LIBRARY*/
}; };
@ -284,6 +289,7 @@ enum enum_commands {
Q_DISABLE_RPL_PARSE, Q_EVAL_RESULT, Q_DISABLE_RPL_PARSE, Q_EVAL_RESULT,
Q_ENABLE_QUERY_LOG, Q_DISABLE_QUERY_LOG, Q_ENABLE_QUERY_LOG, Q_DISABLE_QUERY_LOG,
Q_ENABLE_RESULT_LOG, Q_DISABLE_RESULT_LOG, Q_ENABLE_RESULT_LOG, Q_DISABLE_RESULT_LOG,
Q_ENABLE_CONNECT_LOG, Q_DISABLE_CONNECT_LOG,
Q_WAIT_FOR_SLAVE_TO_STOP, Q_WAIT_FOR_SLAVE_TO_STOP,
Q_ENABLE_WARNINGS, Q_DISABLE_WARNINGS, Q_ENABLE_WARNINGS, Q_DISABLE_WARNINGS,
Q_ENABLE_INFO, Q_DISABLE_INFO, Q_ENABLE_INFO, Q_DISABLE_INFO,
@ -352,6 +358,8 @@ const char *command_names[]=
/* Enable/disable that the _result_ from a query is logged to result file */ /* Enable/disable that the _result_ from a query is logged to result file */
"enable_result_log", "enable_result_log",
"disable_result_log", "disable_result_log",
"enable_connect_log",
"disable_connect_log",
"wait_for_slave_to_stop", "wait_for_slave_to_stop",
"enable_warnings", "enable_warnings",
"disable_warnings", "disable_warnings",
@ -607,14 +615,14 @@ public:
lines++; lines++;
int show_offset= 0; int show_offset= 0;
char buf[256]; char buf[256+1]; /* + zero termination for DBUG_PRINT */
size_t bytes; size_t bytes;
bool found_bof= false; bool found_bof= false;
/* Search backward in file until "lines" newline has been found */ /* Search backward in file until "lines" newline has been found */
while (lines && !found_bof) while (lines && !found_bof)
{ {
show_offset-= sizeof(buf); show_offset-= sizeof(buf)-1;
while(fseek(m_file, show_offset, SEEK_END) != 0 && show_offset < 0) while(fseek(m_file, show_offset, SEEK_END) != 0 && show_offset < 0)
{ {
found_bof= true; found_bof= true;
@ -622,13 +630,17 @@ public:
show_offset++; show_offset++;
} }
if ((bytes= fread(buf, 1, sizeof(buf), m_file)) <= 0) if ((bytes= fread(buf, 1, sizeof(buf)-1, m_file)) <= 0)
{ {
fprintf(stderr, "Failed to read from '%s', errno: %d\n", // ferror=0 will happen here if no queries executed yet
m_file_name, errno); if (ferror(m_file))
fprintf(stderr,
"Failed to read from '%s', errno: %d, feof:%d, ferror:%d\n",
m_file_name, errno, feof(m_file), ferror(m_file));
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
IF_DBUG(buf[bytes]= '\0';)
DBUG_PRINT("info", ("Read %lu bytes from file, buf: %s", DBUG_PRINT("info", ("Read %lu bytes from file, buf: %s",
(unsigned long)bytes, buf)); (unsigned long)bytes, buf));
@ -673,8 +685,8 @@ public:
} }
} }
while ((bytes= fread(buf, 1, sizeof(buf), m_file)) > 0) while ((bytes= fread(buf, 1, sizeof(buf)-1, m_file)) > 0)
if (fwrite(buf, 1, bytes, stderr)) if (bytes != fwrite(buf, 1, bytes, stderr))
die("Failed to write to '%s', errno: %d", die("Failed to write to '%s', errno: %d",
m_file_name, errno); m_file_name, errno);
@ -717,6 +729,10 @@ void handle_no_error(struct st_command*);
#ifdef EMBEDDED_LIBRARY #ifdef EMBEDDED_LIBRARY
/* workaround for MySQL BUG#57491 */
#undef MY_WME
#define MY_WME 0
/* attributes of the query thread */ /* attributes of the query thread */
pthread_attr_t cn_thd_attrib; pthread_attr_t cn_thd_attrib;
@ -746,8 +762,6 @@ pthread_handler_t send_one_query(void *arg)
static int do_send_query(struct st_connection *cn, const char *q, int q_len, static int do_send_query(struct st_connection *cn, const char *q, int q_len,
int flags) int flags)
{ {
pthread_t tid;
if (flags & QUERY_REAP_FLAG) if (flags & QUERY_REAP_FLAG)
return mysql_send_query(&cn->mysql, q, q_len); return mysql_send_query(&cn->mysql, q, q_len);
@ -758,9 +772,10 @@ static int do_send_query(struct st_connection *cn, const char *q, int q_len,
cn->cur_query= q; cn->cur_query= q;
cn->cur_query_len= q_len; cn->cur_query_len= q_len;
cn->query_done= 0; cn->query_done= 0;
if (pthread_create(&tid, &cn_thd_attrib, send_one_query, (void*)cn)) if (pthread_create(&cn->tid, &cn_thd_attrib, send_one_query, (void*)cn))
die("Cannot start new thread for query"); die("Cannot start new thread for query");
cn->has_thread= TRUE;
return 0; return 0;
} }
@ -773,6 +788,14 @@ static void wait_query_thread_end(struct st_connection *con)
pthread_cond_wait(&con->cond, &con->mutex); pthread_cond_wait(&con->cond, &con->mutex);
pthread_mutex_unlock(&con->mutex); pthread_mutex_unlock(&con->mutex);
} }
if (con->has_thread)
{
#ifndef __WIN__
/* May hang on Windows, but the problem it solves is not seen there */
pthread_join(con->tid, NULL);
#endif
con->has_thread= FALSE;
}
} }
#else /*EMBEDDED_LIBRARY*/ #else /*EMBEDDED_LIBRARY*/
@ -1079,7 +1102,8 @@ 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,
int sys_errno)
{ {
DBUG_ENTER("handle_command_error"); DBUG_ENTER("handle_command_error");
DBUG_PRINT("enter", ("error: %d", error)); DBUG_PRINT("enter", ("error: %d", error));
@ -1095,12 +1119,14 @@ void handle_command_error(struct st_command *command, uint error)
if (i >= 0) if (i >= 0)
{ {
DBUG_PRINT("info", ("command \"%.*s\" failed with expected error: %d", DBUG_PRINT("info", ("command \"%.*s\" failed with expected error: %u, errno: %d",
command->first_word_len, command->query, error)); command->first_word_len, command->query, error,
sys_errno));
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
die("command \"%.*s\" failed with wrong error: %d", if (command->expected_errors.count > 0)
command->first_word_len, command->query, error); die("command \"%.*s\" failed with wrong error: %u, errno: %d",
command->first_word_len, command->query, error, sys_errno);
} }
else if (command->expected_errors.err[0].type == ERR_ERRNO && else if (command->expected_errors.err[0].type == ERR_ERRNO &&
command->expected_errors.err[0].code.errnum != 0) command->expected_errors.err[0].code.errnum != 0)
@ -1241,15 +1267,6 @@ void die(const char *fmt, ...)
DBUG_ENTER("die"); DBUG_ENTER("die");
DBUG_PRINT("enter", ("start_lineno: %d", start_lineno)); DBUG_PRINT("enter", ("start_lineno: %d", start_lineno));
/*
Protect against dying twice
first time 'die' is called, try to write log files
second time, just exit
*/
if (dying)
cleanup_and_exit(1);
dying= 1;
/* Print the error message */ /* Print the error message */
fprintf(stderr, "mysqltest: "); fprintf(stderr, "mysqltest: ");
if (cur_file && cur_file != file_stack) if (cur_file && cur_file != file_stack)
@ -1268,6 +1285,15 @@ void die(const char *fmt, ...)
fprintf(stderr, "\n"); fprintf(stderr, "\n");
fflush(stderr); fflush(stderr);
/*
Protect against dying twice
first time 'die' is called, try to write log files
second time, just exit
*/
if (dying)
cleanup_and_exit(1);
dying= 1;
log_file.show_tail(opt_tail_lines); log_file.show_tail(opt_tail_lines);
/* /*
@ -1371,14 +1397,14 @@ void log_msg(const char *fmt, ...)
*/ */
void cat_file(DYNAMIC_STRING* ds, const char* filename) int cat_file(DYNAMIC_STRING* ds, const char* filename)
{ {
int fd; int fd;
size_t len; size_t len;
char buff[512]; char buff[512];
if ((fd= my_open(filename, O_RDONLY, MYF(0))) < 0) if ((fd= my_open(filename, O_RDONLY, MYF(0))) < 0)
die("Failed to open file '%s'", filename); return 1;
while((len= my_read(fd, (uchar*)&buff, while((len= my_read(fd, (uchar*)&buff,
sizeof(buff), MYF(0))) > 0) sizeof(buff), MYF(0))) > 0)
{ {
@ -1402,6 +1428,7 @@ void cat_file(DYNAMIC_STRING* ds, const char* filename)
dynstr_append_mem(ds, start, p-start); dynstr_append_mem(ds, start, p-start);
} }
my_close(fd, MYF(0)); my_close(fd, MYF(0));
return 0;
} }
@ -1809,7 +1836,7 @@ int dyn_string_cmp(DYNAMIC_STRING* ds, const char *fname)
{ {
my_close(fd, MYF(0)); my_close(fd, MYF(0));
/* Remove the temporary file */ /* Remove the temporary file */
my_delete(temp_file_path, MYF(0)); my_delete(temp_file_path, MYF(MY_WME));
die("Failed to write file '%s'", temp_file_path); die("Failed to write file '%s'", temp_file_path);
} }
@ -1817,7 +1844,7 @@ int dyn_string_cmp(DYNAMIC_STRING* ds, const char *fname)
my_close(fd, MYF(0)); my_close(fd, MYF(0));
/* Remove the temporary file */ /* Remove the temporary file */
my_delete(temp_file_path, MYF(0)); my_delete(temp_file_path, MYF(MY_WME));
DBUG_RETURN(error); DBUG_RETURN(error);
} }
@ -1861,7 +1888,7 @@ void check_result()
if (access(reject_file, W_OK) == 0) if (access(reject_file, W_OK) == 0)
{ {
/* Result file directory is writable, save reject file there */ /* Result file directory is writable, save reject file there */
fn_format(reject_file, result_file_name, NULL, fn_format(reject_file, result_file_name, "",
".reject", MY_REPLACE_EXT); ".reject", MY_REPLACE_EXT);
} }
else else
@ -2208,8 +2235,14 @@ void var_query_set(VAR *var, const char *query, const char** query_end)
DBUG_ENTER("var_query_set"); DBUG_ENTER("var_query_set");
LINT_INIT(res); LINT_INIT(res);
/* Only white space or ) allowed past ending ` */
while (end > query && *end != '`') while (end > query && *end != '`')
{
if (*end && (*end != ' ' && *end != '\t' && *end != '\n' && *end != ')'))
die("Spurious text after `query` expression");
--end; --end;
}
if (query == end) if (query == end)
die("Syntax error in query, missing '`'"); die("Syntax error in query, missing '`'");
++query; ++query;
@ -2416,6 +2449,9 @@ void eval_expr(VAR *v, const char *p, const char **p_end)
if ((vp= var_get(p, p_end, 0, 0))) if ((vp= var_get(p, p_end, 0, 0)))
var_copy(v, vp); var_copy(v, vp);
/* Apparently it is not safe to assume null-terminated string */
v->str_val[v->str_val_len]= 0;
/* Make sure there was just a $variable and nothing else */ /* Make sure there was just a $variable and nothing else */
const char* end= *p_end + 1; const char* end= *p_end + 1;
if (end < expected_end) if (end < expected_end)
@ -2762,6 +2798,7 @@ void do_exec(struct st_command *command)
else else
{ {
dynstr_free(&ds_cmd); dynstr_free(&ds_cmd);
if (command->expected_errors.count > 0)
die("command \"%s\" failed with wrong error: %d", die("command \"%s\" failed with wrong error: %d",
command->first_argument, status); command->first_argument, status);
} }
@ -2907,6 +2944,41 @@ void do_system(struct st_command *command)
} }
/*
SYNOPSIS
set_wild_chars
set true to set * etc. as wild char, false to reset
DESCRIPTION
Auxiliary function to set "our" wild chars before calling wild_compare
This is needed because the default values are changed to SQL syntax
in mysqltest_embedded.
*/
void set_wild_chars (my_bool set)
{
static char old_many= 0, old_one, old_prefix;
if (set)
{
if (wild_many == '*') return; // No need
old_many= wild_many;
old_one= wild_one;
old_prefix= wild_prefix;
wild_many= '*';
wild_one= '?';
wild_prefix= 0;
}
else
{
if (! old_many) return; // Was not set
wild_many= old_many;
wild_one= old_one;
wild_prefix= old_prefix;
}
}
/* /*
SYNOPSIS SYNOPSIS
do_remove_file do_remove_file
@ -2931,8 +3003,8 @@ void do_remove_file(struct st_command *command)
' '); ' ');
DBUG_PRINT("info", ("removing file: %s", ds_filename.str)); DBUG_PRINT("info", ("removing file: %s", ds_filename.str));
error= my_delete(ds_filename.str, MYF(0)) != 0; error= my_delete(ds_filename.str, MYF(disable_warnings ? 0 : MY_WME)) != 0;
handle_command_error(command, error); handle_command_error(command, error, my_errno);
dynstr_free(&ds_filename); dynstr_free(&ds_filename);
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
@ -2950,7 +3022,7 @@ void do_remove_file(struct st_command *command)
void do_remove_files_wildcard(struct st_command *command) void do_remove_files_wildcard(struct st_command *command)
{ {
int error= 0; int error= 0, sys_errno= 0;
uint i; uint i;
MY_DIR *dir_info; MY_DIR *dir_info;
FILEINFO *file; FILEINFO *file;
@ -2974,15 +3046,20 @@ void do_remove_files_wildcard(struct st_command *command)
DBUG_PRINT("info", ("listing directory: %s", dirname)); DBUG_PRINT("info", ("listing directory: %s", dirname));
/* Note that my_dir sorts the list if not given any flags */ /* Note that my_dir sorts the list if not given any flags */
if (!(dir_info= my_dir(dirname, MYF(MY_DONT_SORT | MY_WANT_STAT)))) if (!(dir_info= my_dir(dirname, MYF(MY_DONT_SORT | MY_WANT_STAT | MY_WME))))
{ {
error= 1; error= 1;
sys_errno= my_errno;
goto end; goto end;
} }
init_dynamic_string(&ds_file_to_remove, dirname, 1024, 1024); init_dynamic_string(&ds_file_to_remove, dirname, 1024, 1024);
dir_separator[0]= FN_LIBCHAR; dir_separator[0]= FN_LIBCHAR;
dir_separator[1]= 0; dir_separator[1]= 0;
dynstr_append(&ds_file_to_remove, dir_separator); dynstr_append(&ds_file_to_remove, dir_separator);
/* Set default wild chars for wild_compare, is changed in embedded mode */
set_wild_chars(1);
for (i= 0; i < (uint) dir_info->number_off_files; i++) for (i= 0; i < (uint) dir_info->number_off_files; i++)
{ {
file= dir_info->dir_entry + i; file= dir_info->dir_entry + i;
@ -2998,14 +3075,16 @@ void do_remove_files_wildcard(struct st_command *command)
ds_file_to_remove.str[ds_directory.length + 1]= 0; ds_file_to_remove.str[ds_directory.length + 1]= 0;
dynstr_append(&ds_file_to_remove, file->name); dynstr_append(&ds_file_to_remove, file->name);
DBUG_PRINT("info", ("removing file: %s", ds_file_to_remove.str)); DBUG_PRINT("info", ("removing file: %s", ds_file_to_remove.str));
error= my_delete(ds_file_to_remove.str, MYF(0)) != 0; if ((error= (my_delete(ds_file_to_remove.str, MYF(MY_WME)) != 0)))
sys_errno= my_errno;
if (error) if (error)
break; break;
} }
set_wild_chars(0);
my_dirend(dir_info); my_dirend(dir_info);
end: end:
handle_command_error(command, error); handle_command_error(command, error, sys_errno);
dynstr_free(&ds_directory); dynstr_free(&ds_directory);
dynstr_free(&ds_wild); dynstr_free(&ds_wild);
dynstr_free(&ds_file_to_remove); dynstr_free(&ds_file_to_remove);
@ -3043,8 +3122,8 @@ void do_copy_file(struct st_command *command)
DBUG_PRINT("info", ("Copy %s to %s", ds_from_file.str, ds_to_file.str)); DBUG_PRINT("info", ("Copy %s to %s", ds_from_file.str, ds_to_file.str));
error= (my_copy(ds_from_file.str, ds_to_file.str, error= (my_copy(ds_from_file.str, ds_to_file.str,
MYF(MY_DONT_OVERWRITE_FILE)) != 0); MYF(MY_DONT_OVERWRITE_FILE | MY_WME)) != 0);
handle_command_error(command, error); handle_command_error(command, error, my_errno);
dynstr_free(&ds_from_file); dynstr_free(&ds_from_file);
dynstr_free(&ds_to_file); dynstr_free(&ds_to_file);
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
@ -3079,8 +3158,8 @@ void do_move_file(struct st_command *command)
DBUG_PRINT("info", ("Move %s to %s", ds_from_file.str, ds_to_file.str)); DBUG_PRINT("info", ("Move %s to %s", ds_from_file.str, ds_to_file.str));
error= (my_rename(ds_from_file.str, ds_to_file.str, error= (my_rename(ds_from_file.str, ds_to_file.str,
MYF(0)) != 0); MYF(disable_warnings ? 0 : MY_WME)) != 0);
handle_command_error(command, error); handle_command_error(command, error, my_errno);
dynstr_free(&ds_from_file); dynstr_free(&ds_from_file);
dynstr_free(&ds_to_file); dynstr_free(&ds_to_file);
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
@ -3100,6 +3179,7 @@ void do_move_file(struct st_command *command)
void do_chmod_file(struct st_command *command) void do_chmod_file(struct st_command *command)
{ {
int error;
long mode= 0; long mode= 0;
static DYNAMIC_STRING ds_mode; static DYNAMIC_STRING ds_mode;
static DYNAMIC_STRING ds_file; static DYNAMIC_STRING ds_file;
@ -3120,7 +3200,10 @@ void do_chmod_file(struct st_command *command)
die("You must write a 4 digit octal number for mode"); die("You must write a 4 digit octal number for mode");
DBUG_PRINT("info", ("chmod %o %s", (uint)mode, ds_file.str)); DBUG_PRINT("info", ("chmod %o %s", (uint)mode, ds_file.str));
handle_command_error(command, chmod(ds_file.str, mode)); error= 0;
if (chmod(ds_file.str, mode))
error= 1;
handle_command_error(command, error, errno);
dynstr_free(&ds_mode); dynstr_free(&ds_mode);
dynstr_free(&ds_file); dynstr_free(&ds_file);
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
@ -3153,7 +3236,7 @@ void do_file_exist(struct st_command *command)
DBUG_PRINT("info", ("Checking for existence of file: %s", ds_filename.str)); DBUG_PRINT("info", ("Checking for existence of file: %s", ds_filename.str));
error= (access(ds_filename.str, F_OK) != 0); error= (access(ds_filename.str, F_OK) != 0);
handle_command_error(command, error); handle_command_error(command, error, errno);
dynstr_free(&ds_filename); dynstr_free(&ds_filename);
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
@ -3183,8 +3266,8 @@ void do_mkdir(struct st_command *command)
' '); ' ');
DBUG_PRINT("info", ("creating directory: %s", ds_dirname.str)); DBUG_PRINT("info", ("creating directory: %s", ds_dirname.str));
error= my_mkdir(ds_dirname.str, 0777, MYF(0)) != 0; error= my_mkdir(ds_dirname.str, 0777, MYF(MY_WME)) != 0;
handle_command_error(command, error); handle_command_error(command, error, my_errno);
dynstr_free(&ds_dirname); dynstr_free(&ds_dirname);
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
@ -3214,7 +3297,7 @@ void do_rmdir(struct st_command *command)
DBUG_PRINT("info", ("removing directory: %s", ds_dirname.str)); DBUG_PRINT("info", ("removing directory: %s", ds_dirname.str));
error= rmdir(ds_dirname.str) != 0; error= rmdir(ds_dirname.str) != 0;
handle_command_error(command, error); handle_command_error(command, error, errno);
dynstr_free(&ds_dirname); dynstr_free(&ds_dirname);
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
@ -3243,6 +3326,7 @@ static int get_list_files(DYNAMIC_STRING *ds, const DYNAMIC_STRING *ds_dirname,
/* Note that my_dir sorts the list if not given any flags */ /* Note that my_dir sorts the list if not given any flags */
if (!(dir_info= my_dir(ds_dirname->str, MYF(0)))) if (!(dir_info= my_dir(ds_dirname->str, MYF(0))))
DBUG_RETURN(1); DBUG_RETURN(1);
set_wild_chars(1);
for (i= 0; i < (uint) dir_info->number_off_files; i++) for (i= 0; i < (uint) dir_info->number_off_files; i++)
{ {
file= dir_info->dir_entry + i; file= dir_info->dir_entry + i;
@ -3256,6 +3340,7 @@ static int get_list_files(DYNAMIC_STRING *ds, const DYNAMIC_STRING *ds_dirname,
dynstr_append(ds, file->name); dynstr_append(ds, file->name);
dynstr_append(ds, "\n"); dynstr_append(ds, "\n");
} }
set_wild_chars(0);
my_dirend(dir_info); my_dirend(dir_info);
DBUG_RETURN(0); DBUG_RETURN(0);
} }
@ -3288,7 +3373,7 @@ static void do_list_files(struct st_command *command)
sizeof(list_files_args)/sizeof(struct command_arg), ' '); sizeof(list_files_args)/sizeof(struct command_arg), ' ');
error= get_list_files(&ds_res, &ds_dirname, &ds_wild); error= get_list_files(&ds_res, &ds_dirname, &ds_wild);
handle_command_error(command, error); handle_command_error(command, error, my_errno);
dynstr_free(&ds_dirname); dynstr_free(&ds_dirname);
dynstr_free(&ds_wild); dynstr_free(&ds_wild);
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
@ -3330,7 +3415,7 @@ static void do_list_files_write_file_command(struct st_command *command,
init_dynamic_string(&ds_content, "", 1024, 1024); init_dynamic_string(&ds_content, "", 1024, 1024);
error= get_list_files(&ds_content, &ds_dirname, &ds_wild); error= get_list_files(&ds_content, &ds_dirname, &ds_wild);
handle_command_error(command, error); handle_command_error(command, error, my_errno);
str_to_file2(ds_filename.str, ds_content.str, ds_content.length, append); str_to_file2(ds_filename.str, ds_content.str, ds_content.length, append);
dynstr_free(&ds_content); dynstr_free(&ds_content);
dynstr_free(&ds_filename); dynstr_free(&ds_filename);
@ -3538,6 +3623,7 @@ void do_append_file(struct st_command *command)
void do_cat_file(struct st_command *command) void do_cat_file(struct st_command *command)
{ {
int error;
static DYNAMIC_STRING ds_filename; static DYNAMIC_STRING ds_filename;
const struct command_arg cat_file_args[] = { const struct command_arg cat_file_args[] = {
{ "filename", ARG_STRING, TRUE, &ds_filename, "File to read from" } { "filename", ARG_STRING, TRUE, &ds_filename, "File to read from" }
@ -3552,8 +3638,8 @@ void do_cat_file(struct st_command *command)
DBUG_PRINT("info", ("Reading from, file: %s", ds_filename.str)); DBUG_PRINT("info", ("Reading from, file: %s", ds_filename.str));
cat_file(&ds_res, ds_filename.str); error= cat_file(&ds_res, ds_filename.str);
handle_command_error(command, error, my_errno);
dynstr_free(&ds_filename); dynstr_free(&ds_filename);
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
@ -3612,7 +3698,7 @@ void do_diff_files(struct st_command *command)
dynstr_free(&ds_filename); dynstr_free(&ds_filename);
dynstr_free(&ds_filename2); dynstr_free(&ds_filename2);
handle_command_error(command, error); handle_command_error(command, error, -1);
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
@ -3817,10 +3903,22 @@ void do_perl(struct st_command *command)
} }
error= pclose(res_file); error= pclose(res_file);
/* Remove the temporary file */ /* Remove the temporary file, but keep it if perl failed */
my_delete(temp_file_path, MYF(0)); if (!error)
my_delete(temp_file_path, MYF(MY_WME));
handle_command_error(command, WEXITSTATUS(error)); /* Check for error code that indicates perl could not be started */
int exstat= WEXITSTATUS(error);
#ifdef __WIN__
if (exstat == 1)
/* Text must begin 'perl not found' as mtr looks for it */
abort_not_supported_test("perl not found in path or did not start");
#else
if (exstat == 127)
abort_not_supported_test("perl not found in path");
#endif
else
handle_command_error(command, WEXITSTATUS(error), my_errno);
} }
dynstr_free(&ds_delimiter); dynstr_free(&ds_delimiter);
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
@ -4764,6 +4862,16 @@ void select_connection_name(const char *name)
set_current_connection(con); set_current_connection(con);
/* Connection logging if enabled */
if (!disable_connect_log && !disable_query_log)
{
DYNAMIC_STRING *ds= &ds_res;
dynstr_append_mem(ds, "connection ", 11);
replace_dynstr_append(ds, name);
dynstr_append_mem(ds, ";\n", 2);
}
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
@ -4850,6 +4958,17 @@ void do_close_connection(struct st_command *command)
var_set_int("$mysql_get_server_version", 0xFFFFFFFF); var_set_int("$mysql_get_server_version", 0xFFFFFFFF);
var_set_string("$CURRENT_CONNECTION", con->name); var_set_string("$CURRENT_CONNECTION", con->name);
} }
/* Connection logging if enabled */
if (!disable_connect_log && !disable_query_log)
{
DYNAMIC_STRING *ds= &ds_res;
dynstr_append_mem(ds, "disconnect ", 11);
replace_dynstr_append(ds, ds_connection.str);
dynstr_append_mem(ds, ";\n", 2);
}
dynstr_free(&ds_connection); dynstr_free(&ds_connection);
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
@ -4961,7 +5080,7 @@ int connect_n_handle_errors(struct st_command *command,
ds= &ds_res; ds= &ds_res;
/* Only log if an error is expected */ /* Only log if an error is expected */
if (!command->abort_on_error && if (command->expected_errors.count > 0 &&
!disable_query_log) !disable_query_log)
{ {
/* /*
@ -4985,6 +5104,13 @@ 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);
} }
/* Simlified logging if enabled */
if (!disable_connect_log && !disable_query_log)
{
replace_dynstr_append(ds, command->query);
dynstr_append_mem(ds, ";\n", 2);
}
while (!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))
{ {
@ -5175,6 +5301,7 @@ void do_connect(struct st_command *command)
#ifdef EMBEDDED_LIBRARY #ifdef EMBEDDED_LIBRARY
con_slot->query_done= 1; con_slot->query_done= 1;
con_slot->has_thread= FALSE;
#endif #endif
if (!mysql_init(&con_slot->mysql)) if (!mysql_init(&con_slot->mysql))
die("Failed on mysql_init()"); die("Failed on mysql_init()");
@ -5207,11 +5334,13 @@ void do_connect(struct st_command *command)
#ifdef __WIN__ #ifdef __WIN__
if (con_pipe) if (con_pipe)
{ {
uint protocol= MYSQL_PROTOCOL_PIPE; opt_protocol= MYSQL_PROTOCOL_PIPE;
mysql_options(&con_slot->mysql, MYSQL_OPT_PROTOCOL, &protocol);
} }
#endif #endif
if (opt_protocol)
mysql_options(&con_slot->mysql, MYSQL_OPT_PROTOCOL, (char*) &opt_protocol);
#ifdef HAVE_SMEM #ifdef HAVE_SMEM
if (con_shm) if (con_shm)
{ {
@ -5382,7 +5511,19 @@ void do_block(enum block_cmd cmd, struct st_command* command)
/* Define inner block */ /* Define inner block */
cur_block++; cur_block++;
cur_block->cmd= cmd; cur_block->cmd= cmd;
cur_block->ok= (v.int_val ? TRUE : FALSE); if (v.int_val)
{
cur_block->ok= TRUE;
} else
/* Any non-empty string which does not begin with 0 is also TRUE */
{
p= v.str_val;
/* First skip any leading white space or unary -+ */
while (*p && ((my_isspace(charset_info, *p) || *p == '-' || *p == '+')))
p++;
cur_block->ok= (*p && *p != '0') ? TRUE : FALSE;
}
if (not_expr) if (not_expr)
cur_block->ok = !cur_block->ok; cur_block->ok = !cur_block->ok;
@ -5483,6 +5624,8 @@ int read_line(char *buf, int size)
char c, UNINIT_VAR(last_quote); char c, UNINIT_VAR(last_quote);
char *p= buf, *buf_end= buf + size - 1; char *p= buf, *buf_end= buf + size - 1;
int skip_char= 0; int skip_char= 0;
my_bool have_slash= FALSE;
enum {R_NORMAL, R_Q, R_SLASH_IN_Q, enum {R_NORMAL, R_Q, R_SLASH_IN_Q,
R_COMMENT, R_LINE_START} state= R_LINE_START; R_COMMENT, R_LINE_START} state= R_LINE_START;
DBUG_ENTER("read_line"); DBUG_ENTER("read_line");
@ -5553,10 +5696,14 @@ int read_line(char *buf, int size)
DBUG_RETURN(0); DBUG_RETURN(0);
} }
else if (c == '\'' || c == '"' || c == '`') else if (c == '\'' || c == '"' || c == '`')
{
if (! have_slash)
{ {
last_quote= c; last_quote= c;
state= R_Q; state= R_Q;
} }
}
have_slash= (c == '\\');
break; break;
case R_COMMENT: case R_COMMENT:
@ -5932,6 +6079,8 @@ static struct my_option my_long_options[] =
GET_INT, REQUIRED_ARG, 128, 8, 5120, 0, 0, 0}, GET_INT, REQUIRED_ARG, 128, 8, 5120, 0, 0, 0},
{"password", 'p', "Password to use when connecting to server.", {"password", 'p', "Password to use when connecting to server.",
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, 0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
{"protocol", OPT_MYSQL_PROTOCOL, "The protocol of connection (tcp,socket,pipe,memory).",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"port", 'P', "Port number to use for connection or 0 for default to, in " {"port", 'P', "Port number to use for connection or 0 for default to, in "
"order of preference, my.cnf, $MYSQL_TCP_PORT, " "order of preference, my.cnf, $MYSQL_TCP_PORT, "
#if MYSQL_PORT_DEFAULT == 0 #if MYSQL_PORT_DEFAULT == 0
@ -6071,7 +6220,7 @@ void read_embedded_server_arguments(const char *name)
static my_bool static my_bool
get_one_option(int optid, const struct my_option *opt __attribute__((unused)), get_one_option(int optid, const struct my_option *opt,
char *argument) char *argument)
{ {
switch(optid) { switch(optid) {
@ -6160,6 +6309,12 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
case 'V': case 'V':
print_version(); print_version();
exit(0); exit(0);
case OPT_MYSQL_PROTOCOL:
#ifndef EMBEDDED_LIBRARY
opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,
opt->name);
#endif
break;
case '?': case '?':
usage(); usage();
exit(0); exit(0);
@ -7292,11 +7447,13 @@ void run_query(struct st_connection *cn, struct st_command *command, int flags)
(flags & QUERY_REAP_FLAG)); (flags & QUERY_REAP_FLAG));
DBUG_ENTER("run_query"); DBUG_ENTER("run_query");
init_dynamic_string(&ds_warnings, NULL, 0, 256);
if (cn->pending && (flags & QUERY_SEND_FLAG)) if (cn->pending && (flags & QUERY_SEND_FLAG))
die ("Cannot run query on connection between send and reap"); die ("Cannot run query on connection between send and reap");
if (!(flags & QUERY_SEND_FLAG) && !cn->pending)
die ("Cannot reap on a connection without pending send");
init_dynamic_string(&ds_warnings, NULL, 0, 256);
/* /*
Evaluate query if this is an eval command Evaluate query if this is an eval command
*/ */
@ -7638,9 +7795,6 @@ void get_command_type(struct st_command* command)
sizeof(saved_expected_errors)); sizeof(saved_expected_errors));
DBUG_PRINT("info", ("There are %d expected errors", DBUG_PRINT("info", ("There are %d expected errors",
command->expected_errors.count)); command->expected_errors.count));
command->abort_on_error= (command->expected_errors.count == 0 &&
abort_on_error);
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
@ -7927,6 +8081,9 @@ int main(int argc, char **argv)
mysql_options(&con->mysql, MYSQL_SET_CHARSET_DIR, mysql_options(&con->mysql, MYSQL_SET_CHARSET_DIR,
opt_charsets_dir); opt_charsets_dir);
if (opt_protocol)
mysql_options(&con->mysql,MYSQL_OPT_PROTOCOL,(char*)&opt_protocol);
#ifdef HAVE_OPENSSL #ifdef HAVE_OPENSSL
if (opt_use_ssl) if (opt_use_ssl)
@ -7986,6 +8143,10 @@ int main(int argc, char **argv)
command->type= Q_COMMENT; command->type= Q_COMMENT;
} }
/* (Re-)set abort_on_error for this command */
command->abort_on_error= (command->expected_errors.count == 0 &&
abort_on_error);
/* delimiter needs to be executed so we can continue to parse */ /* delimiter needs to be executed so we can continue to parse */
ok_to_do= cur_block->ok || command->type == Q_DELIMITER; ok_to_do= cur_block->ok || command->type == Q_DELIMITER;
/* /*
@ -8033,6 +8194,8 @@ int main(int argc, char **argv)
case Q_DISABLE_ABORT_ON_ERROR: abort_on_error=0; break; case Q_DISABLE_ABORT_ON_ERROR: abort_on_error=0; break;
case Q_ENABLE_RESULT_LOG: disable_result_log=0; break; case Q_ENABLE_RESULT_LOG: disable_result_log=0; break;
case Q_DISABLE_RESULT_LOG: disable_result_log=1; break; case Q_DISABLE_RESULT_LOG: disable_result_log=1; break;
case Q_ENABLE_CONNECT_LOG: disable_connect_log=0; break;
case Q_DISABLE_CONNECT_LOG: disable_connect_log=1; break;
case Q_ENABLE_WARNINGS: disable_warnings=0; break; case Q_ENABLE_WARNINGS: disable_warnings=0; break;
case Q_DISABLE_WARNINGS: disable_warnings=1; break; case Q_DISABLE_WARNINGS: disable_warnings=1; break;
case Q_ENABLE_PREPARE_WARNINGS: prepare_warnings_enabled=1; break; case Q_ENABLE_PREPARE_WARNINGS: prepare_warnings_enabled=1; break;
@ -8199,12 +8362,12 @@ int main(int argc, char **argv)
command->last_argument= command->end; command->last_argument= command->end;
break; break;
case Q_PING: case Q_PING:
handle_command_error(command, mysql_ping(&cur_con->mysql)); handle_command_error(command, mysql_ping(&cur_con->mysql), -1);
break; break;
case Q_SEND_SHUTDOWN: case Q_SEND_SHUTDOWN:
handle_command_error(command, handle_command_error(command,
mysql_shutdown(&cur_con->mysql, mysql_shutdown(&cur_con->mysql,
SHUTDOWN_DEFAULT)); SHUTDOWN_DEFAULT), -1);
break; break;
case Q_SHUTDOWN_SERVER: case Q_SHUTDOWN_SERVER:
do_shutdown_server(command); do_shutdown_server(command);
@ -8363,16 +8526,6 @@ int main(int argc, char **argv)
check_result(); check_result();
} }
} }
else
{
/*
No result_file_name specified, the result
has been printed to stdout, exit with error
unless script has called "exit" to indicate success
*/
if (abort_flag == 0)
die("Exit with failure! Call 'exit' in script to return with sucess");
}
} }
else else
{ {

View file

@ -16,7 +16,7 @@ AC_DEFUN([MY_MAINTAINER_MODE], [
AC_DEFUN([MY_MAINTAINER_MODE_WARNINGS], [ AC_DEFUN([MY_MAINTAINER_MODE_WARNINGS], [
# Setup GCC warning options. # Setup GCC warning options.
AS_IF([test "$GCC" = "yes"], [ AS_IF([test "$GCC" = "yes"], [
C_WARNINGS="-Wall -Wextra -Wunused -Wwrite-strings -Werror" C_WARNINGS="-Wall -Wextra -Wunused -Wwrite-strings -Wno-strict-aliasing -Werror"
CXX_WARNINGS="${C_WARNINGS} -Wno-unused-parameter" CXX_WARNINGS="${C_WARNINGS} -Wno-unused-parameter"
]) ])

View file

@ -26,7 +26,7 @@ AC_DEFUN([MYSQL_PLUGIN],[
[__MYSQL_PLUGIN_]AS_TR_CPP([$1])[__], [__MYSQL_PLUGIN_]AS_TR_CPP([$1])[__],
m4_default([$2], [$1 plugin]), m4_default([$2], [$1 plugin]),
m4_default([$3], [plugin for $1]), m4_default([$3], [plugin for $1]),
m4_default([$4], []), m4_default([[$4]], []),
) )
]) ])
@ -60,7 +60,7 @@ dnl
dnl --------------------------------------------------------------------------- dnl ---------------------------------------------------------------------------
AC_DEFUN([MYSQL_STORAGE_ENGINE],[ AC_DEFUN([MYSQL_STORAGE_ENGINE],[
MYSQL_PLUGIN([$1], [$3], [$4], [[$5]]) MYSQL_PLUGIN([$1], [$3], [$4], [$5])
MYSQL_PLUGIN_DEFINE([$1], [WITH_]AS_TR_CPP([$1])[_STORAGE_ENGINE]) MYSQL_PLUGIN_DEFINE([$1], [WITH_]AS_TR_CPP([$1])[_STORAGE_ENGINE])
ifelse([$2],[no],[],[ ifelse([$2],[no],[],[
_MYSQL_LEGACY_STORAGE_ENGINE( _MYSQL_LEGACY_STORAGE_ENGINE(
@ -115,18 +115,32 @@ dnl ---------------------------------------------------------------------------
dnl Macro: MYSQL_PLUGIN_STATIC dnl Macro: MYSQL_PLUGIN_STATIC
dnl dnl
dnl SYNOPSIS dnl SYNOPSIS
dnl MYSQL_PLUGIN_STATIC([name],[libmyplugin.a]) dnl MYSQL_PLUGIN_STATIC([name],[libmyplugin.a],[libmyplugin_embedded.a])
dnl dnl
dnl DESCRIPTION dnl DESCRIPTION
dnl Declare the name for the static library dnl Declare the name for the static library
dnl dnl
dnl Third argument is optional, only needed for special plugins that depend
dnl on server internals and have source files that must be compiled specially
dnl with -DEMBEDDED_LIBRARY for embedded server. If specified, the third
dnl argument is used to link embedded server instead of the second.
dnl
dnl --------------------------------------------------------------------------- dnl ---------------------------------------------------------------------------
AC_DEFUN([MYSQL_PLUGIN_STATIC],[ AC_DEFUN([MYSQL_PLUGIN_STATIC],[
MYSQL_REQUIRE_PLUGIN([$1]) MYSQL_REQUIRE_PLUGIN([$1])
m4_define([MYSQL_PLUGIN_STATIC_]AS_TR_CPP([$1]), [$2]) m4_define([MYSQL_PLUGIN_STATIC_]AS_TR_CPP([$1]), [$2])
ifelse($#, 3, [
m4_define([MYSQL_PLUGIN_EMBEDDED_]AS_TR_CPP([$1]), [$3])
])
]) ])
dnl ---------------------------------------------------------------------------
dnl Substitution variable to use to compile source files specially for
dnl embedded server.
dnl To be used by plugins that have sources that depend on server internals.
dnl ---------------------------------------------------------------------------
AC_SUBST([plugin_embedded_defs], ["-DEMBEDDED_LIBRARY -DMYSQL_SERVER"])
dnl --------------------------------------------------------------------------- dnl ---------------------------------------------------------------------------
dnl Macro: MYSQL_PLUGIN_DYNAMIC dnl Macro: MYSQL_PLUGIN_DYNAMIC
@ -253,28 +267,6 @@ AC_DEFUN([MYSQL_PLUGIN_ACTIONS],[
]) ])
]) ])
dnl ---------------------------------------------------------------------------
dnl Macro: MYSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS
dnl
dnl SYNOPSIS
dnl MYSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS([name],[file name])
dnl
dnl DESCRIPTION
dnl Some modules in plugins keep dependance on structures
dnl declared in sql/ (THD class usually)
dnl That has to be fixed in the future, but until then
dnl we have to recompile these modules when we want to
dnl to compile server parts with the different #defines
dnl Normally it happens when we compile the embedded server
dnl Thus one should mark such files in his handler using this macro
dnl
dnl ---------------------------------------------------------------------------
AC_DEFUN([MYSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS],[
MYSQL_REQUIRE_PLUGIN([$1])
m4_define([MYSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS_]AS_TR_CPP([$1]), [$2])
])
dnl --------------------------------------------------------------------------- dnl ---------------------------------------------------------------------------
dnl Macro: MYSQL_CONFIGURE_PLUGINS dnl Macro: MYSQL_CONFIGURE_PLUGINS
dnl dnl
@ -335,11 +327,25 @@ AC_DEFUN([_MYSQL_EMIT_CHECK_PLUGIN],[
[MYSQL_PLUGIN_DYNAMIC_]AS_TR_CPP([$1]), [MYSQL_PLUGIN_DYNAMIC_]AS_TR_CPP([$1]),
[MYSQL_PLUGIN_MANDATORY_]AS_TR_CPP([$1]), [MYSQL_PLUGIN_MANDATORY_]AS_TR_CPP([$1]),
[MYSQL_PLUGIN_DISABLED_]AS_TR_CPP([$1]), [MYSQL_PLUGIN_DISABLED_]AS_TR_CPP([$1]),
[MYSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS_]AS_TR_CPP([$1]), [MYSQL_PLUGIN_EMBEDDED_]AS_TR_CPP([$1]),
[MYSQL_PLUGIN_ACTIONS_]AS_TR_CPP([$1]) [MYSQL_PLUGIN_ACTIONS_]AS_TR_CPP([$1])
) )
]) ])
dnl __MYSQL_EMIT_CHECK_PLUGIN arguments:
dnl
dnl 1 - plugin identifying name
dnl 2 - plugin identifying name, with `-' replaced by `_'
dnl 3 - plugin long name
dnl 4 - plugin description
dnl 5 - mysql_plugin_define (eg. WITH_xxx_STORAGE_ENGINE)
dnl 6 - directory
dnl 7 - static target (if supports static build)
dnl 8 - dynamic target (if supports dynamic build)
dnl 9 - mandatory flag
dnl 10 - disabled flag
dnl 11 - static target for libmysqld (if different from $7)
dnl 12 - actions
AC_DEFUN([__MYSQL_EMIT_CHECK_PLUGIN],[ AC_DEFUN([__MYSQL_EMIT_CHECK_PLUGIN],[
m4_ifdef([$5],[ m4_ifdef([$5],[
AH_TEMPLATE($5, [Include ]$4[ into mysqld]) AH_TEMPLATE($5, [Include ]$4[ into mysqld])
@ -390,6 +396,14 @@ AC_DEFUN([__MYSQL_EMIT_CHECK_PLUGIN],[
fi fi
;; ;;
esac esac
# Similarly, disable shared plugins when configured with --disable-shared
# as libtool will not be able to produce them
if test "X[$enable_shared]" = Xno; then
if test "X[$mysql_plugin_]$2" != Xyes -a \
"X[$with_plugin_]$2" != Xyes; then
[with_plugin_]$2=no
fi
fi
]) ])
@ -406,6 +420,7 @@ AC_DEFUN([__MYSQL_EMIT_CHECK_PLUGIN],[
]) ])
AC_SUBST([plugin_]$2[_shared_target], "$8") AC_SUBST([plugin_]$2[_shared_target], "$8")
AC_SUBST([plugin_]$2[_static_target], [""]) AC_SUBST([plugin_]$2[_static_target], [""])
AC_SUBST([plugin_]$2[_embedded_static_target], [""])
[with_plugin_]$2=yes [with_plugin_]$2=yes
AC_MSG_RESULT([plugin]) AC_MSG_RESULT([plugin])
m4_ifdef([$6],[ m4_ifdef([$6],[
@ -420,32 +435,47 @@ AC_DEFUN([__MYSQL_EMIT_CHECK_PLUGIN],[
]) ])
else else
m4_ifdef([$7],[ m4_ifdef([$7],[
ifelse(m4_bregexp($7, [^lib[^.]+\.a$]), -2, [ ifelse(m4_bregexp($7, [^\\\$]), 0, [
dnl change above "-2" to "0" to enable this section
dnl Although this is "pretty", it breaks libmysqld build
m4_ifdef([$6],[
mysql_use_plugin_dir="$6"
mysql_plugin_libs="$mysql_plugin_libs -L[\$(top_builddir)]/$6"
])
mysql_plugin_libs="$mysql_plugin_libs dnl
[-l]m4_bregexp($7, [^lib\([^.]+\)], [\1])"
], m4_bregexp($7, [^\\\$]), 0, [
m4_ifdef([$6],[ m4_ifdef([$6],[
mysql_use_plugin_dir="$6" mysql_use_plugin_dir="$6"
]) ])
mysql_plugin_libs="$mysql_plugin_libs $7" mysql_plugin_libs="$mysql_plugin_libs $7"
m4_ifdef([$11],[
mysql_embedded_plugin_libs="$mysql_embedded_plugin_libs $11"
],[
mysql_embedded_plugin_libs="$mysql_embedded_plugin_libs $7"
])
], [ ], [
m4_ifdef([$6],[ m4_ifdef([$6],[
mysql_use_plugin_dir="$6" mysql_use_plugin_dir="$6"
mysql_plugin_libs="$mysql_plugin_libs \$(top_builddir)/$6/$7" mysql_plugin_libs="$mysql_plugin_libs \$(top_builddir)/$6/$7"
m4_ifdef([$11],[
mysql_embedded_plugin_libs="$mysql_embedded_plugin_libs \$(top_builddir)/$6/$11"
],[
mysql_embedded_plugin_libs="$mysql_embedded_plugin_libs \$(top_builddir)/$6/$7"
])
],[ ],[
mysql_plugin_libs="$mysql_plugin_libs $7" mysql_plugin_libs="$mysql_plugin_libs $7"
m4_ifdef([$11],[
mysql_embedded_plugin_libs="$mysql_embedded_plugin_libs $11"
],[
mysql_embedded_plugin_libs="$mysql_embedded_plugin_libs $7"
])
]) ])
]) ])
m4_ifdef([$5],[ m4_ifdef([$5],[
AC_DEFINE($5) AC_DEFINE($5)
]) ])
AC_SUBST([plugin_]$2[_static_target], "$7") AC_SUBST([plugin_]$2[_static_target], "$7")
m4_ifdef([$11], [
if test "$with_embedded_server" = "yes"; then
AC_SUBST([plugin_]$2[_embedded_static_target], "$11")
else
AC_SUBST([plugin_]$2[_embedded_static_target], [""])
fi
], [
AC_SUBST([plugin_]$2[_embedded_static_target], [""])
])
AC_SUBST([plugin_]$2[_shared_target], [""]) AC_SUBST([plugin_]$2[_shared_target], [""])
],[ ],[
m4_ifdef([$6],[ m4_ifdef([$6],[
@ -462,14 +492,6 @@ dnl Although this is "pretty", it breaks libmysqld build
mysql_plugin_defs="$mysql_plugin_defs, [builtin_]$2[_plugin]" mysql_plugin_defs="$mysql_plugin_defs, [builtin_]$2[_plugin]"
[with_plugin_]$2=yes [with_plugin_]$2=yes
AC_MSG_RESULT([yes]) AC_MSG_RESULT([yes])
m4_ifdef([$11], [
m4_foreach([plugin], [$11], [
condition_dependent_plugin_modules="$condition_dependent_plugin_modules m4_bregexp(plugin, [[^/]+$], [\&])"
condition_dependent_plugin_objects="$condition_dependent_plugin_objects m4_bregexp(plugin, [[^/]+\.], [\&o])"
condition_dependent_plugin_links="$condition_dependent_plugin_links $6/plugin"
condition_dependent_plugin_includes="$condition_dependent_plugin_includes -I[\$(top_srcdir)]/$6/m4_bregexp(plugin, [^.+[/$]], [\&])"
])
])
fi fi
fi fi

View file

@ -12,7 +12,7 @@ dnl
dnl When changing the major version number please also check the switch dnl When changing the major version number please also check the switch
dnl statement in mysqlbinlog::check_master_version(). You may also need dnl statement in mysqlbinlog::check_master_version(). You may also need
dnl to update version.c in ndb. dnl to update version.c in ndb.
AC_INIT([MariaDB Server], [5.1.50-MariaDB], [], [mysql]) AC_INIT([MariaDB Server], [5.1.52-MariaDB], [], [mysql])
AC_CONFIG_SRCDIR([sql/mysqld.cc]) AC_CONFIG_SRCDIR([sql/mysqld.cc])
AC_CANONICAL_SYSTEM AC_CANONICAL_SYSTEM
@ -250,7 +250,7 @@ AC_PROG_LIBTOOL
# Ensure that we have --preserve-dup-deps defines, otherwise we get link # Ensure that we have --preserve-dup-deps defines, otherwise we get link
# problems of 'mysql' with CXX=g++ # problems of 'mysql' with CXX=g++
LIBTOOL="$LIBTOOL --preserve-dup-deps" #LIBTOOL="$LIBTOOL --preserve-dup-deps"
AC_SUBST(LIBTOOL)dnl AC_SUBST(LIBTOOL)dnl
AC_SUBST(NM)dnl AC_SUBST(NM)dnl
@ -2521,9 +2521,8 @@ MYSQL_CHECK_LIBEVENT
MYSQL_STORAGE_ENGINE(myisam,no, [MyISAM Storage Engine], MYSQL_STORAGE_ENGINE(myisam,no, [MyISAM Storage Engine],
[Traditional non-transactional MySQL tables]) [Traditional non-transactional MySQL tables])
MYSQL_PLUGIN_DIRECTORY(myisam, [storage/myisam]) MYSQL_PLUGIN_DIRECTORY(myisam, [storage/myisam])
MYSQL_PLUGIN_STATIC(myisam, [libmyisam.a]) MYSQL_PLUGIN_STATIC(myisam, [libmyisam_s.la], [libmyisam_embedded.la])
MYSQL_PLUGIN_MANDATORY(myisam) dnl Default MYSQL_PLUGIN_MANDATORY(myisam) dnl Default
MYSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS(myisam, [ha_myisam.cc])
MYSQL_STORAGE_ENGINE(partition, partition, [Partition Support], MYSQL_STORAGE_ENGINE(partition, partition, [Partition Support],
[MySQL Partitioning Support], [max,max-no-ndb]) [MySQL Partitioning Support], [max,max-no-ndb])
@ -2846,9 +2845,6 @@ if test "$with_server" != "no" -o "$THREAD_SAFE_CLIENT" != "no"
then then
AC_DEFINE([THREAD], [1], AC_DEFINE([THREAD], [1],
[Define if you want to have threaded code. This may be undef on client code]) [Define if you want to have threaded code. This may be undef on client code])
# Avoid _PROGRAMS names
THREAD_LOBJECTS="thr_alarm.o thr_lock.o thr_mutex.o thr_rwlock.o my_pthread.o my_thr_init.o mf_keycache.o mf_keycaches.o waiting_threads.o"
AC_SUBST(THREAD_LOBJECTS)
fi fi
AM_CONDITIONAL(NEED_THREAD, test "$with_server" != "no" -o "$THREAD_SAFE_CLIENT" != "no") AM_CONDITIONAL(NEED_THREAD, test "$with_server" != "no" -o "$THREAD_SAFE_CLIENT" != "no")
@ -2877,6 +2873,7 @@ AC_SUBST(server_scripts)
AC_SUBST(mysql_plugin_dirs) AC_SUBST(mysql_plugin_dirs)
AC_SUBST(mysql_plugin_libs) AC_SUBST(mysql_plugin_libs)
AC_SUBST(mysql_embedded_plugin_libs)
AC_SUBST(mysql_plugin_defs) AC_SUBST(mysql_plugin_defs)

View file

@ -16,10 +16,11 @@
# MA 02111-1307, USA # MA 02111-1307, USA
INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include
LDADD = libdbug.a ../mysys/libmysys.a ../strings/libmystrings.a LDADD = libdbug.a $(top_builddir)/mysys/libmysys.a $(top_builddir)/strings/libmystrings.a
pkglib_LIBRARIES = libdbug.a pkglib_LIBRARIES = libdbug.a
noinst_LTLIBRARIES = libdbug.la
noinst_HEADERS = dbug_long.h noinst_HEADERS = dbug_long.h
libdbug_a_SOURCES = dbug.c sanity.c libdbug_la_SOURCES = dbug.c sanity.c
EXTRA_DIST = CMakeLists.txt example1.c example2.c example3.c \ EXTRA_DIST = CMakeLists.txt example1.c example2.c example3.c \
user.r monty.doc dbug_add_tags.pl \ user.r monty.doc dbug_add_tags.pl \
my_main.c main.c factorial.c dbug_analyze.c \ my_main.c main.c factorial.c dbug_analyze.c \
@ -65,3 +66,7 @@ output5.r: factorial
# a hack to have executable in builddir, not in srcdir # a hack to have executable in builddir, not in srcdir
tests-t: tests-t.pl tests-t: tests-t.pl
cp -f $(srcdir)/tests-t.pl ./tests-t cp -f $(srcdir)/tests-t.pl ./tests-t
libdbug_a_SOURCES=
libdbug.a: libdbug.la
$(CP) .libs/libdbug.a $@

View file

@ -286,7 +286,7 @@ typedef struct _db_code_state_ {
#define ListDel(A,B,C) ListAddDel(A,B,C,EXCLUDE) #define ListDel(A,B,C) ListAddDel(A,B,C,EXCLUDE)
static struct link *ListAddDel(struct link *, const char *, const char *, int); static struct link *ListAddDel(struct link *, const char *, const char *, int);
static struct link *ListCopy(struct link *); static struct link *ListCopy(struct link *);
static int InList(struct link *linkp,const char *cp); static int InList(struct link *linkp,const char *cp, int exact_match);
static uint ListFlags(struct link *linkp); static uint ListFlags(struct link *linkp);
static void FreeList(struct link *linkp); static void FreeList(struct link *linkp);
@ -982,7 +982,7 @@ void _db_pop_()
} while (0) } while (0)
#define str_to_buf(S) do { \ #define str_to_buf(S) do { \
char_to_buf(','); \ char_to_buf(','); \
buf=strnmov(buf, (S), len+1); \ buf=strnmov(buf, (S), (uint) (end-buf)); \
if (buf >= end) goto overflow; \ if (buf >= end) goto overflow; \
} while (0) } while (0)
#define list_to_buf(l, f) do { \ #define list_to_buf(l, f) do { \
@ -1581,13 +1581,13 @@ static struct link *ListCopy(struct link *orig)
* *
*/ */
static int InList(struct link *linkp, const char *cp) static int InList(struct link *linkp, const char *cp, int exact_match)
{ {
int result; int result;
for (result=MATCHED; linkp != NULL; linkp= linkp->next_link) for (result=MATCHED; linkp != NULL; linkp= linkp->next_link)
{ {
if (!fnmatch(linkp->str, cp, 0)) if (!(exact_match ? strcmp(linkp->str,cp) : fnmatch(linkp->str, cp, 0)))
return linkp->flags; return linkp->flags;
if (!(linkp->flags & EXCLUDE)) if (!(linkp->flags & EXCLUDE))
result=NOT_MATCHED; result=NOT_MATCHED;
@ -1637,8 +1637,8 @@ static void PushState(CODE_STATE *cs)
struct settings *new_malloc; struct settings *new_malloc;
new_malloc= (struct settings *) DbugMalloc(sizeof(struct settings)); new_malloc= (struct settings *) DbugMalloc(sizeof(struct settings));
bzero(new_malloc, sizeof(struct settings));
new_malloc->next= cs->stack; new_malloc->next= cs->stack;
new_malloc->out_file= NULL;
cs->stack= new_malloc; cs->stack= new_malloc;
} }
@ -1752,8 +1752,8 @@ void _db_end_()
static int DoTrace(CODE_STATE *cs) static int DoTrace(CODE_STATE *cs)
{ {
if ((cs->stack->maxdepth == 0 || cs->level <= cs->stack->maxdepth) && if ((cs->stack->maxdepth == 0 || cs->level <= cs->stack->maxdepth) &&
InList(cs->stack->processes, cs->process) & (MATCHED|INCLUDE)) InList(cs->stack->processes, cs->process, 0) & (MATCHED|INCLUDE))
switch(InList(cs->stack->functions, cs->func)) { switch(InList(cs->stack->functions, cs->func, 0)) {
case INCLUDE|SUBDIR: return ENABLE_TRACE; case INCLUDE|SUBDIR: return ENABLE_TRACE;
case INCLUDE: return DO_TRACE; case INCLUDE: return DO_TRACE;
case MATCHED|SUBDIR: case MATCHED|SUBDIR:
@ -1790,10 +1790,10 @@ static int DoTrace(CODE_STATE *cs)
#ifndef THREAD #ifndef THREAD
static BOOLEAN DoProfile(CODE_STATE *cs) static BOOLEAN DoProfile(CODE_STATE *cs)
{ {
return PROFILING && return (PROFILING &&
cs->level <= cs->stack->maxdepth && cs->level <= cs->stack->maxdepth &&
InList(cs->stack->p_functions, cs->func) & (INCLUDE|MATCHED) && InList(cs->stack->p_functions, cs->func, 0) & (INCLUDE|MATCHED) &&
InList(cs->stack->processes, cs->process) & (INCLUDE|MATCHED); InList(cs->stack->processes, cs->process, 0) & (INCLUDE|MATCHED));
} }
#endif #endif
@ -1826,11 +1826,11 @@ FILE *_db_fp_(void)
BOOLEAN _db_keyword_(CODE_STATE *cs, const char *keyword, int strict) BOOLEAN _db_keyword_(CODE_STATE *cs, const char *keyword, int strict)
{ {
int match= strict ? INCLUDE : INCLUDE|MATCHED;
get_code_state_if_not_set_or_return FALSE; get_code_state_if_not_set_or_return FALSE;
strict=strict ? INCLUDE : INCLUDE|MATCHED;
return DEBUGGING && DoTrace(cs) & DO_TRACE && return (DEBUGGING && DoTrace(cs) & DO_TRACE &&
InList(cs->stack->keywords, keyword) & strict; InList(cs->stack->keywords, keyword, strict) & match);
} }
/* /*
@ -2121,7 +2121,7 @@ static FILE *OpenProfile(CODE_STATE *cs, const char *name)
static void DBUGCloseFile(CODE_STATE *cs, FILE *fp) static void DBUGCloseFile(CODE_STATE *cs, FILE *fp)
{ {
if (fp != stderr && fp != stdout && fclose(fp) == EOF) if (fp != NULL && fp != stderr && fp != stdout && fclose(fp) == EOF)
{ {
if (!cs->locked) if (!cs->locked)
pthread_mutex_lock(&THR_LOCK_dbug); pthread_mutex_lock(&THR_LOCK_dbug);

View file

@ -1,6 +1,5 @@
#!/usr/bin/perl #!/usr/bin/perl
die <<EEE unless @ARGV; die <<EEE unless @ARGV;
Usage: $0 func1 [func2 [ ...] ] Usage: $0 func1 [func2 [ ...] ]
@ -11,16 +10,16 @@ DBUG_ENTER() and DBUG_POP(); right before DBUG_RETURN in every such a function.
EEE EEE
$re=join('|', @ARGV); $re=join('|', @ARGV);
$skip='';
while(<STDIN>) { while(<STDIN>) {
print unless $skip; ($thd) = /^(T@\d+)/;
print unless $skip{$thd};
next unless /^(?:.*: )*((?:\| )*)([<>])($re)\n/o; next unless /^(?:.*: )*((?:\| )*)([<>])($re)\n/o;
if ($2 eq '>') { if ($2 eq '>') {
$skip=$1.$3 unless $skip; $skip{$thd}=$1.$3 unless $skip{$thd};
next; next;
} }
next if $skip ne $1.$3; next if $skip{$thd} ne $1.$3;
$skip=''; delete $skip{$thd};
print; print;
} }

View file

@ -15,8 +15,10 @@
INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \ INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
-I$(top_srcdir)/sql -I$(top_srcdir)/sql
LDADD = @CLIENT_EXTRA_LDFLAGS@ ../mysys/libmysys.a \ LDADD = @CLIENT_EXTRA_LDFLAGS@ \
../dbug/libdbug.a ../strings/libmystrings.a \ $(top_builddir)/mysys/libmysys.a \
$(top_builddir)/strings/libmystrings.a \
$(top_builddir)/dbug/libdbug.a \
$(ZLIB_LIBS) $(ZLIB_LIBS)
BUILT_SOURCES= $(top_builddir)/include/mysqld_error.h \ BUILT_SOURCES= $(top_builddir)/include/mysqld_error.h \
$(top_builddir)/include/sql_state.h \ $(top_builddir)/include/sql_state.h \

View file

@ -1085,7 +1085,7 @@ static int convert_file(REPLACE *rep, char * name)
my_fclose(in,MYF(0)); my_fclose(out,MYF(0)); my_fclose(in,MYF(0)); my_fclose(out,MYF(0));
if (updated && ! error) if (updated && ! error)
my_redel(org_name,tempname,MYF(MY_WME | MY_LINK_WARNING)); my_redel(org_name, tempname, 0, MYF(MY_WME | MY_LINK_WARNING));
else else
my_delete(tempname,MYF(MY_WME)); my_delete(tempname,MYF(MY_WME));
if (!silent && ! error) if (!silent && ! error)

View file

@ -26,7 +26,8 @@ pkginclude_HEADERS = $(HEADERS_ABI) my_dbug.h m_string.h my_sys.h \
decimal.h errmsg.h my_global.h my_valgrind.h my_net.h \ decimal.h errmsg.h my_global.h my_valgrind.h my_net.h \
my_getopt.h sslopt-longopts.h my_dir.h \ my_getopt.h sslopt-longopts.h my_dir.h \
sslopt-vars.h sslopt-case.h sql_common.h keycache.h \ sslopt-vars.h sslopt-case.h sql_common.h keycache.h \
m_ctype.h my_attribute.h $(HEADERS_GEN_CONFIGURE) \ m_ctype.h my_attribute.h my_compiler.h \
$(HEADERS_GEN_CONFIGURE) \
$(HEADERS_GEN_MAKE) $(HEADERS_GEN_MAKE)
noinst_HEADERS = config-win.h config-netware.h lf.h my_bit.h \ noinst_HEADERS = config-win.h config-netware.h lf.h my_bit.h \
@ -40,7 +41,7 @@ noinst_HEADERS = config-win.h config-netware.h lf.h my_bit.h \
my_vle.h my_user.h my_atomic.h atomic/nolock.h \ my_vle.h my_user.h my_atomic.h atomic/nolock.h \
atomic/rwlock.h atomic/x86-gcc.h atomic/generic-msvc.h \ atomic/rwlock.h atomic/x86-gcc.h atomic/generic-msvc.h \
atomic/gcc_builtins.h my_libwrap.h my_stacktrace.h \ atomic/gcc_builtins.h my_libwrap.h my_stacktrace.h \
wqueue.h waiting_threads.h my_compiler.h wqueue.h waiting_threads.h
EXTRA_DIST = mysql.h.pp mysql/plugin.h.pp EXTRA_DIST = mysql.h.pp mysql/plugin.h.pp

View file

@ -430,7 +430,8 @@ int maria_repair_by_sort(HA_CHECK *param, MARIA_HA *info,
int maria_repair_parallel(HA_CHECK *param, register MARIA_HA *info, int maria_repair_parallel(HA_CHECK *param, register MARIA_HA *info,
const char *name, my_bool rep_quick); const char *name, my_bool rep_quick);
int maria_change_to_newfile(const char *filename, const char *old_ext, int maria_change_to_newfile(const char *filename, const char *old_ext,
const char *new_ext, myf myflags); const char *new_ext, time_t backup_time,
myf myflags);
void maria_lock_memory(HA_CHECK *param); void maria_lock_memory(HA_CHECK *param);
int maria_update_state_info(HA_CHECK *param, MARIA_HA *info, uint update); int maria_update_state_info(HA_CHECK *param, MARIA_HA *info, uint update);
void maria_update_key_parts(MARIA_KEYDEF *keyinfo, double *rec_per_key_part, void maria_update_key_parts(MARIA_KEYDEF *keyinfo, double *rec_per_key_part,

View file

@ -50,6 +50,7 @@
#define HA_OPEN_COPY 256 /* Open copy (for repair) */ #define HA_OPEN_COPY 256 /* Open copy (for repair) */
/* Internal temp table, used for temporary results */ /* Internal temp table, used for temporary results */
#define HA_OPEN_INTERNAL_TABLE 512 #define HA_OPEN_INTERNAL_TABLE 512
#define HA_OPEN_MERGE_TABLE 1024
/* The following is parameter to ha_rkey() how to use key */ /* The following is parameter to ha_rkey() how to use key */
@ -196,6 +197,7 @@ enum ha_extra_function {
*/ */
HA_EXTRA_ATTACH_CHILDREN, HA_EXTRA_ATTACH_CHILDREN,
HA_EXTRA_DETACH_CHILDREN, HA_EXTRA_DETACH_CHILDREN,
HA_EXTRA_DETACH_CHILD,
/* Inform handler we will force a close as part of flush */ /* Inform handler we will force a close as part of flush */
HA_EXTRA_PREPARE_FOR_FORCED_CLOSE HA_EXTRA_PREPARE_FOR_FORCED_CLOSE
}; };

View file

@ -25,8 +25,6 @@ typedef uint32 my_bitmap_map;
typedef struct st_bitmap typedef struct st_bitmap
{ {
my_bitmap_map *bitmap; my_bitmap_map *bitmap;
uint n_bits; /* number of bits occupied by the above */
my_bitmap_map last_word_mask;
my_bitmap_map *last_word_ptr; my_bitmap_map *last_word_ptr;
/* /*
mutex will be acquired for the duration of each bitmap operation if mutex will be acquired for the duration of each bitmap operation if
@ -36,6 +34,8 @@ typedef struct st_bitmap
#ifdef THREAD #ifdef THREAD
pthread_mutex_t *mutex; pthread_mutex_t *mutex;
#endif #endif
my_bitmap_map last_word_mask;
uint32 n_bits; /* number of bits occupied by the above */
} MY_BITMAP; } MY_BITMAP;
#ifdef __cplusplus #ifdef __cplusplus

View file

@ -568,44 +568,34 @@ int __void__;
#endif /* DONT_DEFINE_VOID */ #endif /* DONT_DEFINE_VOID */
/* /*
Try to suppress warning for not initialized variables. Deprecated workaround for false-positive uninitialized variables
warnings. Those should be silenced using tool-specific heuristics.
With gcc when using C, we suppress the uninitialized variable warning Enabled by default for g++ due to the bug referenced below.
without generating code. We can't do this with C++ */
#if defined(_lint) || defined(FORCE_INIT_OF_VARS) || \
(defined(__GNUC__) && defined(__cplusplus))
#define LINT_INIT(var) var= 0
#else
#define LINT_INIT(var)
#endif
/*
Suppress uninitialized variable warning without generating code.
The _cplusplus is a temporary workaround for C++ code pending a fix
for a g++ bug (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34772). for a g++ bug (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34772).
*/ */
#if defined(_lint) || defined(FORCE_INIT_OF_VARS) || \
#if defined(FORCE_INIT_OF_VARS) defined(__cplusplus) || !defined(__GNUC__)
#define LINT_INIT(var) var= 0
#if defined(__cplusplus) || !defined(__GNUC__)
#define UNINIT_VAR(x) x= 0 #define UNINIT_VAR(x) x= 0
#else #else
/* GCC specific self-initialization which inhibits the warning. */ /* GCC specific self-initialization which inhibits the warning. */
#define UNINIT_VAR(x) x= x #define UNINIT_VAR(x) x= x
#endif #endif
#else /* !FORCE_INIT_OF_VARS */
#define LINT_INIT(var)
#if !defined(__cplusplus) && !defined(__GNUC__)
/* GCC specific self-initialization which inhibits the warning. */
#define UNINIT_VAR(x) x= x
#else
#define UNINIT_VAR(x) x
#endif
#endif /* FORCE_INIT_OF_VARS */
#include <my_valgrind.h> #include <my_valgrind.h>
/*
The following is to force some unitialized variables to 0 if we are
running valgrind. This is needed when the compiler may access the variable
even if the value of it is never used.
*/
#if defined(HAVE_valgrind)
#define VALGRIND_OR_LINT_INIT(var) var=0
#else
#define VALGRIND_OR_LINT_INIT(var) LINT_INIT(var)
#endif
/* Define some useful general macros */ /* Define some useful general macros */
#if !defined(max) #if !defined(max)
#define max(a, b) ((a) > (b) ? (a) : (b)) #define max(a, b) ((a) > (b) ? (a) : (b))
@ -621,7 +611,7 @@ typedef unsigned short ushort;
#define CMP_NUM(a,b) (((a) < (b)) ? -1 : ((a) == (b)) ? 0 : 1) #define CMP_NUM(a,b) (((a) < (b)) ? -1 : ((a) == (b)) ? 0 : 1)
#define sgn(a) (((a) < 0) ? -1 : ((a) > 0) ? 1 : 0) #define sgn(a) (((a) < 0) ? -1 : ((a) > 0) ? 1 : 0)
#define swap_variables(t, a, b) { t swap_dummy; swap_dummy= a; a= b; b= swap_dummy; } #define swap_variables(t, a, b) { t dummy; dummy= a; a= b; b= dummy; }
#define test(a) ((a) ? 1 : 0) #define test(a) ((a) ? 1 : 0)
#define set_if_bigger(a,b) do { if ((a) < (b)) (a)=(b); } while(0) #define set_if_bigger(a,b) do { if ((a) < (b)) (a)=(b); } while(0)
#define set_if_smaller(a,b) do { if ((a) > (b)) (a)=(b); } while(0) #define set_if_smaller(a,b) do { if ((a) > (b)) (a)=(b); } while(0)

View file

@ -135,6 +135,9 @@ extern int NEAR my_errno; /* Last error in mysys */
#define GETDATE_GMT 8 #define GETDATE_GMT 8
#define GETDATE_FIXEDLENGTH 16 #define GETDATE_FIXEDLENGTH 16
/* Extra length needed for filename if one calls my_create_backup_name */
#define MY_BACKUP_NAME_EXTRA_LENGTH 17
/* defines when allocating data */ /* defines when allocating data */
#ifdef SAFEMALLOC #ifdef SAFEMALLOC
#define my_malloc(SZ,FLAG) _mymalloc((SZ), __FILE__, __LINE__, FLAG ) #define my_malloc(SZ,FLAG) _mymalloc((SZ), __FILE__, __LINE__, FLAG )
@ -685,7 +688,10 @@ extern int my_message_no_curses(uint my_err, const char *str,myf MyFlags);
extern int my_message_curses(uint my_err, const char *str,myf MyFlags); extern int my_message_curses(uint my_err, const char *str,myf MyFlags);
extern my_bool my_init(void); extern my_bool my_init(void);
extern void my_end(int infoflag); extern void my_end(int infoflag);
extern int my_redel(const char *from, const char *to, int MyFlags); extern int my_redel(const char *from, const char *to, time_t backup_time_stamp,
myf MyFlags);
void my_create_backup_name(char *to, const char *from,
time_t backup_time_stamp);
extern int my_copystat(const char *from, const char *to, int MyFlags); extern int my_copystat(const char *from, const char *to, int MyFlags);
extern char * my_filename(File fd); extern char * my_filename(File fd);

View file

@ -295,6 +295,8 @@ extern int mi_is_changed(struct st_myisam_info *info);
extern int mi_delete_all_rows(struct st_myisam_info *info); extern int mi_delete_all_rows(struct st_myisam_info *info);
extern ulong _mi_calc_blob_length(uint length , const uchar *pos); extern ulong _mi_calc_blob_length(uint length , const uchar *pos);
extern uint mi_get_pointer_length(ulonglong file_length, uint def); extern uint mi_get_pointer_length(ulonglong file_length, uint def);
extern int mi_make_backup_of_index(struct st_myisam_info *info,
time_t backup_time, myf flags);
#define MEMMAP_EXTRA_MARGIN 7 /* Write this as a suffix for mmap file */ #define MEMMAP_EXTRA_MARGIN 7 /* Write this as a suffix for mmap file */
/* this is used to pass to mysql_myisamchk_table */ /* this is used to pass to mysql_myisamchk_table */
@ -390,7 +392,8 @@ int mi_repair_by_sort(HA_CHECK *param, register MI_INFO *info,
int mi_repair_parallel(HA_CHECK *param, register MI_INFO *info, int mi_repair_parallel(HA_CHECK *param, register MI_INFO *info,
const char * name, int rep_quick); const char * name, int rep_quick);
int change_to_newfile(const char * filename, const char * old_ext, int change_to_newfile(const char * filename, const char * old_ext,
const char * new_ext, uint raid_chunks, const char * new_ext, time_t backup_time,
uint raid_chunks,
myf myflags); myf myflags);
int lock_file(HA_CHECK *param, File file, my_off_t start, int lock_type, int lock_file(HA_CHECK *param, File file, my_off_t start, int lock_type,
const char *filetype, const char *filename); const char *filetype, const char *filename);

View file

@ -74,7 +74,7 @@
#define TT_USEFRM 1 #define TT_USEFRM 1
#define TT_FOR_UPGRADE 2 #define TT_FOR_UPGRADE 2
#define O_NEW_INDEX 1 /* Bits set in out_flag */ /* Bits set in out_flag */
#define O_NEW_DATA 2 #define O_NEW_DATA 2
#define O_DATA_LOST 4 #define O_DATA_LOST 4
@ -141,6 +141,7 @@ typedef struct st_handler_check_param
ulonglong use_buffers; /* Used as param to getopt() */ ulonglong use_buffers; /* Used as param to getopt() */
size_t read_buffer_length, write_buffer_length; size_t read_buffer_length, write_buffer_length;
size_t sort_buffer_length, sort_key_blocks; size_t sort_buffer_length, sort_key_blocks;
time_t backup_time; /* To sign backup files */
ulong rec_per_key_part[HA_MAX_KEY_SEG * HA_MAX_POSSIBLE_KEY]; ulong rec_per_key_part[HA_MAX_KEY_SEG * HA_MAX_POSSIBLE_KEY];
double new_rec_per_key_part[HA_MAX_KEY_SEG * HA_MAX_POSSIBLE_KEY]; double new_rec_per_key_part[HA_MAX_KEY_SEG * HA_MAX_POSSIBLE_KEY];
uint out_flag, warning_printed, error_printed, verbose; uint out_flag, warning_printed, error_printed, verbose;

View file

@ -224,7 +224,8 @@ struct st_mysql_options {
enum mysql_status enum mysql_status
{ {
MYSQL_STATUS_READY,MYSQL_STATUS_GET_RESULT,MYSQL_STATUS_USE_RESULT MYSQL_STATUS_READY, MYSQL_STATUS_GET_RESULT, MYSQL_STATUS_USE_RESULT,
MYSQL_STATUS_STATEMENT_GET_RESULT
}; };
enum mysql_protocol_type enum mysql_protocol_type

View file

@ -292,7 +292,8 @@ struct st_mysql_options {
}; };
enum mysql_status enum mysql_status
{ {
MYSQL_STATUS_READY,MYSQL_STATUS_GET_RESULT,MYSQL_STATUS_USE_RESULT MYSQL_STATUS_READY, MYSQL_STATUS_GET_RESULT, MYSQL_STATUS_USE_RESULT,
MYSQL_STATUS_STATEMENT_GET_RESULT
}; };
enum mysql_protocol_type enum mysql_protocol_type
{ {

View file

@ -11,7 +11,8 @@
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
/* /*
This is the header file for code which implements the Secure This is the header file for code which implements the Secure
@ -25,6 +26,38 @@
Please read the file sha1.c for more information. Please read the file sha1.c for more information.
Modified 2002 by Peter Zaitsev to better follow MySQL standards Modified 2002 by Peter Zaitsev to better follow MySQL standards
Original Source from: http://www.faqs.org/rfcs/rfc3174.html
Copyright (C) The Internet Society (2001). All Rights Reserved.
This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be
followed, or as required to translate it into languages other than
English.
The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Acknowledgement
Funding for the RFC Editor function is currently provided by the
Internet Society.
*/ */

View file

@ -82,6 +82,12 @@ enum enum_thr_lock_result { THR_LOCK_SUCCESS= 0, THR_LOCK_ABORTED= 1,
THR_LOCK_WAIT_TIMEOUT= 2, THR_LOCK_DEADLOCK= 3 }; THR_LOCK_WAIT_TIMEOUT= 2, THR_LOCK_DEADLOCK= 3 };
/* Priority for locks */
#define THR_LOCK_LATE_PRIV 1 /* For locks to be merged with org lock */
#define THR_LOCK_MERGE_PRIV 2 /* For merge tables */
#define THR_UNLOCK_UPDATE_STATUS 1
extern ulong max_write_lock_count; extern ulong max_write_lock_count;
extern ulong table_lock_wait_timeout; extern ulong table_lock_wait_timeout;
extern my_bool thr_lock_inited; extern my_bool thr_lock_inited;
@ -116,9 +122,10 @@ typedef struct st_thr_lock_data {
struct st_thr_lock_data *next,**prev; struct st_thr_lock_data *next,**prev;
struct st_thr_lock *lock; struct st_thr_lock *lock;
pthread_cond_t *cond; pthread_cond_t *cond;
enum thr_lock_type type;
void *status_param; /* Param to status functions */ void *status_param; /* Param to status functions */
void *debug_print_param; void *debug_print_param;
enum thr_lock_type type;
uint priority;
} THR_LOCK_DATA; } THR_LOCK_DATA;
struct st_lock_list { struct st_lock_list {
@ -139,7 +146,9 @@ typedef struct st_thr_lock {
void (*copy_status)(void*,void*); void (*copy_status)(void*,void*);
void (*update_status)(void*); /* Before release of write */ void (*update_status)(void*); /* Before release of write */
void (*restore_status)(void*); /* Before release of read */ void (*restore_status)(void*); /* Before release of read */
my_bool (*start_trans)(void*); /* When all locks are taken */
my_bool (*check_status)(void *); my_bool (*check_status)(void *);
void (*fix_status)(void *, void *);/* For thr_merge_locks() */
my_bool allow_multiple_concurrent_insert; my_bool allow_multiple_concurrent_insert;
} THR_LOCK; } THR_LOCK;
@ -154,13 +163,11 @@ void thr_lock_init(THR_LOCK *lock);
void thr_lock_delete(THR_LOCK *lock); void thr_lock_delete(THR_LOCK *lock);
void thr_lock_data_init(THR_LOCK *lock,THR_LOCK_DATA *data, void thr_lock_data_init(THR_LOCK *lock,THR_LOCK_DATA *data,
void *status_param); void *status_param);
enum enum_thr_lock_result thr_lock(THR_LOCK_DATA *data, void thr_unlock(THR_LOCK_DATA *data, uint unlock_flags);
THR_LOCK_OWNER *owner,
enum thr_lock_type lock_type);
void thr_unlock(THR_LOCK_DATA *data);
enum enum_thr_lock_result thr_multi_lock(THR_LOCK_DATA **data, enum enum_thr_lock_result thr_multi_lock(THR_LOCK_DATA **data,
uint count, THR_LOCK_OWNER *owner); uint count, THR_LOCK_OWNER *owner);
void thr_multi_unlock(THR_LOCK_DATA **data,uint count); void thr_multi_unlock(THR_LOCK_DATA **data,uint count, uint unlock_flags);
void thr_merge_locks(THR_LOCK_DATA **data, uint org_count, uint new_count);
void thr_abort_locks(THR_LOCK *lock, my_bool upgrade_lock); void thr_abort_locks(THR_LOCK *lock, my_bool upgrade_lock);
my_bool thr_abort_locks_for_thread(THR_LOCK *lock, my_thread_id thread); my_bool thr_abort_locks_for_thread(THR_LOCK *lock, my_thread_id thread);
void thr_print_locks(void); /* For debugging */ void thr_print_locks(void); /* For debugging */

View file

@ -2516,6 +2516,8 @@ static my_bool execute(MYSQL_STMT *stmt, char *packet, ulong length)
set_stmt_errmsg(stmt, net); set_stmt_errmsg(stmt, net);
DBUG_RETURN(1); DBUG_RETURN(1);
} }
else if (mysql->status == MYSQL_STATUS_GET_RESULT)
stmt->mysql->status= MYSQL_STATUS_STATEMENT_GET_RESULT;
DBUG_RETURN(0); DBUG_RETURN(0);
} }
@ -2654,7 +2656,7 @@ static int stmt_read_row_unbuffered(MYSQL_STMT *stmt, unsigned char **row)
set_stmt_error(stmt, CR_SERVER_LOST, unknown_sqlstate, NULL); set_stmt_error(stmt, CR_SERVER_LOST, unknown_sqlstate, NULL);
return 1; return 1;
} }
if (mysql->status != MYSQL_STATUS_GET_RESULT) if (mysql->status != MYSQL_STATUS_STATEMENT_GET_RESULT)
{ {
set_stmt_error(stmt, stmt->unbuffered_fetch_cancelled ? set_stmt_error(stmt, stmt->unbuffered_fetch_cancelled ?
CR_FETCH_CANCELED : CR_COMMANDS_OUT_OF_SYNC, CR_FETCH_CANCELED : CR_COMMANDS_OUT_OF_SYNC,
@ -4860,7 +4862,7 @@ int STDCALL mysql_stmt_store_result(MYSQL_STMT *stmt)
DBUG_RETURN(1); DBUG_RETURN(1);
} }
} }
else if (mysql->status != MYSQL_STATUS_GET_RESULT) else if (mysql->status != MYSQL_STATUS_STATEMENT_GET_RESULT)
{ {
set_stmt_error(stmt, CR_COMMANDS_OUT_OF_SYNC, unknown_sqlstate, NULL); set_stmt_error(stmt, CR_COMMANDS_OUT_OF_SYNC, unknown_sqlstate, NULL);
DBUG_RETURN(1); DBUG_RETURN(1);

View file

@ -34,10 +34,10 @@ INCLUDES= -I$(top_builddir)/include -I$(top_srcdir)/include \
-I$(top_srcdir)/sql/examples \ -I$(top_srcdir)/sql/examples \
-I$(top_srcdir)/regex \ -I$(top_srcdir)/regex \
$(openssl_includes) @ZLIB_INCLUDES@ \ $(openssl_includes) @ZLIB_INCLUDES@ \
@condition_dependent_plugin_includes@ @condition_dependent_plugin_includes@ \
@ndbcluster_includes@
noinst_LIBRARIES = libmysqld_int.a pkglib_LTLIBRARIES = libmysqld.la
pkglib_LIBRARIES = libmysqld.a
SUBDIRS = . examples SUBDIRS = . examples
libmysqld_sources= libmysqld.c lib_sql.cc emb_qcache.cc libmysqld_sources= libmysqld.c lib_sql.cc emb_qcache.cc
libmysqlsources = errmsg.c get_password.c libmysql.c client.c pack.c \ libmysqlsources = errmsg.c get_password.c libmysql.c client.c pack.c \
@ -79,104 +79,28 @@ sqlsources = derror.cc field.cc field_conv.cc strfunc.cc filesort.cc \
rpl_injector.cc my_user.c partition_info.cc \ rpl_injector.cc my_user.c partition_info.cc \
sql_servers.cc event_parse_data.cc opt_table_elimination.cc sql_servers.cc event_parse_data.cc opt_table_elimination.cc
libmysqld_int_a_SOURCES= $(libmysqld_sources)
nodist_libmysqld_int_a_SOURCES= $(libmysqlsources) $(sqlsources)
libmysqld_a_SOURCES=
sqlstoragesources = $(EXTRA_libmysqld_a_SOURCES)
storagesources = @condition_dependent_plugin_modules@
storageobjects = @condition_dependent_plugin_objects@
storagesourceslinks = @condition_dependent_plugin_links@
# automake misses these # automake misses these
sql_yacc.cc sql_yacc.h: $(top_srcdir)/sql/sql_yacc.yy sql_yacc.cc sql_yacc.h: $(top_srcdir)/sql/sql_yacc.yy
# The following libraries should be included in libmysqld.a # The following libraries should be included in libmysqld.a
INC_LIB= $(top_builddir)/regex/libregex.a \ INC_LIB= $(top_builddir)/regex/libregex.la \
$(top_builddir)/mysys/libmysys.a \ $(top_builddir)/mysys/libmysys.la \
$(top_builddir)/strings/libmystrings.a \ $(top_builddir)/strings/libmystrings.la \
$(top_builddir)/dbug/libdbug.a \ $(top_builddir)/dbug/libdbug.la \
$(top_builddir)/vio/libvio.a \ $(top_builddir)/vio/libvio.la \
@NDB_SCI_LIBS@ \ @ndbcluster_libs@ @NDB_SCI_LIBS@ \
@mysql_plugin_libs@ \ @mysql_embedded_plugin_libs@ \
$(libevent_inc_libs) \ $(libevent_inc_libs) \
$(yassl_inc_libs) $(yassl_inc_libs)
if HAVE_YASSL if HAVE_YASSL
yassl_inc_libs= $(top_builddir)/extra/yassl/src/.libs/libyassl.a \ yassl_inc_libs= $(top_builddir)/extra/yassl/src/libyassl.la \
$(top_builddir)/extra/yassl/taocrypt/src/.libs/libtaocrypt.a $(top_builddir)/extra/yassl/taocrypt/src/libtaocrypt.la
endif endif
# Storage engine specific compilation options libmysqld_la_SOURCES= $(libmysqld_sources)
ha_ndbcluster.o:ha_ndbcluster.cc nodist_libmysqld_la_SOURCES= $(libmysqlsources) $(sqlsources)
$(CXXCOMPILE) @ndbcluster_includes@ $(LM_CFLAGS) -c $< libmysqld_la_LIBADD = $(INC_LIB)
ha_ndbcluster_cond.o:ha_ndbcluster_cond.cc
$(CXXCOMPILE) @ndbcluster_includes@ $(LM_CFLAGS) -c $<
ha_ndbcluster_binlog.o: ha_ndbcluster_binlog.cc
$(CXXCOMPILE) @ndbcluster_includes@ $(LM_CFLAGS) -c $<
# Until we can remove dependency on ha_ndbcluster.h
handler.o: handler.cc
$(CXXCOMPILE) @ndbcluster_includes@ $(LM_CFLAGS) -c $<
# We need rules to compile these as no good way
# found to append fileslists that collected by configure
# to the sources list
ha_federatedx.o:ha_federatedx.cc
$(CXXCOMPILE) $(LM_CFLAGS) -c $<
ha_heap.o:ha_heap.cc
$(CXXCOMPILE) $(LM_CFLAGS) -c $<
ha_innodb.o:ha_innodb.cc
$(CXXCOMPILE) $(LM_CFLAGS) -c $<
ha_myisam.o:ha_myisam.cc
$(CXXCOMPILE) $(LM_CFLAGS) -c $<
ha_myisammrg.o:ha_myisammrg.cc
$(CXXCOMPILE) $(LM_CFLAGS) -c $<
#
# To make it easy for the end user to use the embedded library we
# generate a total libmysqld.a from all library files,
# note - InnoDB libraries have circular dependencies, so in INC_LIB
# few libraries are present two times. Metrowerks linker doesn't like
# it at all. Traditional ar has no problems with it, but still there's no
# need to add the same file twice to the library, so 'sort -u' save us
# some time and spares unnecessary work.
libmysqld.a: libmysqld_int.a $(INC_LIB) $(libmysqld_a_DEPENDENCIES) $(storageobjects)
if DARWIN_MWCC
mwld -lib -o $@ libmysqld_int.a `echo $(INC_LIB) | sort -u` $(storageobjects)
else
-rm -f libmysqld.a
if test "$(host_os)" = "netware" ; \
then \
$(libmysqld_a_AR) libmysqld.a $(INC_LIB) libmysqld_int.a $(storageobjects); \
else \
current_dir=`pwd`; \
rm -rf tmp; mkdir tmp; \
(for arc in $(INC_LIB) ./libmysqld_int.a; do \
arpath=`echo $$arc|sed 's|[^/]*$$||'|sed 's|\.libs/$$||'`; \
artmp=`echo $$arc|sed 's|^.*/|tmp/lib-|'`; \
for F in `$(AR) t $$arc | grep -v SYMDEF`; do \
if test -e "$$arpath/$$F" ; then echo "$$arpath/$$F"; else \
mkdir $$artmp; cd $$artmp > /dev/null; \
$(AR) x ../../$$arc; \
cd $$current_dir > /dev/null; \
ls $$artmp/* | grep -v SYMDEF; \
continue 2; fi; done; \
done; echo $(libmysqld_a_DEPENDENCIES) ) | sort -u | xargs $(AR) cq libmysqld.a ; \
$(AR) r libmysqld.a $(storageobjects); \
$(RANLIB) libmysqld.a ; \
rm -rf tmp; \
fi
endif
## XXX: any time the client interface changes, we'll need to bump ## XXX: any time the client interface changes, we'll need to bump
## the version info for libmysqld; however, it's possible for the ## the version info for libmysqld; however, it's possible for the
@ -184,7 +108,7 @@ endif
## libmysqlclient interface. Should we make a separate version ## libmysqlclient interface. Should we make a separate version
## string for the two? ## string for the two?
#libmysqld_la_LDFLAGS = -version-info @SHARED_LIB_VERSION@ #libmysqld_la_LDFLAGS = -version-info @SHARED_LIB_VERSION@
#CLEANFILES = $(libmysqld_la_LIBADD) libmysqld.la #CLEANFILES = libmysqld.la
BUILT_SOURCES = link_sources BUILT_SOURCES = link_sources
@ -209,20 +133,6 @@ link_sources:
@LN_CP_F@ $(top_builddir)/libmysql/$$f $$f; \ @LN_CP_F@ $(top_builddir)/libmysql/$$f $$f; \
fi ; \ fi ; \
done; \ done; \
if test -n "$(sqlstoragesources)" ; \
then \
for f in "$(sqlstoragesources)"; do \
rm -f "$$f"; \
@LN_CP_F@ `find $(srcdir)/../sql -name "$$f"` "$$f"; \
done; \
fi; \
if test -n "$(storagesources)" ; \
then \
rm -f $(storagesources); \
for f in $(storagesourceslinks); do \
@LN_CP_F@ $(top_srcdir)/$$f . ; \
done; \
fi; \
rm -f client_settings.h; \ rm -f client_settings.h; \
@LN_CP_F@ $(top_srcdir)/libmysql/client_settings.h \ @LN_CP_F@ $(top_srcdir)/libmysql/client_settings.h \
client_settings.h; \ client_settings.h; \
@ -230,5 +140,5 @@ link_sources:
clean-local: clean-local:
rm -f `echo $(sqlsources) $(libmysqlsources) $(sqlstoragesources) $(storagesources) | sed "s;\.lo;.c;g"`; \ rm -f `echo $(sqlsources) $(libmysqlsources) | sed "s;\.lo;.c;g"`; \
rm -f client_settings.h rm -f client_settings.h

View file

@ -37,12 +37,13 @@ INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include -I$(srcdir) \
-I$(top_srcdir) -I$(top_srcdir)/client -I$(top_srcdir)/regex \ -I$(top_srcdir) -I$(top_srcdir)/client -I$(top_srcdir)/regex \
$(openssl_includes) $(openssl_includes)
LIBS = @LIBS@ @WRAPLIBS@ @CLIENT_LIBS@ $(yassl_libs) LIBS = @LIBS@ @WRAPLIBS@ @CLIENT_LIBS@ $(yassl_libs)
LDADD = @CLIENT_EXTRA_LDFLAGS@ ../libmysqld.a @LIBDL@ $(CXXLDFLAGS) \ LDADD = @CLIENT_EXTRA_LDFLAGS@ \
@NDB_SCI_LIBS@ $(top_builddir)/libmysqld/libmysqld.la @LIBDL@ $(CXXLDFLAGS) \
@ndbcluster_libs@ @NDB_SCI_LIBS@
mysqltest_embedded_LINK = $(CXXLINK) mysqltest_embedded_LINK = $(CXXLINK)
nodist_mysqltest_embedded_SOURCES = mysqltest.cc nodist_mysqltest_embedded_SOURCES = mysqltest.cc
mysqltest_embedded_LDADD = $(LDADD) $(top_builddir)/regex/libregex.a \ mysqltest_embedded_LDADD = $(LDADD) $(top_builddir)/regex/libregex.la \
@MYSQLD_EXTRA_LDFLAGS@ @MYSQLD_EXTRA_LDFLAGS@
nodist_mysql_SOURCES = mysql.cc readline.cc completion_hash.cc \ nodist_mysql_SOURCES = mysql.cc readline.cc completion_hash.cc \

View file

@ -32,6 +32,16 @@ files cannot. Special options are
--timezone, --plugin-load, --result-file, --config-file-template, --timezone, --plugin-load, --result-file, --config-file-template,
--default-time-zone, --force-restart --default-time-zone, --force-restart
In particular, all --plugin-load instances on the command line (on the
combined command line, assembled from different .opt and combinations
files) are merged into one. That is, if, say, test-master.opt file contains
--plugin-load=aaa.so and suite.opt has --plugin-load=bbb.so that mysqld
will get --plugin-load=aaa.so:bbb.so. Also, empty --plugin-load options are
removed from the command line. Which means that one can safely specify
--plugin-load=$AAA_SO and if aaa.so was not built (perhaps, the plugin was
statically linked into the server), the .opt file will not result in the
invalid command line option that can cause the server to refuse to start.
========================== ==========================
A suite can have suite.pm file in the suitedir. It must declare a A suite can have suite.pm file in the suitedir. It must declare a
package that inherits from My::Suite. package that inherits from My::Suite.

View file

@ -1,5 +1,3 @@
perl mysql-test-run.pl --timer --force --comment=rpl_ndb_row --vardir=var-rpl_ndb_row --suite=rpl_ndb,ndb --mysqld=--binlog-format=row --experimental=collections/default.experimental
perl mysql-test-run.pl --timer --force --parallel=auto --comment=n_mix --vardir=var-n_mix --mysqld=--binlog-format=mixed --experimental=collections/default.experimental perl mysql-test-run.pl --timer --force --parallel=auto --comment=n_mix --vardir=var-n_mix --mysqld=--binlog-format=mixed --experimental=collections/default.experimental
perl mysql-test-run.pl --timer --force --parallel=auto --comment=ps_row --vardir=var-ps_row --ps-protocol --mysqld=--binlog-format=row --experimental=collections/default.experimental perl mysql-test-run.pl --timer --force --parallel=auto --comment=ps_row --vardir=var-ps_row --ps-protocol --mysqld=--binlog-format=row --experimental=collections/default.experimental
perl mysql-test-run.pl --timer --force --parallel=auto --comment=embedded --vardir=var-emebbed --embedded --experimental=collections/default.experimental perl mysql-test-run.pl --timer --force --parallel=auto --comment=embedded --vardir=var-emebbed --embedded --experimental=collections/default.experimental

View file

@ -12,9 +12,10 @@ funcs_1.ndb* # joro : NDB tests marked as experiment
funcs_2.ndb_charset # joro : NDB tests marked as experimental as agreed with bochklin funcs_2.ndb_charset # joro : NDB tests marked as experimental as agreed with bochklin
innodb_plugin.* @solaris # Bug#56063 InnoDB Plugin mysql-tests fail on Solaris
main.ctype_gbk_binlog @solaris # Bug#46010: main.ctype_gbk_binlog fails sporadically : Table 't2' already exists main.ctype_gbk_binlog @solaris # Bug#46010: main.ctype_gbk_binlog fails sporadically : Table 't2' already exists
main.func_str @solaris # joro: Bug#40928 main.func_str @solaris # joro: Bug#40928
main.plugin_load @solaris # Bug#42144
main.sp @solaris # joro : Bug#54138 main.sp @solaris # joro : Bug#54138
main.outfile_loaddata @solaris # joro : Bug #46895 main.outfile_loaddata @solaris # joro : Bug #46895
@ -44,3 +45,6 @@ parts.partition_syntax_ndb # joro : NDB tests marked as experiment
parts.partition_value_ndb # joro : NDB tests marked as experimental as agreed with bochklin parts.partition_value_ndb # joro : NDB tests marked as experimental as agreed with bochklin
main.mysqlhotcopy_myisam # horst: due to bug#54129 main.mysqlhotcopy_myisam # horst: due to bug#54129
main.mysqlhotcopy_archive # horst: due to bug#54129 main.mysqlhotcopy_archive # horst: due to bug#54129
main.gis-rtree # svoj: due to BUG#38965
main.type_float # svoj: due to BUG#38965
main.type_newdecimal # svoj: due to BUG#38965

View file

@ -1,5 +1,5 @@
# Requires statement logging # Requires statement logging
-- source include/have_binlog_format_mixed_or_statement.inc -- source include/have_binlog_format_statement.inc
# See if replication of a "LOAD DATA in an autoincrement column" # See if replication of a "LOAD DATA in an autoincrement column"
# Honours autoincrement values # Honours autoincrement values

View file

@ -0,0 +1,235 @@
--echo
--echo
connection master;
if ($is_temporary)
{
--let $_temporary=TEMPORARY
}
CREATE TABLE t2(c1 INT, c2 char(10));
INSERT INTO t2 VALUES(1, 'abc'), (2, 'abc');
--echo
--echo # The original query should be binlogged if the table does not exist.
--echo # ------------------------------------------------------------------
--echo
let binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
eval CREATE $_temporary TABLE IF NOT EXISTS t1 (c1 INT , c2 INT, c3 char(10), c4 INT KEY)
SELECT 'abc' AS c3, 1 AS c4;
source include/show_binlog_events.inc;
if (!$is_temporary)
{
let $diff_table= test.t1;
source include/rpl_diff_tables.inc;
}
--echo
--echo # The statement should be binlogged as two events. one is
--echo # 'CREATE $_temporary TABLE IF NOT EXISTS ..', another one is
--echo # 'INSERT ... SELECT'.
--echo # ------------------------------------------------------------------
--echo
let binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
eval CREATE $_temporary TABLE IF NOT EXISTS t1
SELECT 'abc', 2;
source include/show_binlog_events.inc;
if (!$is_temporary)
{
let $diff_table= test.t1;
source include/rpl_diff_tables.inc;
}
--echo
--echo # Verify if it can be binlogged with right database name when the table
--echo # is not in the default database
--echo
--disable_warnings
DROP DATABASE IF EXISTS db1;
--enable_warnings
CREATE DATABASE db1;
USE db1;
let binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
eval CREATE $_temporary TABLE IF NOT EXISTS test.t1
SELECT 'abc', 20;
source include/show_binlog_events.inc;
if (!$is_temporary)
{
let $diff_table= test.t1;
source include/rpl_diff_tables.inc;
}
USE test;
DROP DATABASE db1;
--echo
--echo # It should be binlogged as 'REPLACE ... SELECT'
--echo # if the original statement has option REPLACE
--echo
let binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
eval CREATE $_temporary TABLE IF NOT EXISTS t1
REPLACE SELECT '123', 2;
source include/show_binlog_events.inc;
if (!$is_temporary)
{
let $diff_table= test.t1;
source include/rpl_diff_tables.inc;
}
--echo
--echo # It should be binlogged as 'INSERT IGNORE... SELECT'
--echo # if the original statement has option IGNORE
--echo
let binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
eval CREATE $_temporary TABLE IF NOT EXISTS t1
IGNORE SELECT '123', 2;
source include/show_binlog_events.inc;
if (!$is_temporary)
{
let $diff_table= test.t1;
source include/rpl_diff_tables.inc;
}
--echo
--echo # Nothing should be binlogged if error happens and no any row is inserted
--echo
let binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
--error ER_DUP_ENTRY
eval CREATE $_temporary TABLE IF NOT EXISTS t1
SELECT '123', 2;
source include/show_binlog_events.inc;
if (!$is_temporary)
{
let $diff_table= test.t1;
source include/rpl_diff_tables.inc;
}
--echo
--echo # Verify it can binlog well when there are some braces('(')
--echo
let binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
eval CREATE $_temporary TABLE IF NOT EXISTS t1
(SELECT '123', 3) UNION (SELECT '123', 4);
eval CREATE $_temporary TABLE IF NOT EXISTS t1
REPLACE (SELECT 'abc', 3) UNION (SELECT 'abc', 4);
eval CREATE $_temporary TABLE IF NOT EXISTS t1
IGNORE (SELECT '123', 3) UNION (SELECT '123', 4);
source include/show_binlog_events.inc;
if (!$is_temporary)
{
let $diff_table= test.t1;
source include/rpl_diff_tables.inc;
}
if (!$is_temporary)
{
--echo
--echo # Throw a warning that table already exists and don't insert anything
--echo
CREATE VIEW t3 AS SELECT * FROM t2;
let binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
CREATE TABLE IF NOT EXISTS t3
SELECT '123', 2;
source include/show_binlog_events.inc;
DROP VIEW t3;
}
--echo
--echo # The statement can be binlogged correctly when it is in a SP/EVENT/TRIGGER
--echo
--disable_warnings
DROP PROCEDURE IF EXISTS p1;
--enable_warnings
eval CREATE PROCEDURE p1(IN a INT)
CREATE $_temporary TABLE IF NOT EXISTS t1 SELECT '123', a;
let binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
call p1(500);
call p1(600);
source include/show_binlog_events.inc;
if (!$is_temporary)
{
let $diff_table= test.t1;
source include/rpl_diff_tables.inc;
}
DROP PROCEDURE p1;
--echo
--echo # The statement can be binlogged correctly when it is in a prepared statement
--echo
eval PREPARE stm FROM "CREATE $_temporary TABLE IF NOT EXISTS t1 SELECT '123', ?";
let binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
SET @a= 700;
EXECUTE stm USING @a;
SET @a= 800;
EXECUTE stm USING @a;
source include/show_binlog_events.inc;
if (!$is_temporary)
{
let $diff_table= test.t1;
source include/rpl_diff_tables.inc;
}
--echo
--echo # The statement can be binlogged correctly when it is in a conditional comment
--echo
let binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
--echo # The whole statement in a conditional comment
eval /*!CREATE $_temporary TABLE IF NOT EXISTS t1
SELECT 'abc', 900*/;
source include/show_binlog_events.inc;
let binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
--echo
--echo # There is an long comment before SELECT
eval /*!CREATE $_temporary /*blabla*/ TABLE IF NOT EXISTS t1
SELECT 'abc', 901*/;
source include/show_binlog_events.inc;
let binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
--echo
--echo # Conditional comment starts just from SELECT
eval CREATE $_temporary TABLE IF NOT EXISTS t1
/*!SELECT 'abc',*/ 902;
source include/show_binlog_events.inc;
let binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
--echo
--echo # Only SELECT keyword is in the conditional comment
eval CREATE $_temporary TABLE IF NOT EXISTS t1
/*!SELECT*/ /*!'abc',*/ 904;
source include/show_binlog_events.inc;
let binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
--echo
--echo # Conditional comment is after SELECT keyword
eval CREATE $_temporary TABLE IF NOT EXISTS t1
SELECT /*!'abc',*/ 903;
source include/show_binlog_events.inc;
let binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
--echo
--echo # Conditional comment ends just before SELECT keyword
eval /*!CREATE $_temporary TABLE IF NOT EXISTS t1
*/SELECT 'abc', 905;
source include/show_binlog_events.inc;
if (!$is_temporary)
{
let $diff_table= test.t1;
source include/rpl_diff_tables.inc;
}
DROP TABLE t2;
eval DROP $_temporary TABLE t1;

View file

@ -9,8 +9,10 @@
--echo Cleaning up after setup_fake_relay_log.inc --echo Cleaning up after setup_fake_relay_log.inc
# Remove files. # Remove files.
--disable_warnings
remove_file $_fake_relay_log; remove_file $_fake_relay_log;
remove_file $_fake_relay_index; remove_file $_fake_relay_index;
--enable_warnings
--disable_query_log --disable_query_log
eval SET @@global.relay_log_purge= $_fake_relay_log_purge; eval SET @@global.relay_log_purge= $_fake_relay_log_purge;
--enable_query_log --enable_query_log

View file

@ -54,11 +54,12 @@
--echo Comparing tables $diff_table_1 and $diff_table_2 --echo Comparing tables $diff_table_1 and $diff_table_2
disable_query_log; disable_query_log;
disable_warnings;
--error 0,1 --error 0,1
--remove_file $MYSQLTEST_VARDIR/tmp/diff_table_1 --remove_file $MYSQLTEST_VARDIR/tmp/diff_table_1
--error 0,1 --error 0,1
--remove_file $MYSQLTEST_VARDIR/tmp/diff_table_2 --remove_file $MYSQLTEST_VARDIR/tmp/diff_table_2
enable_warnings;
let $_diff_table=$diff_table_2; let $_diff_table=$diff_table_2;
let $_diff_i=2; let $_diff_i=2;

View file

@ -126,3 +126,19 @@ WHERE
drop table t1; drop table t1;
--echo #
--echo # Bug#50402 Optimizer producing wrong results when using Index Merge on InnoDB
--echo #
CREATE TABLE t1 (f1 INT, PRIMARY KEY (f1));
INSERT INTO t1 VALUES (2);
CREATE TABLE t2 (f1 INT, f2 INT, f3 char(1),
PRIMARY KEY (f1), KEY (f2), KEY (f3) );
INSERT INTO t2 VALUES (1, 1, 'h'), (2, 3, 'h'), (3, 2, ''), (4, 2, '');
SELECT t1.f1 FROM t1
WHERE (SELECT COUNT(*) FROM t2 WHERE t2.f3 = 'h' AND t2.f2 = t1.f1) = 0 AND t1.f1 = 2;
EXPLAIN SELECT t1.f1 FROM t1
WHERE (SELECT COUNT(*) FROM t2 WHERE t2.f3 = 'h' AND t2.f2 = t1.f1) = 0 AND t1.f1 = 2;
DROP TABLE t1,t2;

View file

@ -24,6 +24,7 @@ EOF
--source include/mysqladmin_shutdown.inc --source include/mysqladmin_shutdown.inc
--disable_warnings
if (!$mel_keep_control_file) if (!$mel_keep_control_file)
{ {
--error 0,1 --error 0,1
@ -73,6 +74,7 @@ remove_file $MYSQLD_DATADIR/$MARIA_LOG/maria_log.00000020;
-- error 0,1 -- error 0,1
remove_file $MYSQLD_DATADIR/maria_recovery.trace; remove_file $MYSQLD_DATADIR/maria_recovery.trace;
--enable_warnings
append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect; append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect;
restart-maria_empty_logs.inc restart-maria_empty_logs.inc

View file

@ -26,12 +26,16 @@ if ($mms_copy)
if ($mms_reverse_copy) if ($mms_reverse_copy)
{ {
# do not call this without flushing target table first! # do not call this without flushing target table first!
--disable_warnings
--echo * copied $mms_tname$mms_table_to_use back for $mms_purpose --echo * copied $mms_tname$mms_table_to_use back for $mms_purpose
-- error 0,1 -- error 0,1
remove_file $MYSQLD_DATADIR/mysqltest/$mms_tname$mms_table_to_use.MAD; remove_file $MYSQLD_DATADIR/mysqltest/$mms_tname$mms_table_to_use.MAD;
--enable_warnings
copy_file $MYSQLD_DATADIR/mysqltest_for_$mms_purpose/$mms_tname$mms_table_to_use.MAD $MYSQLD_DATADIR/mysqltest/$mms_tname$mms_table_to_use.MAD; copy_file $MYSQLD_DATADIR/mysqltest_for_$mms_purpose/$mms_tname$mms_table_to_use.MAD $MYSQLD_DATADIR/mysqltest/$mms_tname$mms_table_to_use.MAD;
--disable_warnings
-- error 0,1 -- error 0,1
remove_file $MYSQLD_DATADIR/mysqltest/$mms_tname$mms_table_to_use.MAI; remove_file $MYSQLD_DATADIR/mysqltest/$mms_tname$mms_table_to_use.MAI;
--enable_warnings
copy_file $MYSQLD_DATADIR/mysqltest_for_$mms_purpose/$mms_tname$mms_table_to_use.MAI $MYSQLD_DATADIR/mysqltest/$mms_tname$mms_table_to_use.MAI; copy_file $MYSQLD_DATADIR/mysqltest_for_$mms_purpose/$mms_tname$mms_table_to_use.MAI $MYSQLD_DATADIR/mysqltest/$mms_tname$mms_table_to_use.MAI;
} }

View file

@ -31,8 +31,10 @@ while ($mms_table_to_use)
let $mms_copy=0; let $mms_copy=0;
let $MYSQLD_DATADIR= `SELECT @@datadir`; let $MYSQLD_DATADIR= `SELECT @@datadir`;
--disable_warnings
-- error 0,1 -- error 0,1
remove_file $MYSQLTEST_VARDIR/tmp/mms_for_$mms_purpose.maria_log_control; remove_file $MYSQLTEST_VARDIR/tmp/mms_for_$mms_purpose.maria_log_control;
--enable_warnings
copy_file $MYSQLD_DATADIR/$MARIA_LOG/maria_log_control $MYSQLTEST_VARDIR/tmp/mms_for_$mms_purpose.maria_log_control; copy_file $MYSQLD_DATADIR/$MARIA_LOG/maria_log_control $MYSQLTEST_VARDIR/tmp/mms_for_$mms_purpose.maria_log_control;
connection default; connection default;

View file

@ -1910,7 +1910,7 @@ select hex(s1) from t4;
drop table t1,t2,t3,t4; drop table t1,t2,t3,t4;
} }
if (test_foreign_keys) if ($test_foreign_keys)
{ {
eval create table t1 (a int primary key,s1 varbinary(3) not null unique) engine=$engine_type; eval create table t1 (a int primary key,s1 varbinary(3) not null unique) engine=$engine_type;
eval create table t2 (s1 binary(2) not null, constraint c foreign key(s1) references t1(s1) on update cascade) engine=$engine_type; eval create table t2 (s1 binary(2) not null, constraint c foreign key(s1) references t1(s1) on update cascade) engine=$engine_type;
@ -2405,7 +2405,7 @@ drop table t1, t2, t3, t5, t6, t8, t9;
} }
# End transactional tests # End transactional tests
if (test_foreign_keys) if ($test_foreign_keys)
{ {
# bug 18934, "InnoDB crashes when table uses column names like DB_ROW_ID" # bug 18934, "InnoDB crashes when table uses column names like DB_ROW_ID"
--error 1005 --error 1005

View file

@ -75,7 +75,9 @@ USE hotcopy_test;
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
--list_files $MYSQLTEST_VARDIR/tmp/hotcopy_test --list_files $MYSQLTEST_VARDIR/tmp/hotcopy_test
#--exec rm -rf $MYSQLTEST_VARDIR/tmp/hotcopy_test #--exec rm -rf $MYSQLTEST_VARDIR/tmp/hotcopy_test
--disable_warnings
--remove_files_wildcard $MYSQLTEST_VARDIR/tmp/hotcopy_test * --remove_files_wildcard $MYSQLTEST_VARDIR/tmp/hotcopy_test *
--enable_warnings
--rmdir $MYSQLTEST_VARDIR/tmp/hotcopy_test --rmdir $MYSQLTEST_VARDIR/tmp/hotcopy_test
# backup without full index files # backup without full index files

View file

@ -18,8 +18,10 @@ CREATE TABLE helper1(c1 VARCHAR(20));
# dump raw data to file # dump raw data to file
let $ndb_backup_file1= $MYSQLTEST_VARDIR/ndb_backup_tmp.dat; let $ndb_backup_file1= $MYSQLTEST_VARDIR/ndb_backup_tmp.dat;
let $ndb_backup_file2= $MYSQLTEST_VARDIR/tmp.dat; let $ndb_backup_file2= $MYSQLTEST_VARDIR/tmp.dat;
--disable_warnings
--error 0,1 --error 0,1
--remove_file $ndb_backup_file1 --remove_file $ndb_backup_file1
--enable_warnings
--exec $NDB_TOOLS_DIR/ndb_select_all --ndb-connectstring="$NDB_CONNECTSTRING" -d sys --delimiter=',' SYSTAB_0 > $ndb_backup_file1 --exec $NDB_TOOLS_DIR/ndb_select_all --ndb-connectstring="$NDB_CONNECTSTRING" -d sys --delimiter=',' SYSTAB_0 > $ndb_backup_file1
# load the table from the raw data file # load the table from the raw data file
eval LOAD DATA INFILE '$ndb_backup_file1' INTO TABLE helper1; eval LOAD DATA INFILE '$ndb_backup_file1' INTO TABLE helper1;

View file

@ -1,7 +1,9 @@
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults $ndb_restore_opts -b $the_backup_id -n 1 $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id $ndb_restore_filter > $MYSQLTEST_VARDIR/tmp/tmp.dat --exec $NDB_TOOLS_DIR/ndb_restore --no-defaults $ndb_restore_opts -b $the_backup_id -n 1 $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id $ndb_restore_filter > $MYSQLTEST_VARDIR/tmp/tmp.dat
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults $ndb_restore_opts -b $the_backup_id -n 2 $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id $ndb_restore_filter >> $MYSQLTEST_VARDIR/tmp/tmp.dat --exec $NDB_TOOLS_DIR/ndb_restore --no-defaults $ndb_restore_opts -b $the_backup_id -n 2 $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id $ndb_restore_filter >> $MYSQLTEST_VARDIR/tmp/tmp.dat
--exec sort $MYSQLTEST_VARDIR/tmp/tmp.dat --exec sort $MYSQLTEST_VARDIR/tmp/tmp.dat
--disable_warnings
--error 0,1 --error 0,1
--remove_file $MYSQLTEST_VARDIR/tmp/tmp.dat --remove_file $MYSQLTEST_VARDIR/tmp/tmp.dat
--enable_warnings
--let ndb_restore_opts= --let ndb_restore_opts=
--let ndb_restore_filter= --let ndb_restore_filter=

View file

@ -0,0 +1,5 @@
if (`SELECT count(*) FROM information_schema.engines WHERE
(support = 'YES' OR support = 'DEFAULT') AND
engine = 'blackhole'`){
skip Blackhole engine enabled;
}

View file

@ -1,7 +1,8 @@
SELECT c.count, SELECT d.count,
(SELECT SUM(a.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as a WHERE a.count != 0) as query_count, (SELECT SUM(a.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as a WHERE a.count != 0) as query_count,
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as b WHERE b.count != 0) as not_zero_region_count, (SELECT SUM((b.total * 1000000) DIV 1000000) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as b WHERE b.count != 0) as query_total,
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as c WHERE c.count != 0) as not_zero_region_count,
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME) as region_count (SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME) as region_count
FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as c WHERE c.count > 0; FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as d WHERE d.count > 0;
SELECT COUNT(*) as region_count FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME; SELECT COUNT(*) as region_count FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
SELECT time FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME; SELECT time FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;

View file

@ -33,3 +33,4 @@ while (`SELECT "XX$_servers" <> "XX"`)
--source include/diff_tables.inc --source include/diff_tables.inc
connection $_slave; connection $_slave;
} }
connection $_master;

View file

@ -72,7 +72,7 @@ copy_file $fake_relay_log $_fake_relay_log;
if (`SELECT LENGTH(@@secure_file_priv) > 0`) if (`SELECT LENGTH(@@secure_file_priv) > 0`)
{ {
-- let $_file_priv_dir= `SELECT @@secure_file_priv`; -- let $_file_priv_dir= `SELECT @@secure_file_priv`
-- let $_suffix= `SELECT UUID()` -- let $_suffix= `SELECT UUID()`
-- let $_tmp_file= $_file_priv_dir/fake-index.$_suffix -- let $_tmp_file= $_file_priv_dir/fake-index.$_suffix

View file

@ -246,6 +246,8 @@ sub new {
while ( my $line= <$F> ) { while ( my $line= <$F> ) {
chomp($line); chomp($line);
# Remove any trailing CR from Windows edited files
$line=~ s/\cM$//;
# [group] # [group]
if ( $line =~ /^\[(.*)\]/ ) { if ( $line =~ /^\[(.*)\]/ ) {

View file

@ -30,6 +30,13 @@ sub get_basedir {
return $basedir; return $basedir;
} }
sub get_testdir {
my ($self, $group)= @_;
my $testdir= $group->if_exist('testdir') ||
$self->{ARGS}->{testdir};
return $testdir;
}
sub fix_charset_dir { sub fix_charset_dir {
my ($self, $config, $group_name, $group)= @_; my ($self, $config, $group_name, $group)= @_;
@ -138,7 +145,9 @@ sub fix_secure_file_priv {
sub fix_std_data { sub fix_std_data {
my ($self, $config, $group_name, $group)= @_; my ($self, $config, $group_name, $group)= @_;
return "$::opt_vardir/std_data"; #return "$::opt_vardir/std_data";
my $testdir= $self->get_testdir($group);
return "$testdir/std_data";
} }
sub ssl_supported { sub ssl_supported {

View file

@ -60,11 +60,12 @@ use My::Platform;
my %running; my %running;
my $_verbose= 0; my $_verbose= 0;
my $start_exit= 0;
END { END {
# Kill any children still running # Kill any children still running
for my $proc (values %running){ for my $proc (values %running){
if ( $proc->is_child($$) ){ if ( $proc->is_child($$) and ! $start_exit){
#print "Killing: $proc\n"; #print "Killing: $proc\n";
if ($proc->wait_one(0)){ if ($proc->wait_one(0)){
$proc->kill(); $proc->kill();
@ -149,6 +150,11 @@ sub new {
push(@safe_args, "--"); push(@safe_args, "--");
push(@safe_args, $path); # The program safe_process should execute push(@safe_args, $path); # The program safe_process should execute
if ($start_exit) { # Bypass safe_process instead, start program directly
@safe_args= ();
$safe_path= $path;
}
push(@safe_args, @$$args); push(@safe_args, @$$args);
print "### safe_path: ", $safe_path, " ", join(" ", @safe_args), "\n" print "### safe_path: ", $safe_path, " ", join(" ", @safe_args), "\n"
@ -534,6 +540,13 @@ sub wait_all {
} }
} }
#
# Set global flag to tell all safe_process to exit after starting child
#
sub start_exit {
$start_exit= 1;
}
# #
# Check if any process has exited, but don't wait. # Check if any process has exited, but don't wait.

View file

@ -252,15 +252,11 @@ sub collect_one_suite
} }
else else
{ {
$suitedir= my_find_dir($::basedir, $suitedir= my_find_dir($suitedir,
["mysql-test/suite", ["suite",
"mysql-test", ".",
"share/mysql-test/suite",
"share/mysql-test",
"share/mysql/mysql-test/suite",
"share/mysql/mysql-test",
# Look in storage engine specific suite dirs # Look in storage engine specific suite dirs
"storage/*/mysql-test-suites" "../storage/*/mysql-test-suites"
], ],
[$suite]); [$suite]);
} }
@ -573,7 +569,7 @@ sub optimize_cases {
# Check that engine selected by # Check that engine selected by
# --default-storage-engine=<engine> is supported # --default-storage-engine=<engine> is supported
# ======================================================= # =======================================================
my %builtin_engines = ('myisam' => 1, 'memory' => 1); my %builtin_engines = ('myisam' => 1, 'memory' => 1, 'csv' => 1);
foreach my $opt ( @{$tinfo->{master_opt}} ) { foreach my $opt ( @{$tinfo->{master_opt}} ) {
my $default_engine= my $default_engine=
@ -682,6 +678,13 @@ sub process_opts {
next; next;
} }
$value= mtr_match_prefix($opt, "--testcase-timeout=");
if ( defined $value ) {
# Overrides test case timeout for this test
$tinfo->{'case-timeout'}= $value;
next;
}
# Ok, this was a real option, add it # Ok, this was a real option, add it
push(@{$tinfo->{$opt_name}}, $opt); push(@{$tinfo->{$opt_name}}, $opt);
} }
@ -692,6 +695,7 @@ sub process_opts {
} }
} }
############################################################################## ##############################################################################
# #
# Collect information about a single test case # Collect information about a single test case
@ -904,7 +908,7 @@ sub collect_one_test_case {
{ {
# Ndb is not supported, skip it # Ndb is not supported, skip it
$tinfo->{'skip'}= 1; $tinfo->{'skip'}= 1;
$tinfo->{'comment'}= "No ndbcluster support"; $tinfo->{'comment'}= "No ndbcluster support or ndb tests not enabled";
return $tinfo; return $tinfo;
} }
elsif ( $::opt_skip_ndbcluster ) elsif ( $::opt_skip_ndbcluster )

View file

@ -120,7 +120,7 @@ sub mtr_report_test ($) {
my $timest = format_time(); my $timest = format_time();
my $fail = "fail"; my $fail = "fail";
if ( $::opt_experimental ) if ( @$::experimental_test_cases )
{ {
# Find out if this test case is an experimental one, so we can treat # Find out if this test case is an experimental one, so we can treat
# the failure as an expected failure instead of a regression. # the failure as an expected failure instead of a regression.

View file

@ -111,13 +111,25 @@ my $path_vardir_trace; # unix formatted opt_vardir for trace files
my $opt_tmpdir; # Path to use for tmp/ dir my $opt_tmpdir; # Path to use for tmp/ dir
my $opt_tmpdir_pid; my $opt_tmpdir_pid;
my $opt_start;
my $opt_start_dirty;
my $opt_start_exit;
my $start_only;
END { END {
if ( defined $opt_tmpdir_pid and $opt_tmpdir_pid == $$ ) if ( defined $opt_tmpdir_pid and $opt_tmpdir_pid == $$ )
{
if (!$opt_start_exit)
{ {
# Remove the tempdir this process has created # Remove the tempdir this process has created
mtr_verbose("Removing tmpdir '$opt_tmpdir"); mtr_verbose("Removing tmpdir $opt_tmpdir");
rmtree($opt_tmpdir); rmtree($opt_tmpdir);
} }
else
{
mtr_warning("tmpdir $opt_tmpdir should be removed after the server has finished");
}
}
} }
sub env_or_val($$) { defined $ENV{$_[0]} ? $ENV{$_[0]} : $_[1] } sub env_or_val($$) { defined $ENV{$_[0]} ? $ENV{$_[0]} : $_[1] }
@ -191,8 +203,8 @@ our $opt_client_debugger;
my $config; # The currently running config my $config; # The currently running config
my $current_config_name; # The currently running config file template my $current_config_name; # The currently running config file template
our $opt_experimental; our @opt_experimentals;
our $experimental_test_cases; our $experimental_test_cases= [];
my $baseport; my $baseport;
# $opt_build_thread may later be set from $opt_port_base # $opt_build_thread may later be set from $opt_port_base
@ -216,18 +228,16 @@ my $opt_suite_timeout = $ENV{MTR_SUITE_TIMEOUT} || 360; # minutes
my $opt_shutdown_timeout= $ENV{MTR_SHUTDOWN_TIMEOUT} || 10; # seconds my $opt_shutdown_timeout= $ENV{MTR_SHUTDOWN_TIMEOUT} || 10; # seconds
my $opt_start_timeout = $ENV{MTR_START_TIMEOUT} || 180; # seconds my $opt_start_timeout = $ENV{MTR_START_TIMEOUT} || 180; # seconds
sub testcase_timeout { return $opt_testcase_timeout * 60; };
sub suite_timeout { return $opt_suite_timeout * 60; }; sub suite_timeout { return $opt_suite_timeout * 60; };
sub check_timeout { return $opt_testcase_timeout * 6; }; sub check_timeout { return $opt_testcase_timeout * 6; };
my $opt_start;
my $opt_start_dirty;
my $start_only;
my $opt_wait_all; my $opt_wait_all;
my $opt_user_args;
my $opt_repeat= 1; my $opt_repeat= 1;
my $opt_retry= 1; my $opt_retry= 1;
my $opt_retry_failure= env_or_val(MTR_RETRY_FAILURE => 2); my $opt_retry_failure= env_or_val(MTR_RETRY_FAILURE => 2);
my $opt_reorder= 1; my $opt_reorder= 1;
my $opt_force_restart= 0;
my $opt_strace_client; my $opt_strace_client;
@ -245,9 +255,21 @@ my $opt_callgrind;
my %mysqld_logs; my %mysqld_logs;
my $opt_debug_sync_timeout= 300; # Default timeout for WAIT_FOR actions. my $opt_debug_sync_timeout= 300; # Default timeout for WAIT_FOR actions.
sub testcase_timeout ($) {
my ($tinfo)= @_;
if (exists $tinfo->{'case-timeout'}) {
# Return test specific timeout if *longer* that the general timeout
my $test_to= $tinfo->{'case-timeout'};
$test_to*= 10 if $opt_valgrind;
return $test_to * 60 if $test_to > $opt_testcase_timeout;
}
return $opt_testcase_timeout * 60;
}
our $opt_warnings= 1; our $opt_warnings= 1;
our $opt_skip_ndbcluster= 0; our $opt_include_ndbcluster= 0;
our $opt_skip_ndbcluster= 1;
my $exe_ndbd; my $exe_ndbd;
my $exe_ndb_mgmd; my $exe_ndb_mgmd;
@ -375,6 +397,12 @@ sub main {
mtr_report("Using parallel: $opt_parallel"); mtr_report("Using parallel: $opt_parallel");
} }
if ($opt_parallel > 1 && $opt_start_exit) {
mtr_warning("Parallel and --start-and-exit cannot be combined\n" .
"Setting parallel to 1");
$opt_parallel= 1;
}
# Create server socket on any free port # Create server socket on any free port
my $server = new IO::Socket::INET my $server = new IO::Socket::INET
( (
@ -415,6 +443,8 @@ sub main {
my ($prefix, $fail, $completed, $extra_warnings)= my ($prefix, $fail, $completed, $extra_warnings)=
run_test_server($server, $tests, $opt_parallel); run_test_server($server, $tests, $opt_parallel);
exit(0) if $opt_start_exit;
# Send Ctrl-C to any children still running # Send Ctrl-C to any children still running
kill("INT", keys(%children)); kill("INT", keys(%children));
@ -893,6 +923,7 @@ sub command_line_setup {
# Control what test suites or cases to run # Control what test suites or cases to run
'force' => \$opt_force, 'force' => \$opt_force,
'with-ndbcluster-only' => \&collect_option, 'with-ndbcluster-only' => \&collect_option,
'include-ndbcluster' => \$opt_include_ndbcluster,
'skip-ndbcluster|skip-ndb' => \$opt_skip_ndbcluster, 'skip-ndbcluster|skip-ndb' => \$opt_skip_ndbcluster,
'suite|suites=s' => \$opt_suites, 'suite|suites=s' => \$opt_suites,
'skip-rpl' => \&collect_option, 'skip-rpl' => \&collect_option,
@ -902,7 +933,7 @@ sub command_line_setup {
'big-test' => \$opt_big_test, 'big-test' => \$opt_big_test,
'combination=s' => \@opt_combinations, 'combination=s' => \@opt_combinations,
'skip-combinations' => \&collect_option, 'skip-combinations' => \&collect_option,
'experimental=s' => \$opt_experimental, 'experimental=s' => \@opt_experimentals,
'skip-im' => \&ignore_option, 'skip-im' => \&ignore_option,
'staging-run' => \$opt_staging_run, 'staging-run' => \$opt_staging_run,
@ -976,13 +1007,16 @@ sub command_line_setup {
'report-features' => \$opt_report_features, 'report-features' => \$opt_report_features,
'comment=s' => \$opt_comment, 'comment=s' => \$opt_comment,
'fast' => \$opt_fast, 'fast' => \$opt_fast,
'force-restart' => \$opt_force_restart,
'reorder!' => \$opt_reorder, 'reorder!' => \$opt_reorder,
'enable-disabled' => \&collect_option, 'enable-disabled' => \&collect_option,
'verbose+' => \$opt_verbose, 'verbose+' => \$opt_verbose,
'verbose-restart' => \&report_option, 'verbose-restart' => \&report_option,
'sleep=i' => \$opt_sleep, 'sleep=i' => \$opt_sleep,
'start-dirty' => \$opt_start_dirty, 'start-dirty' => \$opt_start_dirty,
'start-and-exit' => \$opt_start_exit,
'start' => \$opt_start, 'start' => \$opt_start,
'user-args' => \$opt_user_args,
'wait-all' => \$opt_wait_all, 'wait-all' => \$opt_wait_all,
'print-testcases' => \&collect_option, 'print-testcases' => \&collect_option,
'repeat=i' => \$opt_repeat, 'repeat=i' => \$opt_repeat,
@ -1088,16 +1122,19 @@ sub command_line_setup {
mtr_print_thick_line('#'); mtr_print_thick_line('#');
} }
if ( $opt_experimental ) if ( @opt_experimentals )
{ {
# $^O on Windows considered not generic enough # $^O on Windows considered not generic enough
my $plat= (IS_WINDOWS) ? 'windows' : $^O; my $plat= (IS_WINDOWS) ? 'windows' : $^O;
# read the list of experimental test cases from the file specified on # read the list of experimental test cases from the files specified on
# the command line # the command line
open(FILE, "<", $opt_experimental) or mtr_error("Can't read experimental file: $opt_experimental");
mtr_report("Using experimental file: $opt_experimental");
$experimental_test_cases = []; $experimental_test_cases = [];
foreach my $exp_file (@opt_experimentals)
{
open(FILE, "<", $exp_file)
or mtr_error("Can't read experimental file: $exp_file");
mtr_report("Using experimental file: $exp_file");
while(<FILE>) { while(<FILE>) {
chomp; chomp;
# remove comments (# foo) at the beginning of the line, or after a # remove comments (# foo) at the beginning of the line, or after a
@ -1126,6 +1163,7 @@ sub command_line_setup {
} }
close FILE; close FILE;
} }
}
foreach my $arg ( @ARGV ) foreach my $arg ( @ARGV )
{ {
@ -1398,7 +1436,7 @@ sub command_line_setup {
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
# Modified behavior with --start options # Modified behavior with --start options
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
if ($opt_start or $opt_start_dirty) { if ($opt_start or $opt_start_dirty or $opt_start_exit) {
collect_option ('quick-collect', 1); collect_option ('quick-collect', 1);
$start_only= 1; $start_only= 1;
} }
@ -1410,13 +1448,24 @@ sub command_line_setup {
$opt_retry_failure= 1; $opt_retry_failure= 1;
} }
# --------------------------------------------------------------------------
# Check use of user-args
# --------------------------------------------------------------------------
if ($opt_user_args) {
mtr_error("--user-args only valid with --start options")
unless $start_only;
mtr_error("--user-args cannot be combined with named suites or tests")
if $opt_suites || @opt_cases;
}
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
# Check use of wait-all # Check use of wait-all
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
if ($opt_wait_all && ! $start_only) if ($opt_wait_all && ! $start_only)
{ {
mtr_error("--wait-all can only be used with --start or --start-dirty"); mtr_error("--wait-all can only be used with --start options");
} }
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
@ -2154,6 +2203,12 @@ sub environment_setup {
# Create an environment variable to make it possible # Create an environment variable to make it possible
# to detect that valgrind is being used from test cases # to detect that valgrind is being used from test cases
$ENV{'VALGRIND_TEST'}= $opt_valgrind; $ENV{'VALGRIND_TEST'}= $opt_valgrind;
# Add dir of this perl to aid mysqltest in finding perl
my $perldir= dirname($^X);
my $pathsep= ":";
$pathsep= ";" if IS_WINDOWS && ! IS_CYGWIN;
$ENV{'PATH'}= "$ENV{'PATH'}".$pathsep.$perldir;
} }
@ -2478,6 +2533,11 @@ sub fix_vs_config_dir () {
sub check_ndbcluster_support ($) { sub check_ndbcluster_support ($) {
my $mysqld_variables= shift; my $mysqld_variables= shift;
if ($opt_include_ndbcluster)
{
$opt_skip_ndbcluster= 0;
}
if ($opt_skip_ndbcluster) if ($opt_skip_ndbcluster)
{ {
mtr_report(" - skipping ndbcluster"); mtr_report(" - skipping ndbcluster");
@ -2987,6 +3047,7 @@ sub default_mysqld {
my $config= My::ConfigFactory->new_config my $config= My::ConfigFactory->new_config
( { ( {
basedir => $basedir, basedir => $basedir,
testdir => $glob_mysql_test_dir,
template_path => "include/default_my.cnf", template_path => "include/default_my.cnf",
vardir => $opt_vardir, vardir => $opt_vardir,
tmpdir => $opt_tmpdir, tmpdir => $opt_tmpdir,
@ -3262,7 +3323,8 @@ sub check_testcase($$)
my %started; my %started;
foreach my $mysqld ( mysqlds() ) foreach my $mysqld ( mysqlds() )
{ {
if ( defined $mysqld->{'proc'} ) # Skip if server has been restarted with additional options
if ( defined $mysqld->{'proc'} && ! exists $mysqld->{'restart_opts'} )
{ {
my $proc= start_check_testcase($tinfo, $mode, $mysqld); my $proc= start_check_testcase($tinfo, $mode, $mysqld);
$started{$proc->pid()}= $proc; $started{$proc->pid()}= $proc;
@ -3712,6 +3774,7 @@ sub run_testcase ($$) {
$config= My::ConfigFactory->new_config $config= My::ConfigFactory->new_config
( { ( {
basedir => $basedir, basedir => $basedir,
testdir => $glob_mysql_test_dir,
template_path => $tinfo->{template_path}, template_path => $tinfo->{template_path},
extra_template_path => $tinfo->{extra_template_path}, extra_template_path => $tinfo->{extra_template_path},
vardir => $opt_vardir, vardir => $opt_vardir,
@ -3755,6 +3818,11 @@ sub run_testcase ($$) {
# Write start of testcase to log # Write start of testcase to log
mark_log($path_current_testlog, $tinfo); mark_log($path_current_testlog, $tinfo);
# Make sure the safe_process also exits from now on
if ($opt_start_exit) {
My::SafeProcess->start_exit();
}
if (start_servers($tinfo)) if (start_servers($tinfo))
{ {
report_failure_and_restart($tinfo); report_failure_and_restart($tinfo);
@ -3779,6 +3847,18 @@ sub run_testcase ($$) {
mtr_print ($mysqld->name() . " " . $mysqld->value('port') . mtr_print ($mysqld->name() . " " . $mysqld->value('port') .
" " . $mysqld->value('socket')); " " . $mysqld->value('socket'));
} }
if ( $opt_start_exit )
{
mtr_print("Server(s) started, not waiting for them to finish");
if (IS_WINDOWS)
{
POSIX::_exit(0); # exit hangs here in ActiveState Perl
}
else
{
exit(0);
}
}
mtr_print("Waiting for server(s) to exit..."); mtr_print("Waiting for server(s) to exit...");
if ( $opt_wait_all ) { if ( $opt_wait_all ) {
My::SafeProcess->wait_all(); My::SafeProcess->wait_all();
@ -3797,7 +3877,7 @@ sub run_testcase ($$) {
} }
} }
my $test_timeout= start_timer(testcase_timeout()); my $test_timeout= start_timer(testcase_timeout($tinfo));
do_before_run_mysqltest($tinfo); do_before_run_mysqltest($tinfo);
@ -3902,6 +3982,9 @@ sub run_testcase ($$) {
# Try to get reason from test log file # Try to get reason from test log file
find_testcase_skipped_reason($tinfo); find_testcase_skipped_reason($tinfo);
mtr_report_test_skipped($tinfo); mtr_report_test_skipped($tinfo);
# Restart if skipped due to missing perl, it may have had side effects
stop_all_servers($opt_shutdown_timeout)
if ($tinfo->{'comment'} =~ /^perl not found/);
} }
elsif ( $res == 65 ) elsif ( $res == 65 )
{ {
@ -4008,7 +4091,7 @@ sub run_testcase ($$) {
{ {
my $log_file_name= $opt_vardir."/log/".$tinfo->{shortname}.".log"; my $log_file_name= $opt_vardir."/log/".$tinfo->{shortname}.".log";
$tinfo->{comment}= $tinfo->{comment}=
"Test case timeout after ".testcase_timeout(). "Test case timeout after ".testcase_timeout($tinfo).
" seconds\n\n"; " seconds\n\n";
# Add 20 last executed commands from test case log file # Add 20 last executed commands from test case log file
if (-e $log_file_name) if (-e $log_file_name)
@ -4017,7 +4100,7 @@ sub run_testcase ($$) {
"== $log_file_name == \n". "== $log_file_name == \n".
mtr_lastlinesfromfile($log_file_name, 20)."\n"; mtr_lastlinesfromfile($log_file_name, 20)."\n";
} }
$tinfo->{'timeout'}= testcase_timeout(); # Mark as timeout $tinfo->{'timeout'}= testcase_timeout($tinfo); # Mark as timeout
run_on_all($tinfo, 'analyze-timeout'); run_on_all($tinfo, 'analyze-timeout');
report_failure_and_restart($tinfo); report_failure_and_restart($tinfo);
@ -4035,7 +4118,7 @@ sub run_testcase ($$) {
sub _preserve_error_log_names { sub _preserve_error_log_names {
my ($mysqld)= @_; my ($mysqld)= @_;
my $error_log_file= $mysqld->if_exist('#log-error'); my $error_log_file= $mysqld->if_exist('#log-error');
return unless $error_log_file and -r $error_log_file; return (undef, undef) unless $error_log_file;
my $error_log_dir= dirname($error_log_file); my $error_log_dir= dirname($error_log_file);
my $save_name= $error_log_dir ."/../". $mysqld->name() .".error.log"; my $save_name= $error_log_dir ."/../". $mysqld->name() .".error.log";
return ($error_log_file, $save_name); return ($error_log_file, $save_name);
@ -4237,6 +4320,7 @@ sub extract_warning_lines ($) {
qr/Slave SQL thread retried transaction/, qr/Slave SQL thread retried transaction/,
qr/Slave \(additional info\)/, qr/Slave \(additional info\)/,
qr/Incorrect information in file/, qr/Incorrect information in file/,
qr/Incorrect key file for table .*crashed.*/,
qr/Slave I\/O: Get master SERVER_ID failed with error:.*/, qr/Slave I\/O: Get master SERVER_ID failed with error:.*/,
qr/Slave I\/O: Get master clock failed with error:.*/, qr/Slave I\/O: Get master clock failed with error:.*/,
qr/Slave I\/O: Get master COLLATION_SERVER failed with error:.*/, qr/Slave I\/O: Get master COLLATION_SERVER failed with error:.*/,
@ -4250,7 +4334,8 @@ sub extract_warning_lines ($) {
qr/Slave: Operation DROP USER failed for 'create_rout_db'/, qr/Slave: Operation DROP USER failed for 'create_rout_db'/,
qr|Checking table: '\./mtr/test_suppressions'|, qr|Checking table: '\./mtr/test_suppressions'|,
qr|Table \./test/bug53592 has a primary key in InnoDB data dictionary, but not in MySQL|, qr|Table \./test/bug53592 has a primary key in InnoDB data dictionary, but not in MySQL|,
qr|mysqld: Table '\./mtr/test_suppressions' is marked as crashed and should be repaired| qr|mysqld: Table '\./mtr/test_suppressions' is marked as crashed and should be repaired|,
qr|InnoDB: Error: table 'test/bug39438'|,
); );
my $matched_lines= []; my $matched_lines= [];
@ -4496,6 +4581,16 @@ sub check_expected_crash_and_restart {
next; next;
} }
# If last line begins "restart:", the rest of the line is read as
# extra command line options to add to the restarted mysqld.
# Anything other than 'wait' or 'restart:' (with a colon) will
# result in a restart with original mysqld options.
if ($last_line =~ /restart:(.+)/) {
my @rest_opt= split(' ', $1);
$mysqld->{'restart_opts'}= \@rest_opt;
} else {
delete $mysqld->{'restart_opts'};
}
unlink($expect_file); unlink($expect_file);
# Start server with same settings as last time # Start server with same settings as last time
@ -4734,7 +4829,7 @@ sub mysqld_arguments ($$$) {
mtr_add_arg($args, "%s--disable-sync-frm"); mtr_add_arg($args, "%s--disable-sync-frm");
if (!using_extern() and $mysql_version_id >= 50106 ) if (!using_extern() and $mysql_version_id >= 50106 && !$opt_user_args)
{ {
# Turn on logging to file and tables # Turn on logging to file and tables
mtr_add_arg($args, "%s--log-output=table,file"); mtr_add_arg($args, "%s--log-output=table,file");
@ -4772,7 +4867,7 @@ sub mysqld_arguments ($$$) {
} }
} }
$opt_skip_core = $found_skip_core; $opt_skip_core = $found_skip_core;
if ( !$found_skip_core ) if ( !$found_skip_core && !$opt_user_args )
{ {
mtr_add_arg($args, "%s", "--core-file"); mtr_add_arg($args, "%s", "--core-file");
} }
@ -4780,7 +4875,7 @@ sub mysqld_arguments ($$$) {
# Enable the debug sync facility, set default wait timeout. # Enable the debug sync facility, set default wait timeout.
# Facility stays disabled if timeout value is zero. # Facility stays disabled if timeout value is zero.
mtr_add_arg($args, "--loose-debug-sync-timeout=%s", mtr_add_arg($args, "--loose-debug-sync-timeout=%s",
$opt_debug_sync_timeout); $opt_debug_sync_timeout) unless $opt_user_args;
return $args; return $args;
} }
@ -4812,7 +4907,13 @@ sub mysqld_start ($$) {
} }
mtr_add_arg($args, "--defaults-group-suffix=%s", $mysqld->after('mysqld')); mtr_add_arg($args, "--defaults-group-suffix=%s", $mysqld->after('mysqld'));
mysqld_arguments($args,$mysqld,$extra_opts);
# Add any additional options from an in-test restart
my @all_opts= @$extra_opts;
if (exists $mysqld->{'restart_opts'}) {
push (@all_opts, @{$mysqld->{'restart_opts'}});
}
mysqld_arguments($args,$mysqld,\@all_opts);
if ( $opt_debug ) if ( $opt_debug )
{ {
@ -4955,6 +5056,11 @@ sub server_need_restart {
return 1; return 1;
} }
if ( $opt_force_restart ) {
mtr_verbose_restart($server, "forced restart turned on");
return 1;
}
if ( $tinfo->{template_path} ne $current_config_name) if ( $tinfo->{template_path} ne $current_config_name)
{ {
mtr_verbose_restart($server, "using different config file"); mtr_verbose_restart($server, "using different config file");
@ -5005,7 +5111,10 @@ sub server_need_restart {
my $extra_opts= get_extra_opts($server, $tinfo); my $extra_opts= get_extra_opts($server, $tinfo);
my $started_opts= $server->{'started_opts'}; my $started_opts= $server->{'started_opts'};
if (!My::Options::same($started_opts, $extra_opts) ) # Also, always restart if server had been restarted with additional
# options within test.
if (!My::Options::same($started_opts, $extra_opts) ||
exists $server->{'restart_opts'})
{ {
my $use_dynamic_option_switch= 0; my $use_dynamic_option_switch= 0;
if (!$use_dynamic_option_switch) if (!$use_dynamic_option_switch)
@ -5074,6 +5183,9 @@ sub stopped { return grep(!defined $_, map($_->{proc}, @_)); }
sub get_extra_opts { sub get_extra_opts {
# No extra options if --user-args
return \@opt_extra_mysqld_opt if $opt_user_args;
my ($mysqld, $tinfo)= @_; my ($mysqld, $tinfo)= @_;
my $opts= my $opts=
@ -5655,7 +5767,8 @@ Options to control what test suites or cases to run
force Continue to run the suite after failure force Continue to run the suite after failure
with-ndbcluster-only Run only tests that include "ndb" in the filename with-ndbcluster-only Run only tests that include "ndb" in the filename
skip-ndb[cluster] Skip all tests that need cluster skip-ndb[cluster] Skip all tests that need cluster. Default.
include-ndb[cluster] Enable all tests that need cluster
do-test=PREFIX or REGEX do-test=PREFIX or REGEX
Run test cases which name are prefixed with PREFIX Run test cases which name are prefixed with PREFIX
or fulfills REGEX or fulfills REGEX
@ -5768,13 +5881,19 @@ Misc options
startup settings for the first specified test case startup settings for the first specified test case
Example: Example:
$0 --start alias & $0 --start alias &
start-and-exit Same as --start, but mysql-test-run terminates and
leaves just the server running
start-dirty Only start the servers (without initialization) for start-dirty Only start the servers (without initialization) for
the first specified test case the first specified test case
user-args In combination with start* and no test name, drops
arguments to mysqld except those speficied with
--mysqld (if any)
wait-all If --start or --start-dirty option is used, wait for all wait-all If --start or --start-dirty option is used, wait for all
servers to exit before finishing the process servers to exit before finishing the process
fast Run as fast as possible, dont't wait for servers fast Run as fast as possible, dont't wait for servers
to shutdown etc. to shutdown etc.
parallel=N Run tests in N parallel threads (default 1) force-restart Always restart servers between tests
parallel=N Run tests in N parallel threads (default=1)
Use parallel=auto for auto-setting of N Use parallel=auto for auto-setting of N
repeat=N Run each test N number of times repeat=N Run each test N number of times
retry=N Retry tests that fail up to N times (default $opt_retry). retry=N Retry tests that fail up to N times (default $opt_retry).

View file

@ -0,0 +1,6 @@
drop table if exists t1,t2;
CREATE TABLE t1 (a INT, INDEX(a)) engine=innodb;
ALTER TABLE t1 RENAME TO t2, DISABLE KEYS;
Warnings:
Note 1031 Table storage engine for 't1' doesn't have this option
DROP TABLE t2;

View file

@ -5138,7 +5138,7 @@ insert t1 values (1),(2),(3),(4),(5);
truncate table t1; truncate table t1;
affected rows: 0 affected rows: 0
drop table t1; drop table t1;
create table t1 (v varchar(32) not null); create table t1 (v varchar(32) not null) engine=csv;
insert into t1 values ('def'),('abc'),('hij'),('3r4f'); insert into t1 values ('def'),('abc'),('hij'),('3r4f');
select * from t1; select * from t1;
v v
@ -5146,14 +5146,14 @@ def
abc abc
hij hij
3r4f 3r4f
alter table t1 change v v2 varchar(32); alter table t1 change v v2 varchar(32) not null;
select * from t1; select * from t1;
v2 v2
def def
abc abc
hij hij
3r4f 3r4f
alter table t1 change v2 v varchar(64); alter table t1 change v2 v varchar(64) not null;
select * from t1; select * from t1;
v v
def def
@ -5163,35 +5163,34 @@ hij
update t1 set v = 'lmn' where v = 'hij'; update t1 set v = 'lmn' where v = 'hij';
select * from t1; select * from t1;
v v
lmn
def def
abc abc
lmn
3r4f 3r4f
alter table t1 add i int auto_increment not null primary key first; alter table t1 add i int not null first;
select * from t1; select * from t1;
i v i v
1 def 0 lmn
2 abc 0 def
3 lmn 0 abc
4 3r4f 0 3r4f
update t1 set i=5 where i=3; update t1 set i=3 where v = 'abc';
select * from t1; select * from t1;
i v i v
1 def 3 abc
2 abc 0 lmn
5 lmn 0 def
4 3r4f 0 3r4f
alter table t1 change i i bigint; alter table t1 change i i bigint not null;
select * from t1; select * from t1;
i v i v
1 def 3 abc
2 abc 0 lmn
5 lmn 0 def
4 3r4f 0 3r4f
alter table t1 add unique key (i, v); select * from t1 where i between 2 and 4 and v in ('def','3r4f','abc');
select * from t1 where i between 2 and 4 and v in ('def','3r4f','lmn');
i v i v
4 3r4f 3 abc
drop table t1; drop table t1;
create table bug15205 (val int(11) not null) engine=csv; create table bug15205 (val int(11) not null) engine=csv;
create table bug15205_2 (val int(11) not null) engine=csv; create table bug15205_2 (val int(11) not null) engine=csv;

View file

@ -358,4 +358,13 @@ INDEX(a), INDEX(b), INDEX(c));
INSERT INTO t1 VALUES (1,2,3), (4,5,6), (7,8,9); INSERT INTO t1 VALUES (1,2,3), (4,5,6), (7,8,9);
DELETE FROM t1 WHERE a = 10 OR b = 20 ORDER BY c LIMIT 1; DELETE FROM t1 WHERE a = 10 OR b = 20 ORDER BY c LIMIT 1;
DROP TABLE t1; DROP TABLE t1;
#
# Bug #53034: Multiple-table DELETE statements not accepting
# "Access compatibility" syntax
#
CREATE TABLE t1 (id INT);
CREATE TABLE t2 LIKE t1;
CREATE TABLE t3 LIKE t1;
DELETE FROM t1.*, test.t2.*, a.* USING t1, t2, t3 AS a;
DROP TABLE t1, t2, t3;
End of 5.1 tests End of 5.1 tests

View file

@ -1713,4 +1713,15 @@ f1 f2 f3 f4 f1 = f2
NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
drop table t1; drop table t1;
# #
# Bug #54465: assert: field_types == 0 || field_types[field_pos] ==
# MYSQL_TYPE_LONGLONG
#
CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (1), (2);
SELECT MAX((SELECT 1 FROM t1 ORDER BY @var LIMIT 1)) m FROM t1 t2, t1
ORDER BY t1.a;
m
1
DROP TABLE t1;
#
End of 5.1 tests End of 5.1 tests

View file

@ -194,7 +194,7 @@ date("1997-12-31 23:59:59.000001") as f8,
time("1997-12-31 23:59:59.000001") as f9; time("1997-12-31 23:59:59.000001") as f9;
describe t1; describe t1;
Field Type Null Key Default Extra Field Type Null Key Default Extra
f1 date NO 0000-00-00 f1 date YES NULL
f2 datetime YES NULL f2 datetime YES NULL
f3 time YES NULL f3 time YES NULL
f4 time YES NULL f4 time YES NULL

View file

@ -1335,4 +1335,12 @@ date_sub("0069-01-01 00:00:01",INTERVAL 2 SECOND)
select date_sub("0169-01-01 00:00:01",INTERVAL 2 SECOND); select date_sub("0169-01-01 00:00:01",INTERVAL 2 SECOND);
date_sub("0169-01-01 00:00:01",INTERVAL 2 SECOND) date_sub("0169-01-01 00:00:01",INTERVAL 2 SECOND)
0168-12-31 23:59:59 0168-12-31 23:59:59
CREATE TABLE t1(a DOUBLE NOT NULL);
INSERT INTO t1 VALUES (0),(9.216e-096);
# should not crash
SELECT 1 FROM t1 ORDER BY @x:=makedate(a,a);
1
1
1
DROP TABLE t1;
End of 5.1 tests End of 5.1 tests

View file

@ -707,10 +707,7 @@ numgeometries(b) IS NULL, numinteriorrings(b) IS NULL, numpoints(b) IS NULL,
area(b) IS NULL, glength(b) IS NULL, srid(b) IS NULL, x(b) IS NULL, area(b) IS NULL, glength(b) IS NULL, srid(b) IS NULL, x(b) IS NULL,
y(b) IS NULL y(b) IS NULL
from t1; from t1;
geometryfromtext(b) IS NULL geometryfromwkb(b) IS NULL astext(b) IS NULL aswkb(b) IS NULL geometrytype(b) IS NULL centroid(b) IS NULL envelope(b) IS NULL startpoint(b) IS NULL endpoint(b) IS NULL exteriorring(b) IS NULL pointn(b, 1) IS NULL geometryn(b, 1) IS NULL interiorringn(b, 1) IS NULL multipoint(b) IS NULL isempty(b) IS NULL issimple(b) IS NULL isclosed(b) IS NULL dimension(b) IS NULL numgeometries(b) IS NULL numinteriorrings(b) IS NULL numpoints(b) IS NULL area(b) IS NULL glength(b) IS NULL srid(b) IS NULL x(b) IS NULL y(b) IS NULL ERROR 22007: Illegal non geometric '`test`.`t1`.`b`' value found during parsing
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
select select
within(b, b) IS NULL, contains(b, b) IS NULL, overlaps(b, b) IS NULL, within(b, b) IS NULL, contains(b, b) IS NULL, overlaps(b, b) IS NULL,
equals(b, b) IS NULL, disjoint(b, b) IS NULL, touches(b, b) IS NULL, equals(b, b) IS NULL, disjoint(b, b) IS NULL, touches(b, b) IS NULL,
@ -725,10 +722,7 @@ point(b, b) IS NULL, linestring(b) IS NULL, polygon(b) IS NULL, multipoint(b) IS
multilinestring(b) IS NULL, multipolygon(b) IS NULL, multilinestring(b) IS NULL, multipolygon(b) IS NULL,
geometrycollection(b) IS NULL geometrycollection(b) IS NULL
from t1; from t1;
point(b, b) IS NULL linestring(b) IS NULL polygon(b) IS NULL multipoint(b) IS NULL multilinestring(b) IS NULL multipolygon(b) IS NULL geometrycollection(b) IS NULL ERROR 22007: Illegal non geometric '`test`.`t1`.`b`' value found during parsing
0 1 1 1 1 1 1
1 1 1 1 1 1 1
0 1 1 1 1 1 1
drop table t1; drop table t1;
CREATE TABLE t1(a POINT) ENGINE=MyISAM; CREATE TABLE t1(a POINT) ENGINE=MyISAM;
INSERT INTO t1 VALUES (NULL); INSERT INTO t1 VALUES (NULL);
@ -1010,51 +1004,14 @@ f5 datetime YES NULL
drop view v1; drop view v1;
drop table t1; drop table t1;
SELECT MultiPoint(12345,''); SELECT MultiPoint(12345,'');
MultiPoint(12345,'') ERROR 22007: Illegal non geometric '12345' value found during parsing
NULL SELECT 1 FROM (SELECT GREATEST(1,GEOMETRYCOLLECTION('00000','00000')) b FROM DUAL) AS d WHERE (LINESTRING(d.b));
SELECT MultiPoint(123451,''); ERROR 22007: Illegal non geometric ''00000'' value found during parsing
MultiPoint(123451,'') #
NULL # BUG#51875: crash when loading data into geometry function polyfromwkb
SELECT MultiPoint(1234512,''); #
MultiPoint(1234512,'') SET @a=0x00000000030000000100000000000000000000000000144000000000000014400000000000001840000000000000184000000000000014400000000000001440;
NULL SET @a=POLYFROMWKB(@a);
SELECT MultiPoint(12345123,''); SET @a=0x00000000030000000000000000000000000000000000144000000000000014400000000000001840000000000000184000000000000014400000000000001440;
MultiPoint(12345123,'') SET @a=POLYFROMWKB(@a);
NULL
SELECT MultiLineString(12345,'');
MultiLineString(12345,'')
NULL
SELECT MultiLineString(123451,'');
MultiLineString(123451,'')
NULL
SELECT MultiLineString(1234512,'');
MultiLineString(1234512,'')
NULL
SELECT MultiLineString(12345123,'');
MultiLineString(12345123,'')
NULL
SELECT LineString(12345,'');
LineString(12345,'')
NULL
SELECT LineString(123451,'');
LineString(123451,'')
NULL
SELECT LineString(1234512,'');
LineString(1234512,'')
NULL
SELECT LineString(12345123,'');
LineString(12345123,'')
NULL
SELECT Polygon(12345,'');
Polygon(12345,'')
NULL
SELECT Polygon(123451,'');
Polygon(123451,'')
NULL
SELECT Polygon(1234512,'');
Polygon(1234512,'')
NULL
SELECT Polygon(12345123,'');
Polygon(12345123,'')
NULL
End of 5.1 tests End of 5.1 tests

View file

@ -470,9 +470,10 @@ WHERE table2.f1 = 2
GROUP BY table1.f1, table2.f2 GROUP BY table1.f1, table2.f2
HAVING (table2.f2 = 8 AND table1.f1 >= 6); HAVING (table2.f2 = 8 AND table1.f1 >= 6);
id select_type table type possible_keys key key_len ref rows filtered Extra id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible HAVING noticed after reading const tables 1 SIMPLE table2 const PRIMARY PRIMARY 4 const 1 100.00 Using filesort
1 SIMPLE table1 ALL NULL NULL NULL NULL 4 100.00 Using where
Warnings: Warnings:
Note 1003 select `test`.`table1`.`f1` AS `f1`,'7' AS `f2` from `test`.`t1` `table1` join `test`.`t1` `table2` where ((`test`.`table1`.`f3` = '9')) group by `test`.`table1`.`f1`,'7' having 0 Note 1003 select `test`.`table1`.`f1` AS `f1`,'7' AS `f2` from `test`.`t1` `table1` join `test`.`t1` `table2` where ((`test`.`table1`.`f3` = '9')) group by `test`.`table1`.`f1`,'7' having (('7' = 8) and (`test`.`table1`.`f1` >= 6))
EXPLAIN EXTENDED EXPLAIN EXTENDED
SELECT table1.f1, table2.f2 SELECT table1.f1, table2.f2
FROM t1 AS table1 FROM t1 AS table1
@ -481,9 +482,10 @@ WHERE table2.f1 = 2
GROUP BY table1.f1, table2.f2 GROUP BY table1.f1, table2.f2
HAVING (table2.f2 = 8); HAVING (table2.f2 = 8);
id select_type table type possible_keys key key_len ref rows filtered Extra id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible HAVING noticed after reading const tables 1 SIMPLE table2 const PRIMARY PRIMARY 4 const 1 100.00 Using filesort
1 SIMPLE table1 ALL NULL NULL NULL NULL 4 100.00 Using where
Warnings: Warnings:
Note 1003 select `test`.`table1`.`f1` AS `f1`,'7' AS `f2` from `test`.`t1` `table1` join `test`.`t1` `table2` where ((`test`.`table1`.`f3` = '9')) group by `test`.`table1`.`f1`,'7' having 0 Note 1003 select `test`.`table1`.`f1` AS `f1`,'7' AS `f2` from `test`.`t1` `table1` join `test`.`t1` `table2` where ((`test`.`table1`.`f3` = '9')) group by `test`.`table1`.`f1`,'7' having ('7' = 8)
DROP TABLE t1; DROP TABLE t1;
# #
# Bug#52336 Segfault / crash in 5.1 copy_fields (param=0x9872980) at sql_select.cc:15355 # Bug#52336 Segfault / crash in 5.1 copy_fields (param=0x9872980) at sql_select.cc:15355

View file

@ -581,3 +581,76 @@ WHERE
`RUNID`= '' AND `SUBMITNR`= '' AND `ORDERNR`='' AND `PROGRAMM`='' AND `RUNID`= '' AND `SUBMITNR`= '' AND `ORDERNR`='' AND `PROGRAMM`='' AND
`TESTID`='' AND `UCCHECK`=''; `TESTID`='' AND `UCCHECK`='';
drop table t1; drop table t1;
#
# Bug#50402 Optimizer producing wrong results when using Index Merge on InnoDB
#
CREATE TABLE t1 (f1 INT, PRIMARY KEY (f1));
INSERT INTO t1 VALUES (2);
CREATE TABLE t2 (f1 INT, f2 INT, f3 char(1),
PRIMARY KEY (f1), KEY (f2), KEY (f3) );
INSERT INTO t2 VALUES (1, 1, 'h'), (2, 3, 'h'), (3, 2, ''), (4, 2, '');
SELECT t1.f1 FROM t1
WHERE (SELECT COUNT(*) FROM t2 WHERE t2.f3 = 'h' AND t2.f2 = t1.f1) = 0 AND t1.f1 = 2;
f1
2
EXPLAIN SELECT t1.f1 FROM t1
WHERE (SELECT COUNT(*) FROM t2 WHERE t2.f3 = 'h' AND t2.f2 = t1.f1) = 0 AND t1.f1 = 2;
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 const PRIMARY PRIMARY 4 const 1 Using index
2 DEPENDENT SUBQUERY t2 index_merge f2,f3 f3,f2 2,5 NULL 1 Using intersect(f3,f2); Using where; Using index
DROP TABLE t1,t2;
#
# BUG#56862/640419: Wrong result with sort_union index merge when one
# of the merged index scans is the primary key scan
#
CREATE TABLE t1 (
pk int NOT NULL AUTO_INCREMENT PRIMARY KEY,
a int,
b int,
INDEX idx(a))
ENGINE=INNODB;
INSERT INTO t1(a,b) VALUES
(11, 1100), (2, 200), (1, 100), (14, 1400), (5, 500),
(3, 300), (17, 1700), (4, 400), (12, 1200), (8, 800),
(6, 600), (18, 1800), (9, 900), (10, 1000), (7, 700),
(13, 1300), (15, 1500), (19, 1900), (16, 1600), (20, 2000);
INSERT INTO t1(a,b) SELECT a+20, b+2000 FROM t1;
INSERT INTO t1(a,b) SELECT a+40, b+4000 FROM t1;
INSERT INTO t1(a,b) SELECT a+80, b+8000 FROM t1;
INSERT INTO t1(a,b) SELECT a,b FROM t1;
INSERT INTO t1(a,b) SELECT a,b FROM t1;
INSERT INTO t1(a,b) SELECT a,b FROM t1;
INSERT INTO t1(a,b) SELECT a,b FROM t1;
INSERT INTO t1(a,b) SELECT a,b FROM t1;
INSERT INTO t1(a,b) SELECT a,b FROM t1;
INSERT INTO t1(a,b) SELECT a,b FROM t1;
INSERT INTO t1(a,b) SELECT a,b FROM t1;
INSERT INTO t1(a,b) SELECT a,b FROM t1;
INSERT INTO t1(a,b) SELECT a,b FROM t1;
INSERT INTO t1 VALUES (1000000, 0, 0);
SET SESSION sort_buffer_size = 1024*36;
EXPLAIN
SELECT COUNT(*) FROM
(SELECT * FROM t1
WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
2 DERIVED t1 index_merge PRIMARY,idx idx,PRIMARY 5,4 NULL 11419 Using sort_union(idx,PRIMARY); Using where
SELECT COUNT(*) FROM
(SELECT * FROM t1
WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
COUNT(*)
6145
EXPLAIN
SELECT COUNT(*) FROM
(SELECT * FROM t1 IGNORE INDEX(idx)
WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY NULL NULL NULL NULL NULL NULL # Select tables optimized away
2 DERIVED t1 ALL PRIMARY NULL NULL NULL # Using where
SELECT COUNT(*) FROM
(SELECT * FROM t1 IGNORE INDEX(idx)
WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
COUNT(*)
6145
DROP TABLE t1;

View file

@ -1416,6 +1416,24 @@ WHERE
`TESTID`='' AND `UCCHECK`=''; `TESTID`='' AND `UCCHECK`='';
drop table t1; drop table t1;
# #
# Bug#50402 Optimizer producing wrong results when using Index Merge on InnoDB
#
CREATE TABLE t1 (f1 INT, PRIMARY KEY (f1));
INSERT INTO t1 VALUES (2);
CREATE TABLE t2 (f1 INT, f2 INT, f3 char(1),
PRIMARY KEY (f1), KEY (f2), KEY (f3) );
INSERT INTO t2 VALUES (1, 1, 'h'), (2, 3, 'h'), (3, 2, ''), (4, 2, '');
SELECT t1.f1 FROM t1
WHERE (SELECT COUNT(*) FROM t2 WHERE t2.f3 = 'h' AND t2.f2 = t1.f1) = 0 AND t1.f1 = 2;
f1
2
EXPLAIN SELECT t1.f1 FROM t1
WHERE (SELECT COUNT(*) FROM t2 WHERE t2.f3 = 'h' AND t2.f2 = t1.f1) = 0 AND t1.f1 = 2;
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 system PRIMARY NULL NULL NULL 1
2 DEPENDENT SUBQUERY t2 ref f2,f3 f2 5 1 Using where
DROP TABLE t1,t2;
#
# Generic @@optimizer_switch tests (move those into a separate file if # Generic @@optimizer_switch tests (move those into a separate file if
# we get another @@optimizer_switch user) # we get another @@optimizer_switch user)
# #

View file

@ -639,3 +639,18 @@ CREATE TABLE t2(f1 CHAR(1));
INSERT INTO t2 SELECT f1 FROM t1; INSERT INTO t2 SELECT f1 FROM t1;
DROP TABLE t1, t2; DROP TABLE t1, t2;
End of 5.0 tests. End of 5.0 tests.
#
# Bug#54106 assert in Protocol::end_statement,
# INSERT IGNORE ... SELECT ... UNION SELECT ...
#
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (a INT);
INSERT INTO t1 (a, a) VALUES (1, 1);
ERROR 42000: Column 'a' specified twice
INSERT IGNORE t1 (a, a) VALUES (1, 1);
ERROR 42000: Column 'a' specified twice
INSERT IGNORE t1 (a, a) SELECT 1,1;
ERROR 42000: Column 'a' specified twice
INSERT IGNORE t1 (a, a) SELECT 1,1 UNION SELECT 2,2;
ERROR 42000: Column 'a' specified twice
DROP TABLE t1;

View file

@ -1184,4 +1184,40 @@ NULL
NULL NULL
1 1
DROP TABLE t1, t2, mm1; DROP TABLE t1, t2, mm1;
#
# Bug #54468: crash after item's print() function when ordering/grouping
# by subquery
#
CREATE TABLE t1(a INT, b INT);
INSERT INTO t1 VALUES (), ();
SELECT 1 FROM t1
GROUP BY
GREATEST(t1.a,
(SELECT 1 FROM
(SELECT t1.b FROM t1,t1 t2
ORDER BY t1.a, t1.a LIMIT 1) AS d)
);
1
1
DROP TABLE t1;
#
# Bug #53544: Server hangs during JOIN query in stored procedure called
# twice in a row
#
CREATE TABLE t1(c INT);
INSERT INTO t1 VALUES (1), (2);
PREPARE stmt FROM "SELECT t2.c AS f1 FROM t1 LEFT JOIN
t1 t2 ON t1.c=t2.c RIGHT JOIN
t1 t3 ON t1.c=t3.c
GROUP BY f1;";
EXECUTE stmt;
f1
1
2
EXECUTE stmt;
f1
1
2
DEALLOCATE PREPARE stmt;
DROP TABLE t1;
End of 5.1 tests End of 5.1 tests

View file

@ -232,7 +232,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00 Using join buffer 1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00 Using join buffer
1 SIMPLE t8 ALL NULL NULL NULL NULL 2 100.00 1 SIMPLE t8 ALL NULL NULL NULL NULL 2 100.00
Warnings: Warnings:
Note 1003 select `test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b` from `test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t7`.`b` = `test`.`t8`.`b`) and (`test`.`t6`.`b` < 10))) where 1 Note 1003 select `test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b` from `test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t6`.`b` < 10) and (`test`.`t8`.`b` = `test`.`t7`.`b`))) where 1
SELECT t6.a,t6.b,t7.a,t7.b,t8.a,t8.b SELECT t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
FROM (t6, t7) FROM (t6, t7)
LEFT JOIN LEFT JOIN
@ -553,7 +553,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00 1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00
1 SIMPLE t8 ALL NULL NULL NULL NULL 2 100.00 1 SIMPLE t8 ALL NULL NULL NULL NULL 2 100.00
Warnings: Warnings:
Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) where ((`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`))) Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t3`.`a` = 1) and (`test`.`t4`.`b` = `test`.`t2`.`b`))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t6`.`b` < 10) and ((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t8`.`b` = `test`.`t5`.`b`))))) on(((`test`.`t6`.`b` >= 2) and (`test`.`t7`.`b` = `test`.`t5`.`b`)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and (((`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t5`.`b` = `test`.`t0`.`b`)) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) where ((`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)))
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b, SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
FROM t0,t1 FROM t0,t1
@ -649,7 +649,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t8 ALL NULL NULL NULL NULL 2 100.00 Using where 1 SIMPLE t8 ALL NULL NULL NULL NULL 2 100.00 Using where
1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer 1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer
Warnings: Warnings:
Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`))) Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t3`.`a` = 1) and (`test`.`t4`.`b` = `test`.`t2`.`b`))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t6`.`b` < 10) and ((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t8`.`b` = `test`.`t5`.`b`))))) on(((`test`.`t6`.`b` >= 2) and (`test`.`t7`.`b` = `test`.`t5`.`b`)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and (((`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t5`.`b` = `test`.`t0`.`b`)) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
SELECT t9.a,t9.b SELECT t9.a,t9.b
FROM t9; FROM t9;
a b a b
@ -840,7 +840,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00
1 SIMPLE t4 ALL NULL NULL NULL NULL 2 100.00 1 SIMPLE t4 ALL NULL NULL NULL NULL 2 100.00
Warnings: Warnings:
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b` from `test`.`t1` join `test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) where (`test`.`t1`.`a` <= 2) Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b` from `test`.`t1` join `test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t3`.`a` = 1) and (`test`.`t4`.`b` = `test`.`t2`.`b`))) where (`test`.`t1`.`a` <= 2)
CREATE INDEX idx_b ON t2(b); CREATE INDEX idx_b ON t2(b);
EXPLAIN EXTENDED EXPLAIN EXTENDED
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
@ -854,7 +854,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t2 ref idx_b idx_b 5 test.t3.b 2 100.00 1 SIMPLE t2 ref idx_b idx_b 5 test.t3.b 2 100.00
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00
Warnings: Warnings:
Note 1003 select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b` from `test`.`t3` join `test`.`t4` left join (`test`.`t1` join `test`.`t2`) on(((`test`.`t3`.`a` = 1) and (`test`.`t3`.`b` = `test`.`t2`.`b`) and (`test`.`t2`.`b` = `test`.`t4`.`b`))) where 1 Note 1003 select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b` from `test`.`t3` join `test`.`t4` left join (`test`.`t1` join `test`.`t2`) on(((`test`.`t3`.`a` = 1) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) and (`test`.`t2`.`b` = `test`.`t3`.`b`)))) where 1
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
FROM (t3,t4) FROM (t3,t4)
LEFT JOIN LEFT JOIN
@ -916,7 +916,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t8 ALL NULL NULL NULL NULL 2 100.00 Using where 1 SIMPLE t8 ALL NULL NULL NULL NULL 2 100.00 Using where
1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer 1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer
Warnings: Warnings:
Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`))) Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t3`.`a` = 1) and (`test`.`t4`.`b` = `test`.`t2`.`b`))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t6`.`b` < 10) and ((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t8`.`b` = `test`.`t5`.`b`))))) on(((`test`.`t6`.`b` >= 2) and (`test`.`t7`.`b` = `test`.`t5`.`b`)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and (((`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t5`.`b` = `test`.`t0`.`b`)) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
CREATE INDEX idx_b ON t4(b); CREATE INDEX idx_b ON t4(b);
CREATE INDEX idx_b ON t5(b); CREATE INDEX idx_b ON t5(b);
EXPLAIN EXTENDED EXPLAIN EXTENDED
@ -966,7 +966,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t8 ALL NULL NULL NULL NULL 2 100.00 Using where 1 SIMPLE t8 ALL NULL NULL NULL NULL 2 100.00 Using where
1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer 1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer
Warnings: Warnings:
Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`))) Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t3`.`a` = 1) and (`test`.`t4`.`b` = `test`.`t2`.`b`))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t6`.`b` < 10) and ((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t8`.`b` = `test`.`t5`.`b`))))) on(((`test`.`t6`.`b` >= 2) and (`test`.`t7`.`b` = `test`.`t5`.`b`)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and (((`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t5`.`b` = `test`.`t0`.`b`)) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
CREATE INDEX idx_b ON t8(b); CREATE INDEX idx_b ON t8(b);
EXPLAIN EXTENDED EXPLAIN EXTENDED
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b, SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
@ -1015,7 +1015,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t8 ref idx_b idx_b 5 test.t5.b 2 100.00 Using where 1 SIMPLE t8 ref idx_b idx_b 5 test.t5.b 2 100.00 Using where
1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer 1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer
Warnings: Warnings:
Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`))) Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t3`.`a` = 1) and (`test`.`t4`.`b` = `test`.`t2`.`b`))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t6`.`b` < 10) and ((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t8`.`b` = `test`.`t5`.`b`))))) on(((`test`.`t6`.`b` >= 2) and (`test`.`t7`.`b` = `test`.`t5`.`b`)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and (((`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t5`.`b` = `test`.`t0`.`b`)) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
CREATE INDEX idx_b ON t1(b); CREATE INDEX idx_b ON t1(b);
CREATE INDEX idx_a ON t0(a); CREATE INDEX idx_a ON t0(a);
EXPLAIN EXTENDED EXPLAIN EXTENDED
@ -1065,7 +1065,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t8 ref idx_b idx_b 5 test.t5.b 2 100.00 Using where 1 SIMPLE t8 ref idx_b idx_b 5 test.t5.b 2 100.00 Using where
1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer 1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer
Warnings: Warnings:
Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`))) Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t3`.`a` = 1) and (`test`.`t4`.`b` = `test`.`t2`.`b`))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t6`.`b` < 10) and ((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t8`.`b` = `test`.`t5`.`b`))))) on(((`test`.`t6`.`b` >= 2) and (`test`.`t7`.`b` = `test`.`t5`.`b`)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and (((`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t5`.`b` = `test`.`t0`.`b`)) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b, SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b
FROM t0,t1 FROM t0,t1
@ -1463,9 +1463,9 @@ join t5 on t5.a=t3.b) on t3.a=t2.b;
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 t2 ALL NULL NULL NULL NULL X 1 SIMPLE t2 ALL NULL NULL NULL NULL X
1 SIMPLE t3 ref a a 5 test.t2.b X 1 SIMPLE t3 ref a a 5 test.t2.b X
1 SIMPLE t4 ref a a 5 test.t3.b X
1 SIMPLE t6 ref a a 5 test.t4.b X
1 SIMPLE t5 ref a a 5 test.t3.b X 1 SIMPLE t5 ref a a 5 test.t3.b X
1 SIMPLE t4 ref a a 5 test.t5.a X
1 SIMPLE t6 ref a a 5 test.t4.b X
drop table t0, t1, t2, t3, t4, t5, t6, t7; drop table t0, t1, t2, t3, t4, t5, t6, t7;
create table t1 (a int); create table t1 (a int);
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
@ -1479,7 +1479,7 @@ on (t1.a = t2.a);
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 ALL NULL NULL NULL NULL 10 1 SIMPLE t1 ALL NULL NULL NULL NULL 10
1 SIMPLE t2 ref a a 5 test.t1.a 1 1 SIMPLE t2 ref a a 5 test.t1.a 1
1 SIMPLE t3 ref a a 5 test.t2.a 1 1 SIMPLE t3 ref a a 5 test.t1.a 1
drop table t1, t2, t3; drop table t1, t2, t3;
CREATE TABLE t1 (id int NOT NULL PRIMARY KEY, type varchar(10)); CREATE TABLE t1 (id int NOT NULL PRIMARY KEY, type varchar(10));
CREATE TABLE t2 (pid int NOT NULL PRIMARY KEY, type varchar(10)); CREATE TABLE t2 (pid int NOT NULL PRIMARY KEY, type varchar(10));
@ -1743,4 +1743,62 @@ ON t4.carrier = t1.carrier;
COUNT(*) COUNT(*)
6 6
DROP TABLE t1,t2,t3,t4,t5; DROP TABLE t1,t2,t3,t4,t5;
CREATE TABLE t1 (
pk int NOT NULL AUTO_INCREMENT PRIMARY KEY,
a int DEFAULT NULL,
KEY idx(a)
);
CREATE TABLE t2 (
pk int NOT NULL AUTO_INCREMENT PRIMARY KEY,
a int DEFAULT NULL,
KEY idx(a)
);
CREATE TABLE t3 (
pk int NOT NULL AUTO_INCREMENT PRIMARY KEY,
a int DEFAULT NULL,
KEY idx(a)
);
INSERT INTO t1 VALUES
(1,2), (2,7), (3,5), (4,7), (5,5), (6,NULL), (7,NULL), (8,9);
INSERT INTO t2 VALUES
(1,NULL), (4,2), (5,2), (3,4), (2,8);
INSERT INTO t3 VALUES
(1,9), (2,2), (3,5), (4,2), (5,7), (6,0), (7,5);
SELECT t1.pk, t1.a, t2.pk, t2.a,t3.pk, t3.a
FROM t1 LEFT JOIN (t2 LEFT JOIN t3 ON t3.a=t2.a) ON t2.a=t1.a;
pk a pk a pk a
1 2 4 2 2 2
1 2 4 2 4 2
1 2 5 2 2 2
1 2 5 2 4 2
2 7 NULL NULL NULL NULL
3 5 NULL NULL NULL NULL
4 7 NULL NULL NULL NULL
5 5 NULL NULL NULL NULL
6 NULL NULL NULL NULL NULL
7 NULL NULL NULL NULL NULL
8 9 NULL NULL NULL NULL
SELECT t1.pk, t1.a, t2.pk, t2.a,t3.pk, t3.a
FROM t1 LEFT JOIN (t2 LEFT JOIN t3 ON t3.a=t2.a) ON t2.a=t1.a
WHERE t2.pk IS NULL;
pk a pk a pk a
2 7 NULL NULL NULL NULL
3 5 NULL NULL NULL NULL
4 7 NULL NULL NULL NULL
5 5 NULL NULL NULL NULL
6 NULL NULL NULL NULL NULL
7 NULL NULL NULL NULL NULL
8 9 NULL NULL NULL NULL
SELECT t1.pk, t1.a, t2.pk, t2.a,t3.pk, t3.a
FROM t1 LEFT JOIN (t2 LEFT JOIN t3 ON t3.a=t2.a) ON t2.a=t1.a
WHERE t3.pk IS NULL;
pk a pk a pk a
2 7 NULL NULL NULL NULL
3 5 NULL NULL NULL NULL
4 7 NULL NULL NULL NULL
5 5 NULL NULL NULL NULL
6 NULL NULL NULL NULL NULL
7 NULL NULL NULL NULL NULL
8 9 NULL NULL NULL NULL
DROP TABLE t1, t2, t3;
End of 5.0 tests End of 5.0 tests

View file

@ -1397,4 +1397,115 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
Warnings: Warnings:
Note 1003 select straight_join `test`.`jt1`.`f1` AS `f1` from `test`.`t1` `jt6` left join (`test`.`t1` `jt3` join `test`.`t1` `jt4` left join `test`.`t1` `jt5` on(1) left join `test`.`t1` `jt2` on(1)) on((`test`.`jt6`.`f1` and 1)) left join `test`.`t1` `jt1` on(1) where 1 Note 1003 select straight_join `test`.`jt1`.`f1` AS `f1` from `test`.`t1` `jt6` left join (`test`.`t1` `jt3` join `test`.`t1` `jt4` left join `test`.`t1` `jt5` on(1) left join `test`.`t1` `jt2` on(1)) on((`test`.`jt6`.`f1` and 1)) left join `test`.`t1` `jt1` on(1) where 1
DROP TABLE t1; DROP TABLE t1;
#
# Bug#49600: outer join of two single-row tables with joining attributes
# evaluated to nulls
create table t1 (a int, b int);
create table t2 (a int, b int);
insert into t1 values (1, NULL);
insert into t2 values (2, NULL);
select * from t1 left join t2 on t1.b=t2.b;
a b a b
1 NULL NULL NULL
select * from t1 left join t2 on t1.b=t2.b where 1=1;
a b a b
1 NULL NULL NULL
drop table t1,t2;
#
# Bug#53161: outer join in the derived table is erroneously converted
# into an inner join for a query with a group by clause
#
create table t1 (pk int not null primary key, a int not null);
create table t2 like t1;
create table t3 like t1;
create table t4 (pk int not null primary key);
insert into t1 values (1000, 1), (1001, 1);
insert into t2 values (2000, 2), (2001, 2);
insert into t3 values (3000, 3), (3001, 2);
insert into t4 values (4000), (4001);
explain extended
select t2.pk,
(select t3.pk+if(isnull(t4.pk),0,t4.pk)
from t3 left join t4 on t4.pk=t3.pk
where t3.pk=t2.pk+1000 limit 1 ) as t
from t1,t2
where t2.pk=t1.pk+1000 and t1.pk>1000
group by t2.pk;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t1 index PRIMARY PRIMARY 4 NULL 2 100.00 Using where; Using index; Using temporary; Using filesort
1 PRIMARY t2 eq_ref PRIMARY PRIMARY 4 func 1 100.00 Using where; Using index
2 DEPENDENT SUBQUERY t3 eq_ref PRIMARY PRIMARY 4 func 1 100.00 Using where; Using index
2 DEPENDENT SUBQUERY t4 eq_ref PRIMARY PRIMARY 4 test.t3.pk 1 100.00 Using where; Using index
Warnings:
Note 1276 Field or reference 'test.t2.pk' of SELECT #2 was resolved in SELECT #1
Note 1003 select `test`.`t2`.`pk` AS `pk`,(select (`test`.`t3`.`pk` + if(isnull(`test`.`t4`.`pk`),0,`test`.`t4`.`pk`)) from `test`.`t3` left join `test`.`t4` on((`test`.`t4`.`pk` = `test`.`t3`.`pk`)) where (`test`.`t3`.`pk` = (`test`.`t2`.`pk` + 1000)) limit 1) AS `t` from `test`.`t1` join `test`.`t2` where ((`test`.`t2`.`pk` = (`test`.`t1`.`pk` + 1000)) and (`test`.`t1`.`pk` > 1000)) group by `test`.`t2`.`pk`
select t2.pk,
(select t3.pk+if(isnull(t4.pk),0,t4.pk)
from t3 left join t4 on t4.pk=t3.pk
where t3.pk=t2.pk+1000 limit 1 ) as t
from t1,t2
where t2.pk=t1.pk+1000 and t1.pk>1000
group by t2.pk;
pk t
2001 3001
drop table t1,t2,t3,t4;
#
# Bug#57024: Poor performance when conjunctive condition over the outer
# table is used in the on condition of an outer join
#
create table t1 (a int);
insert into t1 values (NULL), (NULL), (NULL), (NULL);
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 values (4), (2), (1), (3);
create table t2 like t1;
insert into t2 select if(t1.a is null, 10, t1.a) from t1;
create table t3 (a int, b int, index idx(a));
insert into t3 values (1, 100), (3, 301), (4, 402), (1, 102), (1, 101);
analyze table t1,t2,t3;
Table Op Msg_type Msg_text
test.t1 analyze status OK
test.t2 analyze status OK
test.t3 analyze status OK
flush status;
select sum(t3.b) from t1 left join t3 on t3.a=t1.a and t1.a is not null;
sum(t3.b)
1006
show status like "handler_read%";
Variable_name Value
Handler_read_first 0
Handler_read_key 4
Handler_read_next 5
Handler_read_prev 0
Handler_read_rnd 0
Handler_read_rnd_next 1048581
flush status;
select sum(t3.b) from t2 left join t3 on t3.a=t2.a and t2.a <> 10;
sum(t3.b)
1006
show status like "handler_read%";
Variable_name Value
Handler_read_first 0
Handler_read_key 4
Handler_read_next 5
Handler_read_prev 0
Handler_read_rnd 0
Handler_read_rnd_next 1048581
drop table t1,t2,t3;
End of 5.1 tests End of 5.1 tests

View file

@ -1574,7 +1574,7 @@ UNLOCK TABLES;
# #
# Trigger on parent # Trigger on parent
DELETE FROM t4 WHERE c1 = 4; DELETE FROM t4 WHERE c1 = 4;
CREATE TRIGGER t4_ai AFTER INSERT ON t4 FOR EACH ROW SET @a=1; CREATE TRIGGER t4_ai1 AFTER INSERT ON t4 FOR EACH ROW SET @a=1;
SET @a=0; SET @a=0;
INSERT INTO t4 VALUES (4); INSERT INTO t4 VALUES (4);
SELECT @a; SELECT @a;
@ -1586,10 +1586,13 @@ c1
2 2
3 3
4 4
DROP TRIGGER t4_ai; DROP TRIGGER t4_ai1;
CHECK TABLE t3;
Table Op Msg_type Msg_text
test.t3 check status OK
# Trigger on parent under LOCK TABLES # Trigger on parent under LOCK TABLES
LOCK TABLES t3 WRITE, t2 WRITE, t4 WRITE, t1 WRITE; LOCK TABLES t3 WRITE, t2 WRITE, t4 WRITE, t1 WRITE;
CREATE TRIGGER t4_ai AFTER INSERT ON t4 FOR EACH ROW SET @a=1; CREATE TRIGGER t4_ai2 AFTER INSERT ON t4 FOR EACH ROW SET @a=1;
SET @a=0; SET @a=0;
INSERT INTO t4 VALUES (4); INSERT INTO t4 VALUES (4);
SELECT @a; SELECT @a;
@ -1602,12 +1605,15 @@ c1
3 3
4 4
4 4
DROP TRIGGER t4_ai; DROP TRIGGER t4_ai2;
UNLOCK TABLES; UNLOCK TABLES;
CHECK TABLE t3;
Table Op Msg_type Msg_text
test.t3 check status OK
# #
# Trigger on child # Trigger on child
DELETE FROM t4 WHERE c1 = 4; DELETE FROM t4 WHERE c1 = 4;
CREATE TRIGGER t3_ai AFTER INSERT ON t3 FOR EACH ROW SET @a=1; CREATE TRIGGER t3_ai3 AFTER INSERT ON t3 FOR EACH ROW SET @a=1;
SET @a=0; SET @a=0;
INSERT INTO t4 VALUES (4); INSERT INTO t4 VALUES (4);
SELECT @a; SELECT @a;
@ -1624,10 +1630,13 @@ c1
3 3
4 4
33 33
DROP TRIGGER t3_ai; DROP TRIGGER t3_ai3;
CHECK TABLE t3;
Table Op Msg_type Msg_text
test.t3 check status OK
# Trigger on child under LOCK TABLES # Trigger on child under LOCK TABLES
LOCK TABLES t3 WRITE, t2 WRITE, t4 WRITE, t1 WRITE; LOCK TABLES t3 WRITE, t2 WRITE, t4 WRITE, t1 WRITE;
CREATE TRIGGER t3_ai AFTER INSERT ON t3 FOR EACH ROW SET @a=1; CREATE TRIGGER t3_ai4 AFTER INSERT ON t3 FOR EACH ROW SET @a=1;
SET @a=0; SET @a=0;
INSERT INTO t4 VALUES (4); INSERT INTO t4 VALUES (4);
SELECT @a; SELECT @a;
@ -1647,11 +1656,17 @@ c1
33 33
33 33
DELETE FROM t4 WHERE c1 = 33; DELETE FROM t4 WHERE c1 = 33;
DROP TRIGGER t3_ai; DROP TRIGGER t3_ai4;
CHECK TABLE t3;
Table Op Msg_type Msg_text
test.t3 check status OK
# #
# Trigger with table use on child # Trigger with table use on child
DELETE FROM t4 WHERE c1 = 4; DELETE FROM t4 WHERE c1 = 4;
CREATE TRIGGER t3_ai AFTER INSERT ON t3 FOR EACH ROW INSERT INTO t2 VALUES(22); CREATE TRIGGER t3_ai5 AFTER INSERT ON t3 FOR EACH ROW INSERT INTO t2 VALUES(22);
SELECT COUNT(*) FROM t2;
COUNT(*)
1
INSERT INTO t4 VALUES (4); INSERT INTO t4 VALUES (4);
SELECT * FROM t4 ORDER BY c1; SELECT * FROM t4 ORDER BY c1;
c1 c1
@ -1670,10 +1685,15 @@ c1
33 33
DELETE FROM t4 WHERE c1 = 22; DELETE FROM t4 WHERE c1 = 22;
DELETE FROM t4 WHERE c1 = 33; DELETE FROM t4 WHERE c1 = 33;
DROP TRIGGER t3_ai; DROP TRIGGER t3_ai5;
UNLOCK TABLES;
CHECK TABLE t2,t3;
Table Op Msg_type Msg_text
test.t2 check status OK
test.t3 check status OK
# Trigger with table use on child under LOCK TABLES # Trigger with table use on child under LOCK TABLES
LOCK TABLES t3 WRITE, t2 WRITE, t4 WRITE, t1 WRITE; LOCK TABLES t3 WRITE, t2 WRITE, t4 WRITE, t1 WRITE;
CREATE TRIGGER t3_ai AFTER INSERT ON t3 FOR EACH ROW INSERT INTO t2 VALUES(22); CREATE TRIGGER t3_ai6 AFTER INSERT ON t3 FOR EACH ROW INSERT INTO t2 VALUES(22);
INSERT INTO t4 VALUES (4); INSERT INTO t4 VALUES (4);
SELECT * FROM t4 ORDER BY c1; SELECT * FROM t4 ORDER BY c1;
c1 c1
@ -1692,10 +1712,44 @@ c1
4 4
22 22
33 33
DROP TRIGGER t3_ai; DROP TRIGGER t3_ai6;
UNLOCK TABLES;
check table t2,t3,t4;
Table Op Msg_type Msg_text
test.t2 check status OK
test.t3 check status OK
test.t4 check status OK
DELETE FROM t4 WHERE c1 = 22; DELETE FROM t4 WHERE c1 = 22;
DELETE FROM t4 WHERE c1 = 33; DELETE FROM t4 WHERE c1 = 33;
# Trigger with table use on child under different LOCK TABLES
DELETE FROM t4 WHERE c1 = 4;
LOCK TABLES t4 WRITE,t3 WRITE, t2 WRITE, t1 WRITE;
CREATE TRIGGER t3_ai7 AFTER INSERT ON t3 FOR EACH ROW INSERT INTO t2 VALUES(22);
INSERT INTO t4 VALUES (4);
SELECT * FROM t4 ORDER BY c1;
c1
1
2
3
4
INSERT INTO t3 VALUES (33);
SELECT * FROM t4 ORDER BY c1;
c1
1
2
3
4
22
33
DROP TRIGGER t3_ai7;
UNLOCK TABLES; UNLOCK TABLES;
check table t2,t3,t4;
Table Op Msg_type Msg_text
test.t2 check status OK
test.t3 check status OK
test.t4 check status OK
DELETE FROM t4 WHERE c1 = 22;
DELETE FROM t4 WHERE c1 = 33;
# #
# Repair # Repair
# #
@ -1711,7 +1765,6 @@ c1
2 2
3 3
4 4
4
LOCK TABLES t3 WRITE, t2 WRITE, t4 WRITE, t1 WRITE; LOCK TABLES t3 WRITE, t2 WRITE, t4 WRITE, t1 WRITE;
REPAIR TABLE t4; REPAIR TABLE t4;
Table Op Msg_type Msg_text Table Op Msg_type Msg_text
@ -1725,7 +1778,6 @@ c1
2 2
3 3
4 4
4
UNLOCK TABLES; UNLOCK TABLES;
# #
# Optimize # Optimize
@ -1742,7 +1794,6 @@ c1
2 2
3 3
4 4
4
LOCK TABLES t3 WRITE, t2 WRITE, t4 WRITE, t1 WRITE; LOCK TABLES t3 WRITE, t2 WRITE, t4 WRITE, t1 WRITE;
OPTIMIZE TABLE t4; OPTIMIZE TABLE t4;
Table Op Msg_type Msg_text Table Op Msg_type Msg_text
@ -1756,14 +1807,13 @@ c1
2 2
3 3
4 4
4
UNLOCK TABLES; UNLOCK TABLES;
# #
# Checksum # Checksum
# #
CHECKSUM TABLE t4; CHECKSUM TABLE t4;
Table Checksum Table Checksum
test.t4 46622073 test.t4 149057747
CHECKSUM TABLE t2; CHECKSUM TABLE t2;
Table Checksum Table Checksum
test.t2 3700403066 test.t2 3700403066
@ -1773,11 +1823,10 @@ c1
2 2
3 3
4 4
4
LOCK TABLES t3 WRITE, t2 WRITE, t4 WRITE, t1 WRITE; LOCK TABLES t3 WRITE, t2 WRITE, t4 WRITE, t1 WRITE;
CHECKSUM TABLE t4; CHECKSUM TABLE t4;
Table Checksum Table Checksum
test.t4 46622073 test.t4 149057747
CHECKSUM TABLE t2; CHECKSUM TABLE t2;
Table Checksum Table Checksum
test.t2 3700403066 test.t2 3700403066
@ -1787,7 +1836,6 @@ c1
2 2
3 3
4 4
4
UNLOCK TABLES; UNLOCK TABLES;
# #
# Insert delayed # Insert delayed
@ -1801,7 +1849,6 @@ c1
2 2
3 3
4 4
4
33 33
LOCK TABLES t3 WRITE, t2 WRITE, t4 WRITE, t1 WRITE; LOCK TABLES t3 WRITE, t2 WRITE, t4 WRITE, t1 WRITE;
INSERT DELAYED INTO t4 VALUES(444); INSERT DELAYED INTO t4 VALUES(444);
@ -1814,7 +1861,6 @@ c1
2 2
3 3
4 4
4
33 33
UNLOCK TABLES; UNLOCK TABLES;
DROP TABLE t1, t2, t3, t4; DROP TABLE t1, t2, t3, t4;
@ -2250,4 +2296,45 @@ t2 WHERE b SOUNDS LIKE e AND d = 1;
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 NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
DROP TABLE t2, t1; DROP TABLE t2, t1;
#
# Bug#46339 - crash on REPAIR TABLE merge table USE_FRM
#
DROP TABLE IF EXISTS m1, t1;
CREATE TABLE t1 (c1 INT) ENGINE=MYISAM;
CREATE TABLE m1 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1) INSERT_METHOD=LAST;
LOCK TABLE m1 READ;
REPAIR TABLE m1 USE_FRM;
Table Op Msg_type Msg_text
test.m1 repair note The storage engine for the table doesn't support repair
UNLOCK TABLES;
REPAIR TABLE m1 USE_FRM;
Table Op Msg_type Msg_text
test.m1 repair note The storage engine for the table doesn't support repair
DROP TABLE m1,t1;
CREATE TABLE m1 (f1 BIGINT) ENGINE=MRG_MyISAM UNION(t1);
REPAIR TABLE m1 USE_FRM;
Table Op Msg_type Msg_text
test.m1 repair Error Can't open table
test.m1 repair error Corrupt
CREATE TABLE t1 (f1 BIGINT) ENGINE = MyISAM;
REPAIR TABLE m1 USE_FRM;
Table Op Msg_type Msg_text
test.m1 repair note The storage engine for the table doesn't support repair
REPAIR TABLE m1;
Table Op Msg_type Msg_text
test.m1 repair note The storage engine for the table doesn't support repair
DROP TABLE m1, t1;
CREATE TEMPORARY TABLE m1 (f1 BIGINT) ENGINE=MRG_MyISAM UNION(t1);
REPAIR TABLE m1 USE_FRM;
Table Op Msg_type Msg_text
test.m1 repair Error Table 'test.m1' doesn't exist
test.m1 repair error Corrupt
CREATE TEMPORARY TABLE t1 (f1 BIGINT) ENGINE=MyISAM;
REPAIR TABLE m1 USE_FRM;
Table Op Msg_type Msg_text
m1 repair error Cannot repair temporary table from .frm file
REPAIR TABLE m1;
Table Op Msg_type Msg_text
test.m1 repair note The storage engine for the table doesn't support repair
DROP TABLE m1, t1;
End of 5.1 tests End of 5.1 tests

View file

@ -0,0 +1,24 @@
set global storage_engine=myisam;
set session storage_engine=myisam;
drop table if exists crashed,t2,t3,t4;
SET @orig_debug=@@debug;
CREATE TABLE crashed (c1 INT);
CREATE TABLE t2 (c1 INT);
CREATE TABLE t3 (c1 INT);
CREATE TABLE t4 (c1 INT) ENGINE=MRG_MYISAM UNION=(crashed,t2,t3) INSERT_METHOD=LAST;
INSERT INTO crashed VALUES (10);
INSERT INTO t2 VALUES (20);
INSERT INTO t3 VALUES (30);
LOCK TABLES t3 WRITE, t2 WRITE, t4 WRITE, crashed WRITE;
SET GLOBAL debug="+d,*,myisam_pretend_crashed_table_on_open";
CREATE TRIGGER t1_ai AFTER INSERT ON crashed FOR EACH ROW INSERT INTO t2 VALUES(29);
SET GLOBAL debug=@orig_debug;
INSERT INTO t4 VALUES (39);
ERROR HY000: Table 't4' was not locked with LOCK TABLES
INSERT INTO crashed VALUES (11);
ERROR HY000: Table 'crashed' was not locked with LOCK TABLES
INSERT INTO t2 VALUES (21);
INSERT INTO t3 VALUES (31);
UNLOCK TABLES;
DROP TRIGGER t1_ai;
DROP TABLE t4,crashed,t2,t3;

View file

@ -639,4 +639,24 @@ SET SESSION sql_safe_updates = 1;
UPDATE IGNORE t1, t1 t1a SET t1.a = 1 WHERE t1a.a = 1; UPDATE IGNORE t1, t1 t1a SET t1.a = 1 WHERE t1a.a = 1;
ERROR HY000: You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column ERROR HY000: You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column
DROP TABLE t1; DROP TABLE t1;
#
# Bug#54543: update ignore with incorrect subquery leads to assertion
# failure: inited==INDEX
#
SET SESSION sql_safe_updates = 0;
CREATE TABLE t1 ( a INT );
INSERT INTO t1 VALUES (1), (2);
CREATE TABLE t2 ( a INT );
INSERT INTO t2 VALUES (1), (2);
CREATE TABLE t3 ( a INT );
INSERT INTO t3 VALUES (1), (2);
# Should not crash
UPDATE IGNORE
( SELECT ( SELECT COUNT(*) FROM t1 GROUP BY a, @v ) a FROM t2 ) x, t3
SET t3.a = 0;
Warnings:
Error 1242 Subquery returns more than 1 row
Error 1242 Subquery returns more than 1 row
DROP TABLE t1, t2, t3;
SET SESSION sql_safe_updates = DEFAULT;
end of tests end of tests

View file

@ -1,3 +1,4 @@
call mtr.add_suppression("@003f.frm' \\(errno: 22\\)");
# Bug#37938 Test "mysqldump" lacks various insert statements # Bug#37938 Test "mysqldump" lacks various insert statements
# Turn off concurrent inserts to avoid random errors # Turn off concurrent inserts to avoid random errors
# NOTE: We reset the variable back to saved value at the end of test # NOTE: We reset the variable back to saved value at the end of test

View file

@ -178,6 +178,9 @@ mysqltest: At line 1: End of line junk detected: "disconnect default # comment
" "
mysqltest: At line 1: Extra delimiter ";" found mysqltest: At line 1: Extra delimiter ";" found
mysqltest: At line 1: Extra delimiter ";" found mysqltest: At line 1: Extra delimiter ";" found
mysqltest: At line 1: Spurious text after `query` expression
mysqltest: At line 1: Spurious text after `query` expression
mysqltest: At line 2: Spurious text after `query` expression
mysqltest: At line 1: Missing argument(s) to 'error' mysqltest: At line 1: Missing argument(s) to 'error'
mysqltest: At line 1: Missing argument(s) to 'error' mysqltest: At line 1: Missing argument(s) to 'error'
mysqltest: At line 1: The sqlstate definition must start with an uppercase S mysqltest: At line 1: The sqlstate definition must start with an uppercase S
@ -263,6 +266,9 @@ a long \$where variable content
banana = banana banana = banana
Not a banana: ba\$cat\$cat Not a banana: ba\$cat\$cat
with\`some"escaped\'quotes
with\`some"escaped\'quotes
single'tick`backtick
mysqltest: At line 1: Missing arguments to let mysqltest: At line 1: Missing arguments to let
mysqltest: At line 1: Missing variable name in let mysqltest: At line 1: Missing variable name in let
mysqltest: At line 1: Missing assignment operator in let mysqltest: At line 1: Missing assignment operator in let
@ -326,6 +332,7 @@ outer=2 ifval=0
outer=1 ifval=1 outer=1 ifval=1
here is the sourced script here is the sourced script
ERROR 42S02: Table 'test.nowhere' doesn't exist ERROR 42S02: Table 'test.nowhere' doesn't exist
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 'else' at line 1
In loop In loop
here is the sourced script here is the sourced script
@ -393,6 +400,9 @@ true-inner again
true-outer true-outer
Counter is greater than 0, (counter=10) Counter is greater than 0, (counter=10)
Counter is not 0, (counter=0) Counter is not 0, (counter=0)
Counter is true, (counter=alpha)
Beta is true
while with string, only once
1 1
Testing while with not Testing while with not
mysqltest: In included file "MYSQLTEST_VARDIR/tmp/mysqltest_while.inc": At line 64: Nesting too deeply mysqltest: In included file "MYSQLTEST_VARDIR/tmp/mysqltest_while.inc": At line 64: Nesting too deeply
@ -443,13 +453,16 @@ mysqltest: At line 1: Missing required argument 'host' to command 'connect'
mysqltest: At line 1: query 'connect con2,localhost,root,,illegal_db' failed: 1049: Unknown database 'illegal_db' mysqltest: At line 1: query 'connect con2,localhost,root,,illegal_db' failed: 1049: Unknown database 'illegal_db'
mysqltest: At line 1: Illegal argument for port: 'illegal_port' mysqltest: At line 1: Illegal argument for port: 'illegal_port'
mysqltest: At line 1: Illegal option to connect: SMTP mysqltest: At line 1: Illegal option to connect: SMTP
OK 200 connects succeeded
mysqltest: The test didn't produce any output
mysqltest: In included file "MYSQLTEST_VARDIR/tmp/mysqltest.sql": At line 3: connection 'test_con1' not found in connection pool mysqltest: In included file "MYSQLTEST_VARDIR/tmp/mysqltest.sql": At line 3: connection 'test_con1' not found in connection pool
mysqltest: In included file "MYSQLTEST_VARDIR/tmp/mysqltest.sql": At line 2: Connection test_con1 already exists mysqltest: In included file "MYSQLTEST_VARDIR/tmp/mysqltest.sql": At line 2: Connection test_con1 already exists
connect(localhost,root,,test,MASTER_PORT,MASTER_SOCKET);
show tables; show tables;
ERROR 3D000: No database selected ERROR 3D000: No database selected
connect con1,localhost,root,,;
connection default;
connection con1;
disconnect con1;
connection default;
Output from mysqltest-x.inc Output from mysqltest-x.inc
Output from mysqltest-x.inc Output from mysqltest-x.inc
Output from mysqltest-x.inc Output from mysqltest-x.inc
@ -573,7 +586,7 @@ if things work as expected
Some data Some data
for cat_file command for cat_file command
of mysqltest of mysqltest
mysqltest: At line 1: Failed to open file 'non_existing_file' mysqltest: At line 1: command "cat_file" failed with error 1
mysqltest: At line 1: Missing required argument 'filename' to command 'file_exists' mysqltest: At line 1: Missing required argument 'filename' to command 'file_exists'
mysqltest: At line 1: Missing required argument 'from_file' to command 'copy_file' mysqltest: At line 1: Missing required argument 'from_file' to command 'copy_file'
mysqltest: At line 1: Missing required argument 'to_file' to command 'copy_file' mysqltest: At line 1: Missing required argument 'to_file' to command 'copy_file'

View file

@ -1617,4 +1617,25 @@ id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range a a 5 NULL 2 Using where; Using temporary; Using filesort 1 SIMPLE t1 range a a 5 NULL 2 Using where; Using temporary; Using filesort
1 SIMPLE t2 ALL NULL NULL NULL NULL 10 Using join buffer 1 SIMPLE t2 ALL NULL NULL NULL NULL 10 Using join buffer
DROP TABLE t1, t2; DROP TABLE t1, t2;
#
# Bug #50394: Regression in EXPLAIN with index scan, LIMIT, GROUP BY and
# ORDER BY computed col
#
CREATE TABLE t1 ( a INT NOT NULL, b INT NOT NULL, KEY( a, b ) );
INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5);
INSERT INTO t1 SELECT a + 5, b + 5 FROM t1;
CREATE TABLE t2( a INT PRIMARY KEY, b INT );
INSERT INTO t2 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5);
INSERT INTO t2 SELECT a + 5, b + 5 FROM t2;
EXPLAIN
SELECT count(*) AS c, t1.a
FROM t1 JOIN t2 ON t1.b = t2.a
WHERE t2.b = 1
GROUP BY t1.a
ORDER by c
LIMIT 2;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 index NULL a 8 NULL 10 Using index; Using temporary; Using filesort
1 SIMPLE t2 eq_ref PRIMARY PRIMARY 4 test.t1.b 1 Using where
DROP TABLE t1, t2;
End of 5.1 tests End of 5.1 tests

View file

@ -1,4 +1,44 @@
drop table if exists t1, t2; drop table if exists t1, t2;
#
# Bug#57113: ha_partition::extra(ha_extra_function):
# Assertion `m_extra_cache' failed
CREATE TABLE t1
(id INT NOT NULL PRIMARY KEY,
name VARCHAR(16) NOT NULL,
year YEAR,
INDEX name (name(8))
)
PARTITION BY HASH(id) PARTITIONS 2;
INSERT INTO t1 VALUES ( 1, 'FooBar', '1924' );
CREATE TABLE t2 (id INT);
INSERT INTO t2 VALUES (1),(2);
UPDATE t1, t2 SET t1.year = '1955' WHERE t1.name = 'FooBar';
DROP TABLE t1, t2;
#
# Bug#55458: Partitioned MyISAM table gets crashed by multi-table update
#
CREATE TABLE t1 (
`id` int NOT NULL,
`user_num` int DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM CHARSET=latin1;
INSERT INTO t1 VALUES (1,8601);
INSERT INTO t1 VALUES (2,8601);
INSERT INTO t1 VALUES (3,8601);
INSERT INTO t1 VALUES (4,8601);
CREATE TABLE t2 (
`id` int(11) NOT NULL,
`user_num` int DEFAULT NULL,
`name` varchar(64) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM CHARSET=latin1
PARTITION BY HASH (id)
PARTITIONS 2;
INSERT INTO t2 VALUES (1,8601,'John');
INSERT INTO t2 VALUES (2,8601,'JS');
INSERT INTO t2 VALUES (3,8601,'John S');
UPDATE t1, t2 SET t2.name = 'John Smith' WHERE t1.user_num = t2.user_num;
DROP TABLE t1, t2;
CREATE TABLE t1 (a INT, b INT) CREATE TABLE t1 (a INT, b INT)
PARTITION BY LIST (a) PARTITION BY LIST (a)
SUBPARTITION BY HASH (b) SUBPARTITION BY HASH (b)
@ -1382,7 +1422,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 4 Using where 1 SIMPLE t1 pn,p2 ALL NULL NULL NULL NULL 2 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

@ -0,0 +1,13 @@
DROP TABLE IF EXISTS t1;
#
# Bug#51851: Server with SBR locks mutex twice on LOAD DATA into
# partitioned MyISAM table
CREATE TABLE t1
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name TINYBLOB NOT NULL,
modified TIMESTAMP DEFAULT '0000-00-00 00:00:00',
INDEX namelocs (name(255))) ENGINE = MyISAM
PARTITION BY HASH(id) PARTITIONS 2;
LOAD DATA LOCAL INFILE 'init_file.txt'
INTO TABLE t1 (name);
DROP TABLE t1;

View file

@ -1008,4 +1008,14 @@ PARTITION p VALUES LESS THAN (1219089600),
PARTITION pmax VALUES LESS THAN MAXVALUE); PARTITION pmax VALUES LESS THAN MAXVALUE);
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
DROP TABLE old; DROP TABLE old;
#
# Bug #56709: Memory leaks at running the 5.1 test suite
#
CREATE TABLE t1 (a TIMESTAMP NOT NULL PRIMARY KEY);
ALTER TABLE t1
PARTITION BY RANGE (EXTRACT(DAY FROM a)) (
PARTITION p VALUES LESS THAN (18),
PARTITION pmax VALUES LESS THAN MAXVALUE);
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
DROP TABLE t1;
End of 5.1 tests End of 5.1 tests

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 9 Using where 1 SIMPLE t1 p0,p2,p3 ALL NULL NULL NULL NULL 7 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 9 Using where 1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 3 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 9 Using where 1 SIMPLE t1 p0,p1 ALL NULL NULL NULL NULL 5 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 9 Using where 1 SIMPLE t1 p1,p2 ALL NULL NULL NULL NULL 4 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 9 Using where 1 SIMPLE t1 p1 ALL NULL NULL NULL NULL 2 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 9 Using where 1 SIMPLE t1 p2,p3 ALL NULL NULL NULL NULL 4 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

@ -22,31 +22,31 @@ insert INTO t1 VALUES (110);
ERROR HY000: Table has no partition for value 110 ERROR HY000: Table has no partition for value 110
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > 90; EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > 90;
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 ALL NULL NULL NULL NULL 5 Using where 1 SIMPLE t1 ALL NULL NULL NULL NULL 0 Using where
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= 90; EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= 90;
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 ALL NULL NULL NULL NULL 5 Using where 1 SIMPLE t1 ALL NULL NULL NULL NULL 0 Using where
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = 90; EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = 90;
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 ALL NULL NULL NULL NULL 5 Using where 1 SIMPLE t1 ALL NULL NULL NULL NULL 0 Using where
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = 89; EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = 89;
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 p90 ALL NULL NULL NULL NULL 7 Using where 1 SIMPLE t1 p90 ALL NULL NULL NULL NULL 3 Using where
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= 89; EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= 89;
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 p90 ALL NULL NULL NULL NULL 7 Using where 1 SIMPLE t1 p90 ALL NULL NULL NULL NULL 3 Using where
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > 89; EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > 89;
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 ALL NULL NULL NULL NULL 7 Using where 1 SIMPLE t1 ALL NULL NULL NULL NULL 0 Using where
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = 100; EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = 100;
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 ALL NULL NULL NULL NULL 7 Using where 1 SIMPLE t1 ALL NULL NULL NULL NULL 0 Using where
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= 100; EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= 100;
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 ALL NULL NULL NULL NULL 7 Using where 1 SIMPLE t1 ALL NULL NULL NULL NULL 0 Using where
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > 100; EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > 100;
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 ALL NULL NULL NULL NULL 7 Using where 1 SIMPLE t1 ALL NULL NULL NULL NULL 0 Using where
DROP TABLE t1; DROP TABLE t1;
# #
# Bug#50104: Partitioned table with just 1 partion works with fk # Bug#50104: Partitioned table with just 1 partion works with fk

View file

@ -0,0 +1,16 @@
DROP TABLE IF EXISTS t1;
#
# Bug#46086: crash when dropping a partitioned table and
# the original engine is disabled
# Copy a .frm and .par file which was created with:
# create table `t1` (`id` int primary key) engine=blackhole
# partition by key () partitions 1;
SHOW TABLES;
Tables_in_test
t1
SHOW CREATE TABLE t1;
ERROR HY000: Incorrect information in file: './test/t1.frm'
DROP TABLE t1;
ERROR 42S02: Unknown table 't1'
t1.frm
t1.par

File diff suppressed because it is too large Load diff

View file

@ -73,13 +73,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 3 Using where 1 SIMPLE t1 p0,p1 ALL NULL NULL NULL NULL 2 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 3 Using where 1 SIMPLE t1 pnull,p0 ALL NULL NULL NULL NULL 2 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
@ -112,16 +112,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 6 Using where 1 SIMPLE t1 pnull_pnullsp0,pnull_pnullsp1 ALL NULL NULL NULL NULL 2 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 6 Using where 1 SIMPLE t1 p0_p0sp0,p0_p0sp1,p1_p1sp0,p1_p1sp1 ALL NULL NULL NULL NULL 4 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 6 Using where 1 SIMPLE t1 pnull_pnullsp0,pnull_pnullsp1 ALL NULL NULL NULL NULL 2 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 6 Using where 1 SIMPLE t1 pnull_pnullsp0,pnull_pnullsp1,p0_p0sp0,p0_p0sp1 ALL NULL NULL NULL NULL 4 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
@ -808,3 +808,47 @@ select sum(count) from t2 ch where ch.defid in (50,52) and ch.day between 200703
sum(count) sum(count)
579 579
drop table t1, t2; drop table t1, t2;
#
# Bug#50939: Loose Index Scan unduly relies on engine to remember range
# endpoints
#
CREATE TABLE t1 (
a INT,
b INT,
KEY ( a, b )
) PARTITION BY HASH (a) PARTITIONS 1;
CREATE TABLE t2 (
a INT,
b INT,
KEY ( a, b )
);
INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5);
INSERT INTO t1 SELECT a + 5, b + 5 FROM t1;
INSERT INTO t1 SELECT a + 10, b + 10 FROM t1;
INSERT INTO t1 SELECT a + 20, b + 20 FROM t1;
INSERT INTO t1 SELECT a + 40, b + 40 FROM t1;
INSERT INTO t2 SELECT * FROM t1;
# plans should be identical
EXPLAIN SELECT a, MAX(b) FROM t1 WHERE a IN (10,100) GROUP BY a;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range a a 5 NULL 1 Using where; Using index for group-by
EXPLAIN SELECT a, MAX(b) FROM t2 WHERE a IN (10,100) GROUP BY a;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t2 range a a 5 NULL 2 Using where; Using index for group-by
FLUSH status;
SELECT a, MAX(b) FROM t1 WHERE a IN (10, 100) GROUP BY a;
a MAX(b)
10 10
# Should be no more than 4 reads.
SHOW status LIKE 'handler_read_key';
Variable_name Value
Handler_read_key 4
FLUSH status;
SELECT a, MAX(b) FROM t2 WHERE a IN (10, 100) GROUP BY a;
a MAX(b)
10 10
# Should be no more than 4 reads.
SHOW status LIKE 'handler_read_key';
Variable_name Value
Handler_read_key 4
DROP TABLE t1, t2;

View file

@ -3001,4 +3001,42 @@ EXECUTE stmt;
1 1
DEALLOCATE PREPARE stmt; DEALLOCATE PREPARE stmt;
DROP TABLE t1; DROP TABLE t1;
#
# Bug#54494 crash with explain extended and prepared statements
#
CREATE TABLE t1(a INT);
INSERT INTO t1 VALUES (1),(2);
PREPARE stmt FROM 'EXPLAIN EXTENDED SELECT 1 FROM t1 RIGHT JOIN t1 t2 ON 1';
EXECUTE stmt;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t2 ALL NULL NULL NULL NULL 2 100.00
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00
Warnings:
Note 1003 select 1 AS `1` from `test`.`t1` `t2` left join `test`.`t1` on(1) where 1
EXECUTE stmt;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t2 ALL NULL NULL NULL NULL 2 100.00
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00
Warnings:
Note 1003 select 1 AS `1` from `test`.`t1` `t2` left join `test`.`t1` on(1) where 1
DEALLOCATE PREPARE stmt;
DROP TABLE t1;
#
# Bug#54488 crash when using explain and prepared statements with subqueries
#
CREATE TABLE t1(f1 INT);
INSERT INTO t1 VALUES (1),(1);
PREPARE stmt FROM 'EXPLAIN SELECT 1 FROM t1 WHERE (SELECT (SELECT 1 FROM t1 GROUP BY f1))';
EXECUTE stmt;
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
3 SUBQUERY t1 ALL NULL NULL NULL NULL 2 Using temporary; Using filesort
EXECUTE stmt;
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
3 SUBQUERY t1 ALL NULL NULL NULL NULL 2 Using temporary; Using filesort
DEALLOCATE PREPARE stmt;
DROP TABLE t1;
End of 5.1 tests. End of 5.1 tests.

View file

@ -1929,26 +1929,26 @@ def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63 def @arg10 5 23 1 Y 32896 31 63
def @arg11 246 83 6 Y 128 30 63 def @arg11 246 83 6 Y 128 30 63
def @arg12 246 83 6 Y 128 30 63 def @arg12 246 83 6 Y 128 30 63
def @arg13 251 16777216 10 Y 128 31 63 def @arg13 250 16777215 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63 def @arg14 250 16777215 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 8 Y 128 31 63 def @arg16 250 16777215 8 Y 128 31 63
def @arg17 8 20 4 Y 32928 0 63 def @arg17 8 20 4 Y 32928 0 63
def @arg18 8 20 1 Y 32896 0 63 def @arg18 8 20 1 Y 32896 0 63
def @arg19 8 20 1 Y 32896 0 63 def @arg19 8 20 1 Y 32896 0 63
def @arg20 251 16777216 1 Y 0 31 8 def @arg20 250 16777215 1 Y 0 31 8
def @arg21 251 16777216 10 Y 0 31 8 def @arg21 250 16777215 10 Y 0 31 8
def @arg22 251 16777216 30 Y 0 31 8 def @arg22 250 16777215 30 Y 0 31 8
def @arg23 251 16777216 8 Y 128 31 63 def @arg23 250 16777215 8 Y 128 31 63
def @arg24 251 16777216 8 Y 0 31 8 def @arg24 250 16777215 8 Y 0 31 8
def @arg25 251 16777216 4 Y 128 31 63 def @arg25 250 16777215 4 Y 128 31 63
def @arg26 251 16777216 4 Y 0 31 8 def @arg26 250 16777215 4 Y 0 31 8
def @arg27 251 16777216 10 Y 128 31 63 def @arg27 250 16777215 10 Y 128 31 63
def @arg28 251 16777216 10 Y 0 31 8 def @arg28 250 16777215 10 Y 0 31 8
def @arg29 251 16777216 8 Y 128 31 63 def @arg29 250 16777215 8 Y 128 31 63
def @arg30 251 16777216 8 Y 0 31 8 def @arg30 250 16777215 8 Y 0 31 8
def @arg31 251 16777216 3 Y 0 31 8 def @arg31 250 16777215 3 Y 0 31 8
def @arg32 251 16777216 6 Y 0 31 8 def @arg32 250 16777215 6 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday
select @arg01:= c1, @arg02:= c2, @arg03:= c3, @arg04:= c4, select @arg01:= c1, @arg02:= c2, @arg03:= c3, @arg04:= c4,
@ -1976,26 +1976,26 @@ def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63 def @arg10 5 23 0 Y 32896 31 63
def @arg11 246 83 0 Y 128 30 63 def @arg11 246 83 0 Y 128 30 63
def @arg12 246 83 0 Y 128 30 63 def @arg12 246 83 0 Y 128 30 63
def @arg13 251 16777216 0 Y 128 31 63 def @arg13 250 16777215 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63 def @arg14 250 16777215 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 0 Y 128 31 63 def @arg16 250 16777215 0 Y 128 31 63
def @arg17 8 20 0 Y 32928 0 63 def @arg17 8 20 0 Y 32928 0 63
def @arg18 8 20 0 Y 32896 0 63 def @arg18 8 20 0 Y 32896 0 63
def @arg19 8 20 0 Y 32896 0 63 def @arg19 8 20 0 Y 32896 0 63
def @arg20 251 16777216 0 Y 0 31 8 def @arg20 250 16777215 0 Y 0 31 8
def @arg21 251 16777216 0 Y 0 31 8 def @arg21 250 16777215 0 Y 0 31 8
def @arg22 251 16777216 0 Y 0 31 8 def @arg22 250 16777215 0 Y 0 31 8
def @arg23 251 16777216 0 Y 128 31 63 def @arg23 250 16777215 0 Y 128 31 63
def @arg24 251 16777216 0 Y 0 31 8 def @arg24 250 16777215 0 Y 0 31 8
def @arg25 251 16777216 0 Y 128 31 63 def @arg25 250 16777215 0 Y 128 31 63
def @arg26 251 16777216 0 Y 0 31 8 def @arg26 250 16777215 0 Y 0 31 8
def @arg27 251 16777216 0 Y 128 31 63 def @arg27 250 16777215 0 Y 128 31 63
def @arg28 251 16777216 0 Y 0 31 8 def @arg28 250 16777215 0 Y 0 31 8
def @arg29 251 16777216 0 Y 128 31 63 def @arg29 250 16777215 0 Y 128 31 63
def @arg30 251 16777216 0 Y 0 31 8 def @arg30 250 16777215 0 Y 0 31 8
def @arg31 251 16777216 0 Y 0 31 8 def @arg31 250 16777215 0 Y 0 31 8
def @arg32 251 16777216 0 Y 0 31 8 def @arg32 250 16777215 0 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
prepare stmt1 from "select prepare stmt1 from "select
@ -2026,26 +2026,26 @@ def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63 def @arg10 5 23 1 Y 32896 31 63
def @arg11 246 83 6 Y 128 30 63 def @arg11 246 83 6 Y 128 30 63
def @arg12 246 83 6 Y 128 30 63 def @arg12 246 83 6 Y 128 30 63
def @arg13 251 16777216 10 Y 128 31 63 def @arg13 250 16777215 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63 def @arg14 250 16777215 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 8 Y 128 31 63 def @arg16 250 16777215 8 Y 128 31 63
def @arg17 8 20 4 Y 32928 0 63 def @arg17 8 20 4 Y 32928 0 63
def @arg18 8 20 1 Y 32896 0 63 def @arg18 8 20 1 Y 32896 0 63
def @arg19 8 20 1 Y 32896 0 63 def @arg19 8 20 1 Y 32896 0 63
def @arg20 251 16777216 1 Y 0 31 8 def @arg20 250 16777215 1 Y 0 31 8
def @arg21 251 16777216 10 Y 0 31 8 def @arg21 250 16777215 10 Y 0 31 8
def @arg22 251 16777216 30 Y 0 31 8 def @arg22 250 16777215 30 Y 0 31 8
def @arg23 251 16777216 8 Y 128 31 63 def @arg23 250 16777215 8 Y 128 31 63
def @arg24 251 16777216 8 Y 0 31 8 def @arg24 250 16777215 8 Y 0 31 8
def @arg25 251 16777216 4 Y 128 31 63 def @arg25 250 16777215 4 Y 128 31 63
def @arg26 251 16777216 4 Y 0 31 8 def @arg26 250 16777215 4 Y 0 31 8
def @arg27 251 16777216 10 Y 128 31 63 def @arg27 250 16777215 10 Y 128 31 63
def @arg28 251 16777216 10 Y 0 31 8 def @arg28 250 16777215 10 Y 0 31 8
def @arg29 251 16777216 8 Y 128 31 63 def @arg29 250 16777215 8 Y 128 31 63
def @arg30 251 16777216 8 Y 0 31 8 def @arg30 250 16777215 8 Y 0 31 8
def @arg31 251 16777216 3 Y 0 31 8 def @arg31 250 16777215 3 Y 0 31 8
def @arg32 251 16777216 6 Y 0 31 8 def @arg32 250 16777215 6 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday
set @my_key= 0 ; set @my_key= 0 ;
@ -2066,26 +2066,26 @@ def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63 def @arg10 5 23 0 Y 32896 31 63
def @arg11 246 83 0 Y 128 30 63 def @arg11 246 83 0 Y 128 30 63
def @arg12 246 83 0 Y 128 30 63 def @arg12 246 83 0 Y 128 30 63
def @arg13 251 16777216 0 Y 128 31 63 def @arg13 250 16777215 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63 def @arg14 250 16777215 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 0 Y 128 31 63 def @arg16 250 16777215 0 Y 128 31 63
def @arg17 8 20 0 Y 32928 0 63 def @arg17 8 20 0 Y 32928 0 63
def @arg18 8 20 0 Y 32896 0 63 def @arg18 8 20 0 Y 32896 0 63
def @arg19 8 20 0 Y 32896 0 63 def @arg19 8 20 0 Y 32896 0 63
def @arg20 251 16777216 0 Y 0 31 8 def @arg20 250 16777215 0 Y 0 31 8
def @arg21 251 16777216 0 Y 0 31 8 def @arg21 250 16777215 0 Y 0 31 8
def @arg22 251 16777216 0 Y 0 31 8 def @arg22 250 16777215 0 Y 0 31 8
def @arg23 251 16777216 0 Y 128 31 63 def @arg23 250 16777215 0 Y 128 31 63
def @arg24 251 16777216 0 Y 0 31 8 def @arg24 250 16777215 0 Y 0 31 8
def @arg25 251 16777216 0 Y 128 31 63 def @arg25 250 16777215 0 Y 128 31 63
def @arg26 251 16777216 0 Y 0 31 8 def @arg26 250 16777215 0 Y 0 31 8
def @arg27 251 16777216 0 Y 128 31 63 def @arg27 250 16777215 0 Y 128 31 63
def @arg28 251 16777216 0 Y 0 31 8 def @arg28 250 16777215 0 Y 0 31 8
def @arg29 251 16777216 0 Y 128 31 63 def @arg29 250 16777215 0 Y 128 31 63
def @arg30 251 16777216 0 Y 0 31 8 def @arg30 250 16777215 0 Y 0 31 8
def @arg31 251 16777216 0 Y 0 31 8 def @arg31 250 16777215 0 Y 0 31 8
def @arg32 251 16777216 0 Y 0 31 8 def @arg32 250 16777215 0 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
prepare stmt1 from "select ? := c1 from t9 where c1= 1" ; prepare stmt1 from "select ? := c1 from t9 where c1= 1" ;
@ -2114,26 +2114,26 @@ def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63 def @arg10 5 23 1 Y 32896 31 63
def @arg11 246 83 6 Y 128 30 63 def @arg11 246 83 6 Y 128 30 63
def @arg12 246 83 6 Y 128 30 63 def @arg12 246 83 6 Y 128 30 63
def @arg13 251 16777216 10 Y 128 31 63 def @arg13 250 16777215 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63 def @arg14 250 16777215 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 8 Y 128 31 63 def @arg16 250 16777215 8 Y 128 31 63
def @arg17 8 20 4 Y 32928 0 63 def @arg17 8 20 4 Y 32928 0 63
def @arg18 8 20 1 Y 32896 0 63 def @arg18 8 20 1 Y 32896 0 63
def @arg19 8 20 1 Y 32896 0 63 def @arg19 8 20 1 Y 32896 0 63
def @arg20 251 16777216 1 Y 0 31 8 def @arg20 250 16777215 1 Y 0 31 8
def @arg21 251 16777216 10 Y 0 31 8 def @arg21 250 16777215 10 Y 0 31 8
def @arg22 251 16777216 30 Y 0 31 8 def @arg22 250 16777215 30 Y 0 31 8
def @arg23 251 16777216 8 Y 128 31 63 def @arg23 250 16777215 8 Y 128 31 63
def @arg24 251 16777216 8 Y 0 31 8 def @arg24 250 16777215 8 Y 0 31 8
def @arg25 251 16777216 4 Y 128 31 63 def @arg25 250 16777215 4 Y 128 31 63
def @arg26 251 16777216 4 Y 0 31 8 def @arg26 250 16777215 4 Y 0 31 8
def @arg27 251 16777216 10 Y 128 31 63 def @arg27 250 16777215 10 Y 128 31 63
def @arg28 251 16777216 10 Y 0 31 8 def @arg28 250 16777215 10 Y 0 31 8
def @arg29 251 16777216 8 Y 128 31 63 def @arg29 250 16777215 8 Y 128 31 63
def @arg30 251 16777216 8 Y 0 31 8 def @arg30 250 16777215 8 Y 0 31 8
def @arg31 251 16777216 3 Y 0 31 8 def @arg31 250 16777215 3 Y 0 31 8
def @arg32 251 16777216 6 Y 0 31 8 def @arg32 250 16777215 6 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday
select c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, select c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12,
@ -2158,26 +2158,26 @@ def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63 def @arg10 5 23 0 Y 32896 31 63
def @arg11 246 83 0 Y 128 30 63 def @arg11 246 83 0 Y 128 30 63
def @arg12 246 83 0 Y 128 30 63 def @arg12 246 83 0 Y 128 30 63
def @arg13 251 16777216 0 Y 128 31 63 def @arg13 250 16777215 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63 def @arg14 250 16777215 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 0 Y 128 31 63 def @arg16 250 16777215 0 Y 128 31 63
def @arg17 8 20 0 Y 32928 0 63 def @arg17 8 20 0 Y 32928 0 63
def @arg18 8 20 0 Y 32896 0 63 def @arg18 8 20 0 Y 32896 0 63
def @arg19 8 20 0 Y 32896 0 63 def @arg19 8 20 0 Y 32896 0 63
def @arg20 251 16777216 0 Y 0 31 8 def @arg20 250 16777215 0 Y 0 31 8
def @arg21 251 16777216 0 Y 0 31 8 def @arg21 250 16777215 0 Y 0 31 8
def @arg22 251 16777216 0 Y 0 31 8 def @arg22 250 16777215 0 Y 0 31 8
def @arg23 251 16777216 0 Y 128 31 63 def @arg23 250 16777215 0 Y 128 31 63
def @arg24 251 16777216 0 Y 0 31 8 def @arg24 250 16777215 0 Y 0 31 8
def @arg25 251 16777216 0 Y 128 31 63 def @arg25 250 16777215 0 Y 128 31 63
def @arg26 251 16777216 0 Y 0 31 8 def @arg26 250 16777215 0 Y 0 31 8
def @arg27 251 16777216 0 Y 128 31 63 def @arg27 250 16777215 0 Y 128 31 63
def @arg28 251 16777216 0 Y 0 31 8 def @arg28 250 16777215 0 Y 0 31 8
def @arg29 251 16777216 0 Y 128 31 63 def @arg29 250 16777215 0 Y 128 31 63
def @arg30 251 16777216 0 Y 0 31 8 def @arg30 250 16777215 0 Y 0 31 8
def @arg31 251 16777216 0 Y 0 31 8 def @arg31 250 16777215 0 Y 0 31 8
def @arg32 251 16777216 0 Y 0 31 8 def @arg32 250 16777215 0 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
prepare stmt1 from "select c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, prepare stmt1 from "select c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12,
@ -2204,26 +2204,26 @@ def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63 def @arg10 5 23 1 Y 32896 31 63
def @arg11 246 83 6 Y 128 30 63 def @arg11 246 83 6 Y 128 30 63
def @arg12 246 83 6 Y 128 30 63 def @arg12 246 83 6 Y 128 30 63
def @arg13 251 16777216 10 Y 128 31 63 def @arg13 250 16777215 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63 def @arg14 250 16777215 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 8 Y 128 31 63 def @arg16 250 16777215 8 Y 128 31 63
def @arg17 8 20 4 Y 32928 0 63 def @arg17 8 20 4 Y 32928 0 63
def @arg18 8 20 1 Y 32896 0 63 def @arg18 8 20 1 Y 32896 0 63
def @arg19 8 20 1 Y 32896 0 63 def @arg19 8 20 1 Y 32896 0 63
def @arg20 251 16777216 1 Y 0 31 8 def @arg20 250 16777215 1 Y 0 31 8
def @arg21 251 16777216 10 Y 0 31 8 def @arg21 250 16777215 10 Y 0 31 8
def @arg22 251 16777216 30 Y 0 31 8 def @arg22 250 16777215 30 Y 0 31 8
def @arg23 251 16777216 8 Y 128 31 63 def @arg23 250 16777215 8 Y 128 31 63
def @arg24 251 16777216 8 Y 0 31 8 def @arg24 250 16777215 8 Y 0 31 8
def @arg25 251 16777216 4 Y 128 31 63 def @arg25 250 16777215 4 Y 128 31 63
def @arg26 251 16777216 4 Y 0 31 8 def @arg26 250 16777215 4 Y 0 31 8
def @arg27 251 16777216 10 Y 128 31 63 def @arg27 250 16777215 10 Y 128 31 63
def @arg28 251 16777216 10 Y 0 31 8 def @arg28 250 16777215 10 Y 0 31 8
def @arg29 251 16777216 8 Y 128 31 63 def @arg29 250 16777215 8 Y 128 31 63
def @arg30 251 16777216 8 Y 0 31 8 def @arg30 250 16777215 8 Y 0 31 8
def @arg31 251 16777216 3 Y 0 31 8 def @arg31 250 16777215 3 Y 0 31 8
def @arg32 251 16777216 6 Y 0 31 8 def @arg32 250 16777215 6 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday
set @my_key= 0 ; set @my_key= 0 ;
@ -2242,26 +2242,26 @@ def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63 def @arg10 5 23 0 Y 32896 31 63
def @arg11 246 83 0 Y 128 30 63 def @arg11 246 83 0 Y 128 30 63
def @arg12 246 83 0 Y 128 30 63 def @arg12 246 83 0 Y 128 30 63
def @arg13 251 16777216 0 Y 128 31 63 def @arg13 250 16777215 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63 def @arg14 250 16777215 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 0 Y 128 31 63 def @arg16 250 16777215 0 Y 128 31 63
def @arg17 8 20 0 Y 32928 0 63 def @arg17 8 20 0 Y 32928 0 63
def @arg18 8 20 0 Y 32896 0 63 def @arg18 8 20 0 Y 32896 0 63
def @arg19 8 20 0 Y 32896 0 63 def @arg19 8 20 0 Y 32896 0 63
def @arg20 251 16777216 0 Y 0 31 8 def @arg20 250 16777215 0 Y 0 31 8
def @arg21 251 16777216 0 Y 0 31 8 def @arg21 250 16777215 0 Y 0 31 8
def @arg22 251 16777216 0 Y 0 31 8 def @arg22 250 16777215 0 Y 0 31 8
def @arg23 251 16777216 0 Y 128 31 63 def @arg23 250 16777215 0 Y 128 31 63
def @arg24 251 16777216 0 Y 0 31 8 def @arg24 250 16777215 0 Y 0 31 8
def @arg25 251 16777216 0 Y 128 31 63 def @arg25 250 16777215 0 Y 128 31 63
def @arg26 251 16777216 0 Y 0 31 8 def @arg26 250 16777215 0 Y 0 31 8
def @arg27 251 16777216 0 Y 128 31 63 def @arg27 250 16777215 0 Y 128 31 63
def @arg28 251 16777216 0 Y 0 31 8 def @arg28 250 16777215 0 Y 0 31 8
def @arg29 251 16777216 0 Y 128 31 63 def @arg29 250 16777215 0 Y 128 31 63
def @arg30 251 16777216 0 Y 0 31 8 def @arg30 250 16777215 0 Y 0 31 8
def @arg31 251 16777216 0 Y 0 31 8 def @arg31 250 16777215 0 Y 0 31 8
def @arg32 251 16777216 0 Y 0 31 8 def @arg32 250 16777215 0 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
prepare stmt1 from "select c1 into ? from t9 where c1= 1" ; prepare stmt1 from "select c1 into ? from t9 where c1= 1" ;

View file

@ -1912,26 +1912,26 @@ def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63 def @arg10 5 23 1 Y 32896 31 63
def @arg11 246 83 6 Y 128 30 63 def @arg11 246 83 6 Y 128 30 63
def @arg12 246 83 6 Y 128 30 63 def @arg12 246 83 6 Y 128 30 63
def @arg13 251 16777216 10 Y 128 31 63 def @arg13 250 16777215 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63 def @arg14 250 16777215 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 8 Y 128 31 63 def @arg16 250 16777215 8 Y 128 31 63
def @arg17 8 20 4 Y 32928 0 63 def @arg17 8 20 4 Y 32928 0 63
def @arg18 8 20 1 Y 32896 0 63 def @arg18 8 20 1 Y 32896 0 63
def @arg19 8 20 1 Y 32896 0 63 def @arg19 8 20 1 Y 32896 0 63
def @arg20 251 16777216 1 Y 0 31 8 def @arg20 250 16777215 1 Y 0 31 8
def @arg21 251 16777216 10 Y 0 31 8 def @arg21 250 16777215 10 Y 0 31 8
def @arg22 251 16777216 30 Y 0 31 8 def @arg22 250 16777215 30 Y 0 31 8
def @arg23 251 16777216 8 Y 128 31 63 def @arg23 250 16777215 8 Y 128 31 63
def @arg24 251 16777216 8 Y 0 31 8 def @arg24 250 16777215 8 Y 0 31 8
def @arg25 251 16777216 4 Y 128 31 63 def @arg25 250 16777215 4 Y 128 31 63
def @arg26 251 16777216 4 Y 0 31 8 def @arg26 250 16777215 4 Y 0 31 8
def @arg27 251 16777216 10 Y 128 31 63 def @arg27 250 16777215 10 Y 128 31 63
def @arg28 251 16777216 10 Y 0 31 8 def @arg28 250 16777215 10 Y 0 31 8
def @arg29 251 16777216 8 Y 128 31 63 def @arg29 250 16777215 8 Y 128 31 63
def @arg30 251 16777216 8 Y 0 31 8 def @arg30 250 16777215 8 Y 0 31 8
def @arg31 251 16777216 3 Y 0 31 8 def @arg31 250 16777215 3 Y 0 31 8
def @arg32 251 16777216 6 Y 0 31 8 def @arg32 250 16777215 6 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday
select @arg01:= c1, @arg02:= c2, @arg03:= c3, @arg04:= c4, select @arg01:= c1, @arg02:= c2, @arg03:= c3, @arg04:= c4,
@ -1959,26 +1959,26 @@ def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63 def @arg10 5 23 0 Y 32896 31 63
def @arg11 246 83 0 Y 128 30 63 def @arg11 246 83 0 Y 128 30 63
def @arg12 246 83 0 Y 128 30 63 def @arg12 246 83 0 Y 128 30 63
def @arg13 251 16777216 0 Y 128 31 63 def @arg13 250 16777215 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63 def @arg14 250 16777215 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 0 Y 128 31 63 def @arg16 250 16777215 0 Y 128 31 63
def @arg17 8 20 0 Y 32928 0 63 def @arg17 8 20 0 Y 32928 0 63
def @arg18 8 20 0 Y 32896 0 63 def @arg18 8 20 0 Y 32896 0 63
def @arg19 8 20 0 Y 32896 0 63 def @arg19 8 20 0 Y 32896 0 63
def @arg20 251 16777216 0 Y 0 31 8 def @arg20 250 16777215 0 Y 0 31 8
def @arg21 251 16777216 0 Y 0 31 8 def @arg21 250 16777215 0 Y 0 31 8
def @arg22 251 16777216 0 Y 0 31 8 def @arg22 250 16777215 0 Y 0 31 8
def @arg23 251 16777216 0 Y 128 31 63 def @arg23 250 16777215 0 Y 128 31 63
def @arg24 251 16777216 0 Y 0 31 8 def @arg24 250 16777215 0 Y 0 31 8
def @arg25 251 16777216 0 Y 128 31 63 def @arg25 250 16777215 0 Y 128 31 63
def @arg26 251 16777216 0 Y 0 31 8 def @arg26 250 16777215 0 Y 0 31 8
def @arg27 251 16777216 0 Y 128 31 63 def @arg27 250 16777215 0 Y 128 31 63
def @arg28 251 16777216 0 Y 0 31 8 def @arg28 250 16777215 0 Y 0 31 8
def @arg29 251 16777216 0 Y 128 31 63 def @arg29 250 16777215 0 Y 128 31 63
def @arg30 251 16777216 0 Y 0 31 8 def @arg30 250 16777215 0 Y 0 31 8
def @arg31 251 16777216 0 Y 0 31 8 def @arg31 250 16777215 0 Y 0 31 8
def @arg32 251 16777216 0 Y 0 31 8 def @arg32 250 16777215 0 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
prepare stmt1 from "select prepare stmt1 from "select
@ -2009,26 +2009,26 @@ def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63 def @arg10 5 23 1 Y 32896 31 63
def @arg11 246 83 6 Y 128 30 63 def @arg11 246 83 6 Y 128 30 63
def @arg12 246 83 6 Y 128 30 63 def @arg12 246 83 6 Y 128 30 63
def @arg13 251 16777216 10 Y 128 31 63 def @arg13 250 16777215 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63 def @arg14 250 16777215 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 8 Y 128 31 63 def @arg16 250 16777215 8 Y 128 31 63
def @arg17 8 20 4 Y 32928 0 63 def @arg17 8 20 4 Y 32928 0 63
def @arg18 8 20 1 Y 32896 0 63 def @arg18 8 20 1 Y 32896 0 63
def @arg19 8 20 1 Y 32896 0 63 def @arg19 8 20 1 Y 32896 0 63
def @arg20 251 16777216 1 Y 0 31 8 def @arg20 250 16777215 1 Y 0 31 8
def @arg21 251 16777216 10 Y 0 31 8 def @arg21 250 16777215 10 Y 0 31 8
def @arg22 251 16777216 30 Y 0 31 8 def @arg22 250 16777215 30 Y 0 31 8
def @arg23 251 16777216 8 Y 128 31 63 def @arg23 250 16777215 8 Y 128 31 63
def @arg24 251 16777216 8 Y 0 31 8 def @arg24 250 16777215 8 Y 0 31 8
def @arg25 251 16777216 4 Y 128 31 63 def @arg25 250 16777215 4 Y 128 31 63
def @arg26 251 16777216 4 Y 0 31 8 def @arg26 250 16777215 4 Y 0 31 8
def @arg27 251 16777216 10 Y 128 31 63 def @arg27 250 16777215 10 Y 128 31 63
def @arg28 251 16777216 10 Y 0 31 8 def @arg28 250 16777215 10 Y 0 31 8
def @arg29 251 16777216 8 Y 128 31 63 def @arg29 250 16777215 8 Y 128 31 63
def @arg30 251 16777216 8 Y 0 31 8 def @arg30 250 16777215 8 Y 0 31 8
def @arg31 251 16777216 3 Y 0 31 8 def @arg31 250 16777215 3 Y 0 31 8
def @arg32 251 16777216 6 Y 0 31 8 def @arg32 250 16777215 6 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday
set @my_key= 0 ; set @my_key= 0 ;
@ -2049,26 +2049,26 @@ def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63 def @arg10 5 23 0 Y 32896 31 63
def @arg11 246 83 0 Y 128 30 63 def @arg11 246 83 0 Y 128 30 63
def @arg12 246 83 0 Y 128 30 63 def @arg12 246 83 0 Y 128 30 63
def @arg13 251 16777216 0 Y 128 31 63 def @arg13 250 16777215 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63 def @arg14 250 16777215 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 0 Y 128 31 63 def @arg16 250 16777215 0 Y 128 31 63
def @arg17 8 20 0 Y 32928 0 63 def @arg17 8 20 0 Y 32928 0 63
def @arg18 8 20 0 Y 32896 0 63 def @arg18 8 20 0 Y 32896 0 63
def @arg19 8 20 0 Y 32896 0 63 def @arg19 8 20 0 Y 32896 0 63
def @arg20 251 16777216 0 Y 0 31 8 def @arg20 250 16777215 0 Y 0 31 8
def @arg21 251 16777216 0 Y 0 31 8 def @arg21 250 16777215 0 Y 0 31 8
def @arg22 251 16777216 0 Y 0 31 8 def @arg22 250 16777215 0 Y 0 31 8
def @arg23 251 16777216 0 Y 128 31 63 def @arg23 250 16777215 0 Y 128 31 63
def @arg24 251 16777216 0 Y 0 31 8 def @arg24 250 16777215 0 Y 0 31 8
def @arg25 251 16777216 0 Y 128 31 63 def @arg25 250 16777215 0 Y 128 31 63
def @arg26 251 16777216 0 Y 0 31 8 def @arg26 250 16777215 0 Y 0 31 8
def @arg27 251 16777216 0 Y 128 31 63 def @arg27 250 16777215 0 Y 128 31 63
def @arg28 251 16777216 0 Y 0 31 8 def @arg28 250 16777215 0 Y 0 31 8
def @arg29 251 16777216 0 Y 128 31 63 def @arg29 250 16777215 0 Y 128 31 63
def @arg30 251 16777216 0 Y 0 31 8 def @arg30 250 16777215 0 Y 0 31 8
def @arg31 251 16777216 0 Y 0 31 8 def @arg31 250 16777215 0 Y 0 31 8
def @arg32 251 16777216 0 Y 0 31 8 def @arg32 250 16777215 0 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
prepare stmt1 from "select ? := c1 from t9 where c1= 1" ; prepare stmt1 from "select ? := c1 from t9 where c1= 1" ;
@ -2097,26 +2097,26 @@ def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63 def @arg10 5 23 1 Y 32896 31 63
def @arg11 246 83 6 Y 128 30 63 def @arg11 246 83 6 Y 128 30 63
def @arg12 246 83 6 Y 128 30 63 def @arg12 246 83 6 Y 128 30 63
def @arg13 251 16777216 10 Y 128 31 63 def @arg13 250 16777215 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63 def @arg14 250 16777215 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 8 Y 128 31 63 def @arg16 250 16777215 8 Y 128 31 63
def @arg17 8 20 4 Y 32928 0 63 def @arg17 8 20 4 Y 32928 0 63
def @arg18 8 20 1 Y 32896 0 63 def @arg18 8 20 1 Y 32896 0 63
def @arg19 8 20 1 Y 32896 0 63 def @arg19 8 20 1 Y 32896 0 63
def @arg20 251 16777216 1 Y 0 31 8 def @arg20 250 16777215 1 Y 0 31 8
def @arg21 251 16777216 10 Y 0 31 8 def @arg21 250 16777215 10 Y 0 31 8
def @arg22 251 16777216 30 Y 0 31 8 def @arg22 250 16777215 30 Y 0 31 8
def @arg23 251 16777216 8 Y 128 31 63 def @arg23 250 16777215 8 Y 128 31 63
def @arg24 251 16777216 8 Y 0 31 8 def @arg24 250 16777215 8 Y 0 31 8
def @arg25 251 16777216 4 Y 128 31 63 def @arg25 250 16777215 4 Y 128 31 63
def @arg26 251 16777216 4 Y 0 31 8 def @arg26 250 16777215 4 Y 0 31 8
def @arg27 251 16777216 10 Y 128 31 63 def @arg27 250 16777215 10 Y 128 31 63
def @arg28 251 16777216 10 Y 0 31 8 def @arg28 250 16777215 10 Y 0 31 8
def @arg29 251 16777216 8 Y 128 31 63 def @arg29 250 16777215 8 Y 128 31 63
def @arg30 251 16777216 8 Y 0 31 8 def @arg30 250 16777215 8 Y 0 31 8
def @arg31 251 16777216 3 Y 0 31 8 def @arg31 250 16777215 3 Y 0 31 8
def @arg32 251 16777216 6 Y 0 31 8 def @arg32 250 16777215 6 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday
select c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, select c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12,
@ -2141,26 +2141,26 @@ def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63 def @arg10 5 23 0 Y 32896 31 63
def @arg11 246 83 0 Y 128 30 63 def @arg11 246 83 0 Y 128 30 63
def @arg12 246 83 0 Y 128 30 63 def @arg12 246 83 0 Y 128 30 63
def @arg13 251 16777216 0 Y 128 31 63 def @arg13 250 16777215 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63 def @arg14 250 16777215 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 0 Y 128 31 63 def @arg16 250 16777215 0 Y 128 31 63
def @arg17 8 20 0 Y 32928 0 63 def @arg17 8 20 0 Y 32928 0 63
def @arg18 8 20 0 Y 32896 0 63 def @arg18 8 20 0 Y 32896 0 63
def @arg19 8 20 0 Y 32896 0 63 def @arg19 8 20 0 Y 32896 0 63
def @arg20 251 16777216 0 Y 0 31 8 def @arg20 250 16777215 0 Y 0 31 8
def @arg21 251 16777216 0 Y 0 31 8 def @arg21 250 16777215 0 Y 0 31 8
def @arg22 251 16777216 0 Y 0 31 8 def @arg22 250 16777215 0 Y 0 31 8
def @arg23 251 16777216 0 Y 128 31 63 def @arg23 250 16777215 0 Y 128 31 63
def @arg24 251 16777216 0 Y 0 31 8 def @arg24 250 16777215 0 Y 0 31 8
def @arg25 251 16777216 0 Y 128 31 63 def @arg25 250 16777215 0 Y 128 31 63
def @arg26 251 16777216 0 Y 0 31 8 def @arg26 250 16777215 0 Y 0 31 8
def @arg27 251 16777216 0 Y 128 31 63 def @arg27 250 16777215 0 Y 128 31 63
def @arg28 251 16777216 0 Y 0 31 8 def @arg28 250 16777215 0 Y 0 31 8
def @arg29 251 16777216 0 Y 128 31 63 def @arg29 250 16777215 0 Y 128 31 63
def @arg30 251 16777216 0 Y 0 31 8 def @arg30 250 16777215 0 Y 0 31 8
def @arg31 251 16777216 0 Y 0 31 8 def @arg31 250 16777215 0 Y 0 31 8
def @arg32 251 16777216 0 Y 0 31 8 def @arg32 250 16777215 0 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
prepare stmt1 from "select c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, prepare stmt1 from "select c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12,
@ -2187,26 +2187,26 @@ def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63 def @arg10 5 23 1 Y 32896 31 63
def @arg11 246 83 6 Y 128 30 63 def @arg11 246 83 6 Y 128 30 63
def @arg12 246 83 6 Y 128 30 63 def @arg12 246 83 6 Y 128 30 63
def @arg13 251 16777216 10 Y 128 31 63 def @arg13 250 16777215 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63 def @arg14 250 16777215 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 8 Y 128 31 63 def @arg16 250 16777215 8 Y 128 31 63
def @arg17 8 20 4 Y 32928 0 63 def @arg17 8 20 4 Y 32928 0 63
def @arg18 8 20 1 Y 32896 0 63 def @arg18 8 20 1 Y 32896 0 63
def @arg19 8 20 1 Y 32896 0 63 def @arg19 8 20 1 Y 32896 0 63
def @arg20 251 16777216 1 Y 0 31 8 def @arg20 250 16777215 1 Y 0 31 8
def @arg21 251 16777216 10 Y 0 31 8 def @arg21 250 16777215 10 Y 0 31 8
def @arg22 251 16777216 30 Y 0 31 8 def @arg22 250 16777215 30 Y 0 31 8
def @arg23 251 16777216 8 Y 128 31 63 def @arg23 250 16777215 8 Y 128 31 63
def @arg24 251 16777216 8 Y 0 31 8 def @arg24 250 16777215 8 Y 0 31 8
def @arg25 251 16777216 4 Y 128 31 63 def @arg25 250 16777215 4 Y 128 31 63
def @arg26 251 16777216 4 Y 0 31 8 def @arg26 250 16777215 4 Y 0 31 8
def @arg27 251 16777216 10 Y 128 31 63 def @arg27 250 16777215 10 Y 128 31 63
def @arg28 251 16777216 10 Y 0 31 8 def @arg28 250 16777215 10 Y 0 31 8
def @arg29 251 16777216 8 Y 128 31 63 def @arg29 250 16777215 8 Y 128 31 63
def @arg30 251 16777216 8 Y 0 31 8 def @arg30 250 16777215 8 Y 0 31 8
def @arg31 251 16777216 3 Y 0 31 8 def @arg31 250 16777215 3 Y 0 31 8
def @arg32 251 16777216 6 Y 0 31 8 def @arg32 250 16777215 6 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday
set @my_key= 0 ; set @my_key= 0 ;
@ -2225,26 +2225,26 @@ def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63 def @arg10 5 23 0 Y 32896 31 63
def @arg11 246 83 0 Y 128 30 63 def @arg11 246 83 0 Y 128 30 63
def @arg12 246 83 0 Y 128 30 63 def @arg12 246 83 0 Y 128 30 63
def @arg13 251 16777216 0 Y 128 31 63 def @arg13 250 16777215 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63 def @arg14 250 16777215 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 0 Y 128 31 63 def @arg16 250 16777215 0 Y 128 31 63
def @arg17 8 20 0 Y 32928 0 63 def @arg17 8 20 0 Y 32928 0 63
def @arg18 8 20 0 Y 32896 0 63 def @arg18 8 20 0 Y 32896 0 63
def @arg19 8 20 0 Y 32896 0 63 def @arg19 8 20 0 Y 32896 0 63
def @arg20 251 16777216 0 Y 0 31 8 def @arg20 250 16777215 0 Y 0 31 8
def @arg21 251 16777216 0 Y 0 31 8 def @arg21 250 16777215 0 Y 0 31 8
def @arg22 251 16777216 0 Y 0 31 8 def @arg22 250 16777215 0 Y 0 31 8
def @arg23 251 16777216 0 Y 128 31 63 def @arg23 250 16777215 0 Y 128 31 63
def @arg24 251 16777216 0 Y 0 31 8 def @arg24 250 16777215 0 Y 0 31 8
def @arg25 251 16777216 0 Y 128 31 63 def @arg25 250 16777215 0 Y 128 31 63
def @arg26 251 16777216 0 Y 0 31 8 def @arg26 250 16777215 0 Y 0 31 8
def @arg27 251 16777216 0 Y 128 31 63 def @arg27 250 16777215 0 Y 128 31 63
def @arg28 251 16777216 0 Y 0 31 8 def @arg28 250 16777215 0 Y 0 31 8
def @arg29 251 16777216 0 Y 128 31 63 def @arg29 250 16777215 0 Y 128 31 63
def @arg30 251 16777216 0 Y 0 31 8 def @arg30 250 16777215 0 Y 0 31 8
def @arg31 251 16777216 0 Y 0 31 8 def @arg31 250 16777215 0 Y 0 31 8
def @arg32 251 16777216 0 Y 0 31 8 def @arg32 250 16777215 0 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
prepare stmt1 from "select c1 into ? from t9 where c1= 1" ; prepare stmt1 from "select c1 into ? from t9 where c1= 1" ;

View file

@ -1913,26 +1913,26 @@ def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63 def @arg10 5 23 1 Y 32896 31 63
def @arg11 246 83 6 Y 128 30 63 def @arg11 246 83 6 Y 128 30 63
def @arg12 246 83 6 Y 128 30 63 def @arg12 246 83 6 Y 128 30 63
def @arg13 251 16777216 10 Y 128 31 63 def @arg13 250 16777215 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63 def @arg14 250 16777215 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 8 Y 128 31 63 def @arg16 250 16777215 8 Y 128 31 63
def @arg17 8 20 4 Y 32928 0 63 def @arg17 8 20 4 Y 32928 0 63
def @arg18 8 20 1 Y 32896 0 63 def @arg18 8 20 1 Y 32896 0 63
def @arg19 8 20 1 Y 32896 0 63 def @arg19 8 20 1 Y 32896 0 63
def @arg20 251 16777216 1 Y 0 31 8 def @arg20 250 16777215 1 Y 0 31 8
def @arg21 251 16777216 10 Y 0 31 8 def @arg21 250 16777215 10 Y 0 31 8
def @arg22 251 16777216 30 Y 0 31 8 def @arg22 250 16777215 30 Y 0 31 8
def @arg23 251 16777216 8 Y 0 31 8 def @arg23 250 16777215 8 Y 0 31 8
def @arg24 251 16777216 8 Y 0 31 8 def @arg24 250 16777215 8 Y 0 31 8
def @arg25 251 16777216 4 Y 0 31 8 def @arg25 250 16777215 4 Y 0 31 8
def @arg26 251 16777216 4 Y 0 31 8 def @arg26 250 16777215 4 Y 0 31 8
def @arg27 251 16777216 10 Y 0 31 8 def @arg27 250 16777215 10 Y 0 31 8
def @arg28 251 16777216 10 Y 0 31 8 def @arg28 250 16777215 10 Y 0 31 8
def @arg29 251 16777216 8 Y 0 31 8 def @arg29 250 16777215 8 Y 0 31 8
def @arg30 251 16777216 8 Y 0 31 8 def @arg30 250 16777215 8 Y 0 31 8
def @arg31 251 16777216 3 Y 0 31 8 def @arg31 250 16777215 3 Y 0 31 8
def @arg32 251 16777216 6 Y 0 31 8 def @arg32 250 16777215 6 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday
select @arg01:= c1, @arg02:= c2, @arg03:= c3, @arg04:= c4, select @arg01:= c1, @arg02:= c2, @arg03:= c3, @arg04:= c4,
@ -1960,26 +1960,26 @@ def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63 def @arg10 5 23 0 Y 32896 31 63
def @arg11 246 83 0 Y 128 30 63 def @arg11 246 83 0 Y 128 30 63
def @arg12 246 83 0 Y 128 30 63 def @arg12 246 83 0 Y 128 30 63
def @arg13 251 16777216 0 Y 128 31 63 def @arg13 250 16777215 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63 def @arg14 250 16777215 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 0 Y 128 31 63 def @arg16 250 16777215 0 Y 128 31 63
def @arg17 8 20 0 Y 32928 0 63 def @arg17 8 20 0 Y 32928 0 63
def @arg18 8 20 0 Y 32896 0 63 def @arg18 8 20 0 Y 32896 0 63
def @arg19 8 20 0 Y 32896 0 63 def @arg19 8 20 0 Y 32896 0 63
def @arg20 251 16777216 0 Y 0 31 8 def @arg20 250 16777215 0 Y 0 31 8
def @arg21 251 16777216 0 Y 0 31 8 def @arg21 250 16777215 0 Y 0 31 8
def @arg22 251 16777216 0 Y 0 31 8 def @arg22 250 16777215 0 Y 0 31 8
def @arg23 251 16777216 0 Y 0 31 8 def @arg23 250 16777215 0 Y 0 31 8
def @arg24 251 16777216 0 Y 0 31 8 def @arg24 250 16777215 0 Y 0 31 8
def @arg25 251 16777216 0 Y 0 31 8 def @arg25 250 16777215 0 Y 0 31 8
def @arg26 251 16777216 0 Y 0 31 8 def @arg26 250 16777215 0 Y 0 31 8
def @arg27 251 16777216 0 Y 0 31 8 def @arg27 250 16777215 0 Y 0 31 8
def @arg28 251 16777216 0 Y 0 31 8 def @arg28 250 16777215 0 Y 0 31 8
def @arg29 251 16777216 0 Y 0 31 8 def @arg29 250 16777215 0 Y 0 31 8
def @arg30 251 16777216 0 Y 0 31 8 def @arg30 250 16777215 0 Y 0 31 8
def @arg31 251 16777216 0 Y 0 31 8 def @arg31 250 16777215 0 Y 0 31 8
def @arg32 251 16777216 0 Y 0 31 8 def @arg32 250 16777215 0 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
prepare stmt1 from "select prepare stmt1 from "select
@ -2010,26 +2010,26 @@ def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63 def @arg10 5 23 1 Y 32896 31 63
def @arg11 246 83 6 Y 128 30 63 def @arg11 246 83 6 Y 128 30 63
def @arg12 246 83 6 Y 128 30 63 def @arg12 246 83 6 Y 128 30 63
def @arg13 251 16777216 10 Y 128 31 63 def @arg13 250 16777215 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63 def @arg14 250 16777215 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 8 Y 128 31 63 def @arg16 250 16777215 8 Y 128 31 63
def @arg17 8 20 4 Y 32928 0 63 def @arg17 8 20 4 Y 32928 0 63
def @arg18 8 20 1 Y 32896 0 63 def @arg18 8 20 1 Y 32896 0 63
def @arg19 8 20 1 Y 32896 0 63 def @arg19 8 20 1 Y 32896 0 63
def @arg20 251 16777216 1 Y 0 31 8 def @arg20 250 16777215 1 Y 0 31 8
def @arg21 251 16777216 10 Y 0 31 8 def @arg21 250 16777215 10 Y 0 31 8
def @arg22 251 16777216 30 Y 0 31 8 def @arg22 250 16777215 30 Y 0 31 8
def @arg23 251 16777216 8 Y 0 31 8 def @arg23 250 16777215 8 Y 0 31 8
def @arg24 251 16777216 8 Y 0 31 8 def @arg24 250 16777215 8 Y 0 31 8
def @arg25 251 16777216 4 Y 0 31 8 def @arg25 250 16777215 4 Y 0 31 8
def @arg26 251 16777216 4 Y 0 31 8 def @arg26 250 16777215 4 Y 0 31 8
def @arg27 251 16777216 10 Y 0 31 8 def @arg27 250 16777215 10 Y 0 31 8
def @arg28 251 16777216 10 Y 0 31 8 def @arg28 250 16777215 10 Y 0 31 8
def @arg29 251 16777216 8 Y 0 31 8 def @arg29 250 16777215 8 Y 0 31 8
def @arg30 251 16777216 8 Y 0 31 8 def @arg30 250 16777215 8 Y 0 31 8
def @arg31 251 16777216 3 Y 0 31 8 def @arg31 250 16777215 3 Y 0 31 8
def @arg32 251 16777216 6 Y 0 31 8 def @arg32 250 16777215 6 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday
set @my_key= 0 ; set @my_key= 0 ;
@ -2050,26 +2050,26 @@ def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63 def @arg10 5 23 0 Y 32896 31 63
def @arg11 246 83 0 Y 128 30 63 def @arg11 246 83 0 Y 128 30 63
def @arg12 246 83 0 Y 128 30 63 def @arg12 246 83 0 Y 128 30 63
def @arg13 251 16777216 0 Y 128 31 63 def @arg13 250 16777215 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63 def @arg14 250 16777215 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 0 Y 128 31 63 def @arg16 250 16777215 0 Y 128 31 63
def @arg17 8 20 0 Y 32928 0 63 def @arg17 8 20 0 Y 32928 0 63
def @arg18 8 20 0 Y 32896 0 63 def @arg18 8 20 0 Y 32896 0 63
def @arg19 8 20 0 Y 32896 0 63 def @arg19 8 20 0 Y 32896 0 63
def @arg20 251 16777216 0 Y 0 31 8 def @arg20 250 16777215 0 Y 0 31 8
def @arg21 251 16777216 0 Y 0 31 8 def @arg21 250 16777215 0 Y 0 31 8
def @arg22 251 16777216 0 Y 0 31 8 def @arg22 250 16777215 0 Y 0 31 8
def @arg23 251 16777216 0 Y 0 31 8 def @arg23 250 16777215 0 Y 0 31 8
def @arg24 251 16777216 0 Y 0 31 8 def @arg24 250 16777215 0 Y 0 31 8
def @arg25 251 16777216 0 Y 0 31 8 def @arg25 250 16777215 0 Y 0 31 8
def @arg26 251 16777216 0 Y 0 31 8 def @arg26 250 16777215 0 Y 0 31 8
def @arg27 251 16777216 0 Y 0 31 8 def @arg27 250 16777215 0 Y 0 31 8
def @arg28 251 16777216 0 Y 0 31 8 def @arg28 250 16777215 0 Y 0 31 8
def @arg29 251 16777216 0 Y 0 31 8 def @arg29 250 16777215 0 Y 0 31 8
def @arg30 251 16777216 0 Y 0 31 8 def @arg30 250 16777215 0 Y 0 31 8
def @arg31 251 16777216 0 Y 0 31 8 def @arg31 250 16777215 0 Y 0 31 8
def @arg32 251 16777216 0 Y 0 31 8 def @arg32 250 16777215 0 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
prepare stmt1 from "select ? := c1 from t9 where c1= 1" ; prepare stmt1 from "select ? := c1 from t9 where c1= 1" ;
@ -2098,26 +2098,26 @@ def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63 def @arg10 5 23 1 Y 32896 31 63
def @arg11 246 83 6 Y 128 30 63 def @arg11 246 83 6 Y 128 30 63
def @arg12 246 83 6 Y 128 30 63 def @arg12 246 83 6 Y 128 30 63
def @arg13 251 16777216 10 Y 128 31 63 def @arg13 250 16777215 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63 def @arg14 250 16777215 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 8 Y 128 31 63 def @arg16 250 16777215 8 Y 128 31 63
def @arg17 8 20 4 Y 32928 0 63 def @arg17 8 20 4 Y 32928 0 63
def @arg18 8 20 1 Y 32896 0 63 def @arg18 8 20 1 Y 32896 0 63
def @arg19 8 20 1 Y 32896 0 63 def @arg19 8 20 1 Y 32896 0 63
def @arg20 251 16777216 1 Y 0 31 8 def @arg20 250 16777215 1 Y 0 31 8
def @arg21 251 16777216 10 Y 0 31 8 def @arg21 250 16777215 10 Y 0 31 8
def @arg22 251 16777216 30 Y 0 31 8 def @arg22 250 16777215 30 Y 0 31 8
def @arg23 251 16777216 8 Y 0 31 8 def @arg23 250 16777215 8 Y 0 31 8
def @arg24 251 16777216 8 Y 0 31 8 def @arg24 250 16777215 8 Y 0 31 8
def @arg25 251 16777216 4 Y 0 31 8 def @arg25 250 16777215 4 Y 0 31 8
def @arg26 251 16777216 4 Y 0 31 8 def @arg26 250 16777215 4 Y 0 31 8
def @arg27 251 16777216 10 Y 0 31 8 def @arg27 250 16777215 10 Y 0 31 8
def @arg28 251 16777216 10 Y 0 31 8 def @arg28 250 16777215 10 Y 0 31 8
def @arg29 251 16777216 8 Y 0 31 8 def @arg29 250 16777215 8 Y 0 31 8
def @arg30 251 16777216 8 Y 0 31 8 def @arg30 250 16777215 8 Y 0 31 8
def @arg31 251 16777216 3 Y 0 31 8 def @arg31 250 16777215 3 Y 0 31 8
def @arg32 251 16777216 6 Y 0 31 8 def @arg32 250 16777215 6 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday
select c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, select c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12,
@ -2142,26 +2142,26 @@ def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63 def @arg10 5 23 0 Y 32896 31 63
def @arg11 246 83 0 Y 128 30 63 def @arg11 246 83 0 Y 128 30 63
def @arg12 246 83 0 Y 128 30 63 def @arg12 246 83 0 Y 128 30 63
def @arg13 251 16777216 0 Y 128 31 63 def @arg13 250 16777215 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63 def @arg14 250 16777215 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 0 Y 128 31 63 def @arg16 250 16777215 0 Y 128 31 63
def @arg17 8 20 0 Y 32928 0 63 def @arg17 8 20 0 Y 32928 0 63
def @arg18 8 20 0 Y 32896 0 63 def @arg18 8 20 0 Y 32896 0 63
def @arg19 8 20 0 Y 32896 0 63 def @arg19 8 20 0 Y 32896 0 63
def @arg20 251 16777216 0 Y 0 31 8 def @arg20 250 16777215 0 Y 0 31 8
def @arg21 251 16777216 0 Y 0 31 8 def @arg21 250 16777215 0 Y 0 31 8
def @arg22 251 16777216 0 Y 0 31 8 def @arg22 250 16777215 0 Y 0 31 8
def @arg23 251 16777216 0 Y 0 31 8 def @arg23 250 16777215 0 Y 0 31 8
def @arg24 251 16777216 0 Y 0 31 8 def @arg24 250 16777215 0 Y 0 31 8
def @arg25 251 16777216 0 Y 0 31 8 def @arg25 250 16777215 0 Y 0 31 8
def @arg26 251 16777216 0 Y 0 31 8 def @arg26 250 16777215 0 Y 0 31 8
def @arg27 251 16777216 0 Y 0 31 8 def @arg27 250 16777215 0 Y 0 31 8
def @arg28 251 16777216 0 Y 0 31 8 def @arg28 250 16777215 0 Y 0 31 8
def @arg29 251 16777216 0 Y 0 31 8 def @arg29 250 16777215 0 Y 0 31 8
def @arg30 251 16777216 0 Y 0 31 8 def @arg30 250 16777215 0 Y 0 31 8
def @arg31 251 16777216 0 Y 0 31 8 def @arg31 250 16777215 0 Y 0 31 8
def @arg32 251 16777216 0 Y 0 31 8 def @arg32 250 16777215 0 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
prepare stmt1 from "select c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, prepare stmt1 from "select c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12,
@ -2188,26 +2188,26 @@ def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63 def @arg10 5 23 1 Y 32896 31 63
def @arg11 246 83 6 Y 128 30 63 def @arg11 246 83 6 Y 128 30 63
def @arg12 246 83 6 Y 128 30 63 def @arg12 246 83 6 Y 128 30 63
def @arg13 251 16777216 10 Y 128 31 63 def @arg13 250 16777215 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63 def @arg14 250 16777215 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 8 Y 128 31 63 def @arg16 250 16777215 8 Y 128 31 63
def @arg17 8 20 4 Y 32928 0 63 def @arg17 8 20 4 Y 32928 0 63
def @arg18 8 20 1 Y 32896 0 63 def @arg18 8 20 1 Y 32896 0 63
def @arg19 8 20 1 Y 32896 0 63 def @arg19 8 20 1 Y 32896 0 63
def @arg20 251 16777216 1 Y 0 31 8 def @arg20 250 16777215 1 Y 0 31 8
def @arg21 251 16777216 10 Y 0 31 8 def @arg21 250 16777215 10 Y 0 31 8
def @arg22 251 16777216 30 Y 0 31 8 def @arg22 250 16777215 30 Y 0 31 8
def @arg23 251 16777216 8 Y 0 31 8 def @arg23 250 16777215 8 Y 0 31 8
def @arg24 251 16777216 8 Y 0 31 8 def @arg24 250 16777215 8 Y 0 31 8
def @arg25 251 16777216 4 Y 0 31 8 def @arg25 250 16777215 4 Y 0 31 8
def @arg26 251 16777216 4 Y 0 31 8 def @arg26 250 16777215 4 Y 0 31 8
def @arg27 251 16777216 10 Y 0 31 8 def @arg27 250 16777215 10 Y 0 31 8
def @arg28 251 16777216 10 Y 0 31 8 def @arg28 250 16777215 10 Y 0 31 8
def @arg29 251 16777216 8 Y 0 31 8 def @arg29 250 16777215 8 Y 0 31 8
def @arg30 251 16777216 8 Y 0 31 8 def @arg30 250 16777215 8 Y 0 31 8
def @arg31 251 16777216 3 Y 0 31 8 def @arg31 250 16777215 3 Y 0 31 8
def @arg32 251 16777216 6 Y 0 31 8 def @arg32 250 16777215 6 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday
set @my_key= 0 ; set @my_key= 0 ;
@ -2226,26 +2226,26 @@ def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63 def @arg10 5 23 0 Y 32896 31 63
def @arg11 246 83 0 Y 128 30 63 def @arg11 246 83 0 Y 128 30 63
def @arg12 246 83 0 Y 128 30 63 def @arg12 246 83 0 Y 128 30 63
def @arg13 251 16777216 0 Y 128 31 63 def @arg13 250 16777215 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63 def @arg14 250 16777215 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 0 Y 128 31 63 def @arg16 250 16777215 0 Y 128 31 63
def @arg17 8 20 0 Y 32928 0 63 def @arg17 8 20 0 Y 32928 0 63
def @arg18 8 20 0 Y 32896 0 63 def @arg18 8 20 0 Y 32896 0 63
def @arg19 8 20 0 Y 32896 0 63 def @arg19 8 20 0 Y 32896 0 63
def @arg20 251 16777216 0 Y 0 31 8 def @arg20 250 16777215 0 Y 0 31 8
def @arg21 251 16777216 0 Y 0 31 8 def @arg21 250 16777215 0 Y 0 31 8
def @arg22 251 16777216 0 Y 0 31 8 def @arg22 250 16777215 0 Y 0 31 8
def @arg23 251 16777216 0 Y 0 31 8 def @arg23 250 16777215 0 Y 0 31 8
def @arg24 251 16777216 0 Y 0 31 8 def @arg24 250 16777215 0 Y 0 31 8
def @arg25 251 16777216 0 Y 0 31 8 def @arg25 250 16777215 0 Y 0 31 8
def @arg26 251 16777216 0 Y 0 31 8 def @arg26 250 16777215 0 Y 0 31 8
def @arg27 251 16777216 0 Y 0 31 8 def @arg27 250 16777215 0 Y 0 31 8
def @arg28 251 16777216 0 Y 0 31 8 def @arg28 250 16777215 0 Y 0 31 8
def @arg29 251 16777216 0 Y 0 31 8 def @arg29 250 16777215 0 Y 0 31 8
def @arg30 251 16777216 0 Y 0 31 8 def @arg30 250 16777215 0 Y 0 31 8
def @arg31 251 16777216 0 Y 0 31 8 def @arg31 250 16777215 0 Y 0 31 8
def @arg32 251 16777216 0 Y 0 31 8 def @arg32 250 16777215 0 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
prepare stmt1 from "select c1 into ? from t9 where c1= 1" ; prepare stmt1 from "select c1 into ? from t9 where c1= 1" ;

View file

@ -1849,26 +1849,26 @@ def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63 def @arg10 5 23 1 Y 32896 31 63
def @arg11 246 83 6 Y 128 30 63 def @arg11 246 83 6 Y 128 30 63
def @arg12 246 83 6 Y 128 30 63 def @arg12 246 83 6 Y 128 30 63
def @arg13 251 16777216 10 Y 128 31 63 def @arg13 250 16777215 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63 def @arg14 250 16777215 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 8 Y 128 31 63 def @arg16 250 16777215 8 Y 128 31 63
def @arg17 8 20 4 Y 32928 0 63 def @arg17 8 20 4 Y 32928 0 63
def @arg18 8 20 1 Y 32896 0 63 def @arg18 8 20 1 Y 32896 0 63
def @arg19 8 20 1 Y 32896 0 63 def @arg19 8 20 1 Y 32896 0 63
def @arg20 251 16777216 1 Y 0 31 8 def @arg20 250 16777215 1 Y 0 31 8
def @arg21 251 16777216 10 Y 0 31 8 def @arg21 250 16777215 10 Y 0 31 8
def @arg22 251 16777216 30 Y 0 31 8 def @arg22 250 16777215 30 Y 0 31 8
def @arg23 251 16777216 8 Y 128 31 63 def @arg23 250 16777215 8 Y 128 31 63
def @arg24 251 16777216 8 Y 0 31 8 def @arg24 250 16777215 8 Y 0 31 8
def @arg25 251 16777216 4 Y 128 31 63 def @arg25 250 16777215 4 Y 128 31 63
def @arg26 251 16777216 4 Y 0 31 8 def @arg26 250 16777215 4 Y 0 31 8
def @arg27 251 16777216 10 Y 128 31 63 def @arg27 250 16777215 10 Y 128 31 63
def @arg28 251 16777216 10 Y 0 31 8 def @arg28 250 16777215 10 Y 0 31 8
def @arg29 251 16777216 8 Y 128 31 63 def @arg29 250 16777215 8 Y 128 31 63
def @arg30 251 16777216 8 Y 0 31 8 def @arg30 250 16777215 8 Y 0 31 8
def @arg31 251 16777216 3 Y 0 31 8 def @arg31 250 16777215 3 Y 0 31 8
def @arg32 251 16777216 6 Y 0 31 8 def @arg32 250 16777215 6 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday
select @arg01:= c1, @arg02:= c2, @arg03:= c3, @arg04:= c4, select @arg01:= c1, @arg02:= c2, @arg03:= c3, @arg04:= c4,
@ -1896,26 +1896,26 @@ def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63 def @arg10 5 23 0 Y 32896 31 63
def @arg11 246 83 0 Y 128 30 63 def @arg11 246 83 0 Y 128 30 63
def @arg12 246 83 0 Y 128 30 63 def @arg12 246 83 0 Y 128 30 63
def @arg13 251 16777216 0 Y 128 31 63 def @arg13 250 16777215 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63 def @arg14 250 16777215 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 0 Y 128 31 63 def @arg16 250 16777215 0 Y 128 31 63
def @arg17 8 20 0 Y 32928 0 63 def @arg17 8 20 0 Y 32928 0 63
def @arg18 8 20 0 Y 32896 0 63 def @arg18 8 20 0 Y 32896 0 63
def @arg19 8 20 0 Y 32896 0 63 def @arg19 8 20 0 Y 32896 0 63
def @arg20 251 16777216 0 Y 0 31 8 def @arg20 250 16777215 0 Y 0 31 8
def @arg21 251 16777216 0 Y 0 31 8 def @arg21 250 16777215 0 Y 0 31 8
def @arg22 251 16777216 0 Y 0 31 8 def @arg22 250 16777215 0 Y 0 31 8
def @arg23 251 16777216 0 Y 128 31 63 def @arg23 250 16777215 0 Y 128 31 63
def @arg24 251 16777216 0 Y 0 31 8 def @arg24 250 16777215 0 Y 0 31 8
def @arg25 251 16777216 0 Y 128 31 63 def @arg25 250 16777215 0 Y 128 31 63
def @arg26 251 16777216 0 Y 0 31 8 def @arg26 250 16777215 0 Y 0 31 8
def @arg27 251 16777216 0 Y 128 31 63 def @arg27 250 16777215 0 Y 128 31 63
def @arg28 251 16777216 0 Y 0 31 8 def @arg28 250 16777215 0 Y 0 31 8
def @arg29 251 16777216 0 Y 128 31 63 def @arg29 250 16777215 0 Y 128 31 63
def @arg30 251 16777216 0 Y 0 31 8 def @arg30 250 16777215 0 Y 0 31 8
def @arg31 251 16777216 0 Y 0 31 8 def @arg31 250 16777215 0 Y 0 31 8
def @arg32 251 16777216 0 Y 0 31 8 def @arg32 250 16777215 0 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
prepare stmt1 from "select prepare stmt1 from "select
@ -1946,26 +1946,26 @@ def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63 def @arg10 5 23 1 Y 32896 31 63
def @arg11 246 83 6 Y 128 30 63 def @arg11 246 83 6 Y 128 30 63
def @arg12 246 83 6 Y 128 30 63 def @arg12 246 83 6 Y 128 30 63
def @arg13 251 16777216 10 Y 128 31 63 def @arg13 250 16777215 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63 def @arg14 250 16777215 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 8 Y 128 31 63 def @arg16 250 16777215 8 Y 128 31 63
def @arg17 8 20 4 Y 32928 0 63 def @arg17 8 20 4 Y 32928 0 63
def @arg18 8 20 1 Y 32896 0 63 def @arg18 8 20 1 Y 32896 0 63
def @arg19 8 20 1 Y 32896 0 63 def @arg19 8 20 1 Y 32896 0 63
def @arg20 251 16777216 1 Y 0 31 8 def @arg20 250 16777215 1 Y 0 31 8
def @arg21 251 16777216 10 Y 0 31 8 def @arg21 250 16777215 10 Y 0 31 8
def @arg22 251 16777216 30 Y 0 31 8 def @arg22 250 16777215 30 Y 0 31 8
def @arg23 251 16777216 8 Y 128 31 63 def @arg23 250 16777215 8 Y 128 31 63
def @arg24 251 16777216 8 Y 0 31 8 def @arg24 250 16777215 8 Y 0 31 8
def @arg25 251 16777216 4 Y 128 31 63 def @arg25 250 16777215 4 Y 128 31 63
def @arg26 251 16777216 4 Y 0 31 8 def @arg26 250 16777215 4 Y 0 31 8
def @arg27 251 16777216 10 Y 128 31 63 def @arg27 250 16777215 10 Y 128 31 63
def @arg28 251 16777216 10 Y 0 31 8 def @arg28 250 16777215 10 Y 0 31 8
def @arg29 251 16777216 8 Y 128 31 63 def @arg29 250 16777215 8 Y 128 31 63
def @arg30 251 16777216 8 Y 0 31 8 def @arg30 250 16777215 8 Y 0 31 8
def @arg31 251 16777216 3 Y 0 31 8 def @arg31 250 16777215 3 Y 0 31 8
def @arg32 251 16777216 6 Y 0 31 8 def @arg32 250 16777215 6 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday
set @my_key= 0 ; set @my_key= 0 ;
@ -1986,26 +1986,26 @@ def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63 def @arg10 5 23 0 Y 32896 31 63
def @arg11 246 83 0 Y 128 30 63 def @arg11 246 83 0 Y 128 30 63
def @arg12 246 83 0 Y 128 30 63 def @arg12 246 83 0 Y 128 30 63
def @arg13 251 16777216 0 Y 128 31 63 def @arg13 250 16777215 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63 def @arg14 250 16777215 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 0 Y 128 31 63 def @arg16 250 16777215 0 Y 128 31 63
def @arg17 8 20 0 Y 32928 0 63 def @arg17 8 20 0 Y 32928 0 63
def @arg18 8 20 0 Y 32896 0 63 def @arg18 8 20 0 Y 32896 0 63
def @arg19 8 20 0 Y 32896 0 63 def @arg19 8 20 0 Y 32896 0 63
def @arg20 251 16777216 0 Y 0 31 8 def @arg20 250 16777215 0 Y 0 31 8
def @arg21 251 16777216 0 Y 0 31 8 def @arg21 250 16777215 0 Y 0 31 8
def @arg22 251 16777216 0 Y 0 31 8 def @arg22 250 16777215 0 Y 0 31 8
def @arg23 251 16777216 0 Y 128 31 63 def @arg23 250 16777215 0 Y 128 31 63
def @arg24 251 16777216 0 Y 0 31 8 def @arg24 250 16777215 0 Y 0 31 8
def @arg25 251 16777216 0 Y 128 31 63 def @arg25 250 16777215 0 Y 128 31 63
def @arg26 251 16777216 0 Y 0 31 8 def @arg26 250 16777215 0 Y 0 31 8
def @arg27 251 16777216 0 Y 128 31 63 def @arg27 250 16777215 0 Y 128 31 63
def @arg28 251 16777216 0 Y 0 31 8 def @arg28 250 16777215 0 Y 0 31 8
def @arg29 251 16777216 0 Y 128 31 63 def @arg29 250 16777215 0 Y 128 31 63
def @arg30 251 16777216 0 Y 0 31 8 def @arg30 250 16777215 0 Y 0 31 8
def @arg31 251 16777216 0 Y 0 31 8 def @arg31 250 16777215 0 Y 0 31 8
def @arg32 251 16777216 0 Y 0 31 8 def @arg32 250 16777215 0 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
prepare stmt1 from "select ? := c1 from t9 where c1= 1" ; prepare stmt1 from "select ? := c1 from t9 where c1= 1" ;
@ -2034,26 +2034,26 @@ def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63 def @arg10 5 23 1 Y 32896 31 63
def @arg11 246 83 6 Y 128 30 63 def @arg11 246 83 6 Y 128 30 63
def @arg12 246 83 6 Y 128 30 63 def @arg12 246 83 6 Y 128 30 63
def @arg13 251 16777216 10 Y 128 31 63 def @arg13 250 16777215 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63 def @arg14 250 16777215 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 8 Y 128 31 63 def @arg16 250 16777215 8 Y 128 31 63
def @arg17 8 20 4 Y 32928 0 63 def @arg17 8 20 4 Y 32928 0 63
def @arg18 8 20 1 Y 32896 0 63 def @arg18 8 20 1 Y 32896 0 63
def @arg19 8 20 1 Y 32896 0 63 def @arg19 8 20 1 Y 32896 0 63
def @arg20 251 16777216 1 Y 0 31 8 def @arg20 250 16777215 1 Y 0 31 8
def @arg21 251 16777216 10 Y 0 31 8 def @arg21 250 16777215 10 Y 0 31 8
def @arg22 251 16777216 30 Y 0 31 8 def @arg22 250 16777215 30 Y 0 31 8
def @arg23 251 16777216 8 Y 128 31 63 def @arg23 250 16777215 8 Y 128 31 63
def @arg24 251 16777216 8 Y 0 31 8 def @arg24 250 16777215 8 Y 0 31 8
def @arg25 251 16777216 4 Y 128 31 63 def @arg25 250 16777215 4 Y 128 31 63
def @arg26 251 16777216 4 Y 0 31 8 def @arg26 250 16777215 4 Y 0 31 8
def @arg27 251 16777216 10 Y 128 31 63 def @arg27 250 16777215 10 Y 128 31 63
def @arg28 251 16777216 10 Y 0 31 8 def @arg28 250 16777215 10 Y 0 31 8
def @arg29 251 16777216 8 Y 128 31 63 def @arg29 250 16777215 8 Y 128 31 63
def @arg30 251 16777216 8 Y 0 31 8 def @arg30 250 16777215 8 Y 0 31 8
def @arg31 251 16777216 3 Y 0 31 8 def @arg31 250 16777215 3 Y 0 31 8
def @arg32 251 16777216 6 Y 0 31 8 def @arg32 250 16777215 6 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday
select c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, select c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12,
@ -2078,26 +2078,26 @@ def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63 def @arg10 5 23 0 Y 32896 31 63
def @arg11 246 83 0 Y 128 30 63 def @arg11 246 83 0 Y 128 30 63
def @arg12 246 83 0 Y 128 30 63 def @arg12 246 83 0 Y 128 30 63
def @arg13 251 16777216 0 Y 128 31 63 def @arg13 250 16777215 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63 def @arg14 250 16777215 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 0 Y 128 31 63 def @arg16 250 16777215 0 Y 128 31 63
def @arg17 8 20 0 Y 32928 0 63 def @arg17 8 20 0 Y 32928 0 63
def @arg18 8 20 0 Y 32896 0 63 def @arg18 8 20 0 Y 32896 0 63
def @arg19 8 20 0 Y 32896 0 63 def @arg19 8 20 0 Y 32896 0 63
def @arg20 251 16777216 0 Y 0 31 8 def @arg20 250 16777215 0 Y 0 31 8
def @arg21 251 16777216 0 Y 0 31 8 def @arg21 250 16777215 0 Y 0 31 8
def @arg22 251 16777216 0 Y 0 31 8 def @arg22 250 16777215 0 Y 0 31 8
def @arg23 251 16777216 0 Y 128 31 63 def @arg23 250 16777215 0 Y 128 31 63
def @arg24 251 16777216 0 Y 0 31 8 def @arg24 250 16777215 0 Y 0 31 8
def @arg25 251 16777216 0 Y 128 31 63 def @arg25 250 16777215 0 Y 128 31 63
def @arg26 251 16777216 0 Y 0 31 8 def @arg26 250 16777215 0 Y 0 31 8
def @arg27 251 16777216 0 Y 128 31 63 def @arg27 250 16777215 0 Y 128 31 63
def @arg28 251 16777216 0 Y 0 31 8 def @arg28 250 16777215 0 Y 0 31 8
def @arg29 251 16777216 0 Y 128 31 63 def @arg29 250 16777215 0 Y 128 31 63
def @arg30 251 16777216 0 Y 0 31 8 def @arg30 250 16777215 0 Y 0 31 8
def @arg31 251 16777216 0 Y 0 31 8 def @arg31 250 16777215 0 Y 0 31 8
def @arg32 251 16777216 0 Y 0 31 8 def @arg32 250 16777215 0 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
prepare stmt1 from "select c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, prepare stmt1 from "select c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12,
@ -2124,26 +2124,26 @@ def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63 def @arg10 5 23 1 Y 32896 31 63
def @arg11 246 83 6 Y 128 30 63 def @arg11 246 83 6 Y 128 30 63
def @arg12 246 83 6 Y 128 30 63 def @arg12 246 83 6 Y 128 30 63
def @arg13 251 16777216 10 Y 128 31 63 def @arg13 250 16777215 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63 def @arg14 250 16777215 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 8 Y 128 31 63 def @arg16 250 16777215 8 Y 128 31 63
def @arg17 8 20 4 Y 32928 0 63 def @arg17 8 20 4 Y 32928 0 63
def @arg18 8 20 1 Y 32896 0 63 def @arg18 8 20 1 Y 32896 0 63
def @arg19 8 20 1 Y 32896 0 63 def @arg19 8 20 1 Y 32896 0 63
def @arg20 251 16777216 1 Y 0 31 8 def @arg20 250 16777215 1 Y 0 31 8
def @arg21 251 16777216 10 Y 0 31 8 def @arg21 250 16777215 10 Y 0 31 8
def @arg22 251 16777216 30 Y 0 31 8 def @arg22 250 16777215 30 Y 0 31 8
def @arg23 251 16777216 8 Y 128 31 63 def @arg23 250 16777215 8 Y 128 31 63
def @arg24 251 16777216 8 Y 0 31 8 def @arg24 250 16777215 8 Y 0 31 8
def @arg25 251 16777216 4 Y 128 31 63 def @arg25 250 16777215 4 Y 128 31 63
def @arg26 251 16777216 4 Y 0 31 8 def @arg26 250 16777215 4 Y 0 31 8
def @arg27 251 16777216 10 Y 128 31 63 def @arg27 250 16777215 10 Y 128 31 63
def @arg28 251 16777216 10 Y 0 31 8 def @arg28 250 16777215 10 Y 0 31 8
def @arg29 251 16777216 8 Y 128 31 63 def @arg29 250 16777215 8 Y 128 31 63
def @arg30 251 16777216 8 Y 0 31 8 def @arg30 250 16777215 8 Y 0 31 8
def @arg31 251 16777216 3 Y 0 31 8 def @arg31 250 16777215 3 Y 0 31 8
def @arg32 251 16777216 6 Y 0 31 8 def @arg32 250 16777215 6 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday
set @my_key= 0 ; set @my_key= 0 ;
@ -2162,26 +2162,26 @@ def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63 def @arg10 5 23 0 Y 32896 31 63
def @arg11 246 83 0 Y 128 30 63 def @arg11 246 83 0 Y 128 30 63
def @arg12 246 83 0 Y 128 30 63 def @arg12 246 83 0 Y 128 30 63
def @arg13 251 16777216 0 Y 128 31 63 def @arg13 250 16777215 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63 def @arg14 250 16777215 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 0 Y 128 31 63 def @arg16 250 16777215 0 Y 128 31 63
def @arg17 8 20 0 Y 32928 0 63 def @arg17 8 20 0 Y 32928 0 63
def @arg18 8 20 0 Y 32896 0 63 def @arg18 8 20 0 Y 32896 0 63
def @arg19 8 20 0 Y 32896 0 63 def @arg19 8 20 0 Y 32896 0 63
def @arg20 251 16777216 0 Y 0 31 8 def @arg20 250 16777215 0 Y 0 31 8
def @arg21 251 16777216 0 Y 0 31 8 def @arg21 250 16777215 0 Y 0 31 8
def @arg22 251 16777216 0 Y 0 31 8 def @arg22 250 16777215 0 Y 0 31 8
def @arg23 251 16777216 0 Y 128 31 63 def @arg23 250 16777215 0 Y 128 31 63
def @arg24 251 16777216 0 Y 0 31 8 def @arg24 250 16777215 0 Y 0 31 8
def @arg25 251 16777216 0 Y 128 31 63 def @arg25 250 16777215 0 Y 128 31 63
def @arg26 251 16777216 0 Y 0 31 8 def @arg26 250 16777215 0 Y 0 31 8
def @arg27 251 16777216 0 Y 128 31 63 def @arg27 250 16777215 0 Y 128 31 63
def @arg28 251 16777216 0 Y 0 31 8 def @arg28 250 16777215 0 Y 0 31 8
def @arg29 251 16777216 0 Y 128 31 63 def @arg29 250 16777215 0 Y 128 31 63
def @arg30 251 16777216 0 Y 0 31 8 def @arg30 250 16777215 0 Y 0 31 8
def @arg31 251 16777216 0 Y 0 31 8 def @arg31 250 16777215 0 Y 0 31 8
def @arg32 251 16777216 0 Y 0 31 8 def @arg32 250 16777215 0 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
prepare stmt1 from "select c1 into ? from t9 where c1= 1" ; prepare stmt1 from "select c1 into ? from t9 where c1= 1" ;
@ -4871,26 +4871,26 @@ def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63 def @arg10 5 23 1 Y 32896 31 63
def @arg11 246 83 6 Y 128 30 63 def @arg11 246 83 6 Y 128 30 63
def @arg12 246 83 6 Y 128 30 63 def @arg12 246 83 6 Y 128 30 63
def @arg13 251 16777216 10 Y 128 31 63 def @arg13 250 16777215 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63 def @arg14 250 16777215 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 8 Y 128 31 63 def @arg16 250 16777215 8 Y 128 31 63
def @arg17 8 20 4 Y 32928 0 63 def @arg17 8 20 4 Y 32928 0 63
def @arg18 8 20 1 Y 32896 0 63 def @arg18 8 20 1 Y 32896 0 63
def @arg19 8 20 1 Y 32896 0 63 def @arg19 8 20 1 Y 32896 0 63
def @arg20 251 16777216 1 Y 0 31 8 def @arg20 250 16777215 1 Y 0 31 8
def @arg21 251 16777216 10 Y 0 31 8 def @arg21 250 16777215 10 Y 0 31 8
def @arg22 251 16777216 30 Y 0 31 8 def @arg22 250 16777215 30 Y 0 31 8
def @arg23 251 16777216 8 Y 128 31 63 def @arg23 250 16777215 8 Y 128 31 63
def @arg24 251 16777216 8 Y 0 31 8 def @arg24 250 16777215 8 Y 0 31 8
def @arg25 251 16777216 4 Y 128 31 63 def @arg25 250 16777215 4 Y 128 31 63
def @arg26 251 16777216 4 Y 0 31 8 def @arg26 250 16777215 4 Y 0 31 8
def @arg27 251 16777216 10 Y 128 31 63 def @arg27 250 16777215 10 Y 128 31 63
def @arg28 251 16777216 10 Y 0 31 8 def @arg28 250 16777215 10 Y 0 31 8
def @arg29 251 16777216 8 Y 128 31 63 def @arg29 250 16777215 8 Y 128 31 63
def @arg30 251 16777216 8 Y 0 31 8 def @arg30 250 16777215 8 Y 0 31 8
def @arg31 251 16777216 3 Y 0 31 8 def @arg31 250 16777215 3 Y 0 31 8
def @arg32 251 16777216 6 Y 0 31 8 def @arg32 250 16777215 6 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday
select @arg01:= c1, @arg02:= c2, @arg03:= c3, @arg04:= c4, select @arg01:= c1, @arg02:= c2, @arg03:= c3, @arg04:= c4,
@ -4918,26 +4918,26 @@ def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63 def @arg10 5 23 0 Y 32896 31 63
def @arg11 246 83 0 Y 128 30 63 def @arg11 246 83 0 Y 128 30 63
def @arg12 246 83 0 Y 128 30 63 def @arg12 246 83 0 Y 128 30 63
def @arg13 251 16777216 0 Y 128 31 63 def @arg13 250 16777215 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63 def @arg14 250 16777215 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 0 Y 128 31 63 def @arg16 250 16777215 0 Y 128 31 63
def @arg17 8 20 0 Y 32928 0 63 def @arg17 8 20 0 Y 32928 0 63
def @arg18 8 20 0 Y 32896 0 63 def @arg18 8 20 0 Y 32896 0 63
def @arg19 8 20 0 Y 32896 0 63 def @arg19 8 20 0 Y 32896 0 63
def @arg20 251 16777216 0 Y 0 31 8 def @arg20 250 16777215 0 Y 0 31 8
def @arg21 251 16777216 0 Y 0 31 8 def @arg21 250 16777215 0 Y 0 31 8
def @arg22 251 16777216 0 Y 0 31 8 def @arg22 250 16777215 0 Y 0 31 8
def @arg23 251 16777216 0 Y 128 31 63 def @arg23 250 16777215 0 Y 128 31 63
def @arg24 251 16777216 0 Y 0 31 8 def @arg24 250 16777215 0 Y 0 31 8
def @arg25 251 16777216 0 Y 128 31 63 def @arg25 250 16777215 0 Y 128 31 63
def @arg26 251 16777216 0 Y 0 31 8 def @arg26 250 16777215 0 Y 0 31 8
def @arg27 251 16777216 0 Y 128 31 63 def @arg27 250 16777215 0 Y 128 31 63
def @arg28 251 16777216 0 Y 0 31 8 def @arg28 250 16777215 0 Y 0 31 8
def @arg29 251 16777216 0 Y 128 31 63 def @arg29 250 16777215 0 Y 128 31 63
def @arg30 251 16777216 0 Y 0 31 8 def @arg30 250 16777215 0 Y 0 31 8
def @arg31 251 16777216 0 Y 0 31 8 def @arg31 250 16777215 0 Y 0 31 8
def @arg32 251 16777216 0 Y 0 31 8 def @arg32 250 16777215 0 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
prepare stmt1 from "select prepare stmt1 from "select
@ -4968,26 +4968,26 @@ def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63 def @arg10 5 23 1 Y 32896 31 63
def @arg11 246 83 6 Y 128 30 63 def @arg11 246 83 6 Y 128 30 63
def @arg12 246 83 6 Y 128 30 63 def @arg12 246 83 6 Y 128 30 63
def @arg13 251 16777216 10 Y 128 31 63 def @arg13 250 16777215 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63 def @arg14 250 16777215 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 8 Y 128 31 63 def @arg16 250 16777215 8 Y 128 31 63
def @arg17 8 20 4 Y 32928 0 63 def @arg17 8 20 4 Y 32928 0 63
def @arg18 8 20 1 Y 32896 0 63 def @arg18 8 20 1 Y 32896 0 63
def @arg19 8 20 1 Y 32896 0 63 def @arg19 8 20 1 Y 32896 0 63
def @arg20 251 16777216 1 Y 0 31 8 def @arg20 250 16777215 1 Y 0 31 8
def @arg21 251 16777216 10 Y 0 31 8 def @arg21 250 16777215 10 Y 0 31 8
def @arg22 251 16777216 30 Y 0 31 8 def @arg22 250 16777215 30 Y 0 31 8
def @arg23 251 16777216 8 Y 128 31 63 def @arg23 250 16777215 8 Y 128 31 63
def @arg24 251 16777216 8 Y 0 31 8 def @arg24 250 16777215 8 Y 0 31 8
def @arg25 251 16777216 4 Y 128 31 63 def @arg25 250 16777215 4 Y 128 31 63
def @arg26 251 16777216 4 Y 0 31 8 def @arg26 250 16777215 4 Y 0 31 8
def @arg27 251 16777216 10 Y 128 31 63 def @arg27 250 16777215 10 Y 128 31 63
def @arg28 251 16777216 10 Y 0 31 8 def @arg28 250 16777215 10 Y 0 31 8
def @arg29 251 16777216 8 Y 128 31 63 def @arg29 250 16777215 8 Y 128 31 63
def @arg30 251 16777216 8 Y 0 31 8 def @arg30 250 16777215 8 Y 0 31 8
def @arg31 251 16777216 3 Y 0 31 8 def @arg31 250 16777215 3 Y 0 31 8
def @arg32 251 16777216 6 Y 0 31 8 def @arg32 250 16777215 6 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday
set @my_key= 0 ; set @my_key= 0 ;
@ -5008,26 +5008,26 @@ def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63 def @arg10 5 23 0 Y 32896 31 63
def @arg11 246 83 0 Y 128 30 63 def @arg11 246 83 0 Y 128 30 63
def @arg12 246 83 0 Y 128 30 63 def @arg12 246 83 0 Y 128 30 63
def @arg13 251 16777216 0 Y 128 31 63 def @arg13 250 16777215 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63 def @arg14 250 16777215 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 0 Y 128 31 63 def @arg16 250 16777215 0 Y 128 31 63
def @arg17 8 20 0 Y 32928 0 63 def @arg17 8 20 0 Y 32928 0 63
def @arg18 8 20 0 Y 32896 0 63 def @arg18 8 20 0 Y 32896 0 63
def @arg19 8 20 0 Y 32896 0 63 def @arg19 8 20 0 Y 32896 0 63
def @arg20 251 16777216 0 Y 0 31 8 def @arg20 250 16777215 0 Y 0 31 8
def @arg21 251 16777216 0 Y 0 31 8 def @arg21 250 16777215 0 Y 0 31 8
def @arg22 251 16777216 0 Y 0 31 8 def @arg22 250 16777215 0 Y 0 31 8
def @arg23 251 16777216 0 Y 128 31 63 def @arg23 250 16777215 0 Y 128 31 63
def @arg24 251 16777216 0 Y 0 31 8 def @arg24 250 16777215 0 Y 0 31 8
def @arg25 251 16777216 0 Y 128 31 63 def @arg25 250 16777215 0 Y 128 31 63
def @arg26 251 16777216 0 Y 0 31 8 def @arg26 250 16777215 0 Y 0 31 8
def @arg27 251 16777216 0 Y 128 31 63 def @arg27 250 16777215 0 Y 128 31 63
def @arg28 251 16777216 0 Y 0 31 8 def @arg28 250 16777215 0 Y 0 31 8
def @arg29 251 16777216 0 Y 128 31 63 def @arg29 250 16777215 0 Y 128 31 63
def @arg30 251 16777216 0 Y 0 31 8 def @arg30 250 16777215 0 Y 0 31 8
def @arg31 251 16777216 0 Y 0 31 8 def @arg31 250 16777215 0 Y 0 31 8
def @arg32 251 16777216 0 Y 0 31 8 def @arg32 250 16777215 0 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
prepare stmt1 from "select ? := c1 from t9 where c1= 1" ; prepare stmt1 from "select ? := c1 from t9 where c1= 1" ;
@ -5056,26 +5056,26 @@ def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63 def @arg10 5 23 1 Y 32896 31 63
def @arg11 246 83 6 Y 128 30 63 def @arg11 246 83 6 Y 128 30 63
def @arg12 246 83 6 Y 128 30 63 def @arg12 246 83 6 Y 128 30 63
def @arg13 251 16777216 10 Y 128 31 63 def @arg13 250 16777215 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63 def @arg14 250 16777215 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 8 Y 128 31 63 def @arg16 250 16777215 8 Y 128 31 63
def @arg17 8 20 4 Y 32928 0 63 def @arg17 8 20 4 Y 32928 0 63
def @arg18 8 20 1 Y 32896 0 63 def @arg18 8 20 1 Y 32896 0 63
def @arg19 8 20 1 Y 32896 0 63 def @arg19 8 20 1 Y 32896 0 63
def @arg20 251 16777216 1 Y 0 31 8 def @arg20 250 16777215 1 Y 0 31 8
def @arg21 251 16777216 10 Y 0 31 8 def @arg21 250 16777215 10 Y 0 31 8
def @arg22 251 16777216 30 Y 0 31 8 def @arg22 250 16777215 30 Y 0 31 8
def @arg23 251 16777216 8 Y 128 31 63 def @arg23 250 16777215 8 Y 128 31 63
def @arg24 251 16777216 8 Y 0 31 8 def @arg24 250 16777215 8 Y 0 31 8
def @arg25 251 16777216 4 Y 128 31 63 def @arg25 250 16777215 4 Y 128 31 63
def @arg26 251 16777216 4 Y 0 31 8 def @arg26 250 16777215 4 Y 0 31 8
def @arg27 251 16777216 10 Y 128 31 63 def @arg27 250 16777215 10 Y 128 31 63
def @arg28 251 16777216 10 Y 0 31 8 def @arg28 250 16777215 10 Y 0 31 8
def @arg29 251 16777216 8 Y 128 31 63 def @arg29 250 16777215 8 Y 128 31 63
def @arg30 251 16777216 8 Y 0 31 8 def @arg30 250 16777215 8 Y 0 31 8
def @arg31 251 16777216 3 Y 0 31 8 def @arg31 250 16777215 3 Y 0 31 8
def @arg32 251 16777216 6 Y 0 31 8 def @arg32 250 16777215 6 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday
select c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, select c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12,
@ -5100,26 +5100,26 @@ def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63 def @arg10 5 23 0 Y 32896 31 63
def @arg11 246 83 0 Y 128 30 63 def @arg11 246 83 0 Y 128 30 63
def @arg12 246 83 0 Y 128 30 63 def @arg12 246 83 0 Y 128 30 63
def @arg13 251 16777216 0 Y 128 31 63 def @arg13 250 16777215 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63 def @arg14 250 16777215 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 0 Y 128 31 63 def @arg16 250 16777215 0 Y 128 31 63
def @arg17 8 20 0 Y 32928 0 63 def @arg17 8 20 0 Y 32928 0 63
def @arg18 8 20 0 Y 32896 0 63 def @arg18 8 20 0 Y 32896 0 63
def @arg19 8 20 0 Y 32896 0 63 def @arg19 8 20 0 Y 32896 0 63
def @arg20 251 16777216 0 Y 0 31 8 def @arg20 250 16777215 0 Y 0 31 8
def @arg21 251 16777216 0 Y 0 31 8 def @arg21 250 16777215 0 Y 0 31 8
def @arg22 251 16777216 0 Y 0 31 8 def @arg22 250 16777215 0 Y 0 31 8
def @arg23 251 16777216 0 Y 128 31 63 def @arg23 250 16777215 0 Y 128 31 63
def @arg24 251 16777216 0 Y 0 31 8 def @arg24 250 16777215 0 Y 0 31 8
def @arg25 251 16777216 0 Y 128 31 63 def @arg25 250 16777215 0 Y 128 31 63
def @arg26 251 16777216 0 Y 0 31 8 def @arg26 250 16777215 0 Y 0 31 8
def @arg27 251 16777216 0 Y 128 31 63 def @arg27 250 16777215 0 Y 128 31 63
def @arg28 251 16777216 0 Y 0 31 8 def @arg28 250 16777215 0 Y 0 31 8
def @arg29 251 16777216 0 Y 128 31 63 def @arg29 250 16777215 0 Y 128 31 63
def @arg30 251 16777216 0 Y 0 31 8 def @arg30 250 16777215 0 Y 0 31 8
def @arg31 251 16777216 0 Y 0 31 8 def @arg31 250 16777215 0 Y 0 31 8
def @arg32 251 16777216 0 Y 0 31 8 def @arg32 250 16777215 0 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
prepare stmt1 from "select c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, prepare stmt1 from "select c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12,
@ -5146,26 +5146,26 @@ def @arg09 5 23 1 Y 32896 31 63
def @arg10 5 23 1 Y 32896 31 63 def @arg10 5 23 1 Y 32896 31 63
def @arg11 246 83 6 Y 128 30 63 def @arg11 246 83 6 Y 128 30 63
def @arg12 246 83 6 Y 128 30 63 def @arg12 246 83 6 Y 128 30 63
def @arg13 251 16777216 10 Y 128 31 63 def @arg13 250 16777215 10 Y 128 31 63
def @arg14 251 16777216 19 Y 128 31 63 def @arg14 250 16777215 19 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 8 Y 128 31 63 def @arg16 250 16777215 8 Y 128 31 63
def @arg17 8 20 4 Y 32928 0 63 def @arg17 8 20 4 Y 32928 0 63
def @arg18 8 20 1 Y 32896 0 63 def @arg18 8 20 1 Y 32896 0 63
def @arg19 8 20 1 Y 32896 0 63 def @arg19 8 20 1 Y 32896 0 63
def @arg20 251 16777216 1 Y 0 31 8 def @arg20 250 16777215 1 Y 0 31 8
def @arg21 251 16777216 10 Y 0 31 8 def @arg21 250 16777215 10 Y 0 31 8
def @arg22 251 16777216 30 Y 0 31 8 def @arg22 250 16777215 30 Y 0 31 8
def @arg23 251 16777216 8 Y 128 31 63 def @arg23 250 16777215 8 Y 128 31 63
def @arg24 251 16777216 8 Y 0 31 8 def @arg24 250 16777215 8 Y 0 31 8
def @arg25 251 16777216 4 Y 128 31 63 def @arg25 250 16777215 4 Y 128 31 63
def @arg26 251 16777216 4 Y 0 31 8 def @arg26 250 16777215 4 Y 0 31 8
def @arg27 251 16777216 10 Y 128 31 63 def @arg27 250 16777215 10 Y 128 31 63
def @arg28 251 16777216 10 Y 0 31 8 def @arg28 250 16777215 10 Y 0 31 8
def @arg29 251 16777216 8 Y 128 31 63 def @arg29 250 16777215 8 Y 128 31 63
def @arg30 251 16777216 8 Y 0 31 8 def @arg30 250 16777215 8 Y 0 31 8
def @arg31 251 16777216 3 Y 0 31 8 def @arg31 250 16777215 3 Y 0 31 8
def @arg32 251 16777216 6 Y 0 31 8 def @arg32 250 16777215 6 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday
set @my_key= 0 ; set @my_key= 0 ;
@ -5184,26 +5184,26 @@ def @arg09 5 23 0 Y 32896 31 63
def @arg10 5 23 0 Y 32896 31 63 def @arg10 5 23 0 Y 32896 31 63
def @arg11 246 83 0 Y 128 30 63 def @arg11 246 83 0 Y 128 30 63
def @arg12 246 83 0 Y 128 30 63 def @arg12 246 83 0 Y 128 30 63
def @arg13 251 16777216 0 Y 128 31 63 def @arg13 250 16777215 0 Y 128 31 63
def @arg14 251 16777216 0 Y 128 31 63 def @arg14 250 16777215 0 Y 128 31 63
def @arg15 251 16777216 19 Y 128 31 63 def @arg15 250 16777215 19 Y 128 31 63
def @arg16 251 16777216 0 Y 128 31 63 def @arg16 250 16777215 0 Y 128 31 63
def @arg17 8 20 0 Y 32928 0 63 def @arg17 8 20 0 Y 32928 0 63
def @arg18 8 20 0 Y 32896 0 63 def @arg18 8 20 0 Y 32896 0 63
def @arg19 8 20 0 Y 32896 0 63 def @arg19 8 20 0 Y 32896 0 63
def @arg20 251 16777216 0 Y 0 31 8 def @arg20 250 16777215 0 Y 0 31 8
def @arg21 251 16777216 0 Y 0 31 8 def @arg21 250 16777215 0 Y 0 31 8
def @arg22 251 16777216 0 Y 0 31 8 def @arg22 250 16777215 0 Y 0 31 8
def @arg23 251 16777216 0 Y 128 31 63 def @arg23 250 16777215 0 Y 128 31 63
def @arg24 251 16777216 0 Y 0 31 8 def @arg24 250 16777215 0 Y 0 31 8
def @arg25 251 16777216 0 Y 128 31 63 def @arg25 250 16777215 0 Y 128 31 63
def @arg26 251 16777216 0 Y 0 31 8 def @arg26 250 16777215 0 Y 0 31 8
def @arg27 251 16777216 0 Y 128 31 63 def @arg27 250 16777215 0 Y 128 31 63
def @arg28 251 16777216 0 Y 0 31 8 def @arg28 250 16777215 0 Y 0 31 8
def @arg29 251 16777216 0 Y 128 31 63 def @arg29 250 16777215 0 Y 128 31 63
def @arg30 251 16777216 0 Y 0 31 8 def @arg30 250 16777215 0 Y 0 31 8
def @arg31 251 16777216 0 Y 0 31 8 def @arg31 250 16777215 0 Y 0 31 8
def @arg32 251 16777216 0 Y 0 31 8 def @arg32 250 16777215 0 Y 0 31 8
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32 @arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
prepare stmt1 from "select c1 into ? from t9 where c1= 1" ; prepare stmt1 from "select c1 into ? from t9 where c1= 1" ;

View file

@ -4,6 +4,7 @@ drop procedure if exists p_verify_reprepare_count;
drop procedure if exists p1; drop procedure if exists p1;
drop function if exists f1; drop function if exists f1;
drop view if exists v1, v2; drop view if exists v1, v2;
TRUNCATE TABLE mysql.general_log;
create procedure p_verify_reprepare_count(expected int) create procedure p_verify_reprepare_count(expected int)
begin begin
declare old_reprepare_count int default @reprepare_count; declare old_reprepare_count int default @reprepare_count;

View file

@ -1653,4 +1653,17 @@ a b
0 0 0 0
1 1 1 1
DROP TABLE t1; DROP TABLE t1;
#
# Bug #54802: 'NOT BETWEEN' evaluation is incorrect
#
CREATE TABLE t1 (c_key INT, c_notkey INT, KEY(c_key));
INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3);
EXPLAIN SELECT * FROM t1 WHERE 2 NOT BETWEEN c_notkey AND c_key;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL c_key NULL NULL NULL 3 Using where
SELECT * FROM t1 WHERE 2 NOT BETWEEN c_notkey AND c_key;
c_key c_notkey
1 1
3 3
DROP TABLE t1;
End of 5.1 tests End of 5.1 tests

View file

@ -466,3 +466,26 @@ SELECT 1 FROM t1 WHERE ROW(a, b) >=
ROW('1', (SELECT 1 FROM t1 WHERE a > 1234)); ROW('1', (SELECT 1 FROM t1 WHERE a > 1234));
1 1
DROP TABLE t1; DROP TABLE t1;
#
# Bug #54190: Comparison to row subquery produces incorrect result
#
SELECT ROW(1,2) = (SELECT 1,2 FROM DUAL WHERE 1 = 0);
ROW(1,2) = (SELECT 1,2 FROM DUAL WHERE 1 = 0)
NULL
SELECT ROW(1,2) = (SELECT 1,3 FROM DUAL WHERE 1 = 0);
ROW(1,2) = (SELECT 1,3 FROM DUAL WHERE 1 = 0)
NULL
CREATE TABLE t1 (i INT);
INSERT INTO t1 () VALUES (1), (2), (3);
SELECT ROW(1,2) = (SELECT 1,2 FROM t1 WHERE 1 = 0);
ROW(1,2) = (SELECT 1,2 FROM t1 WHERE 1 = 0)
NULL
SELECT ROW(1,2) = (SELECT 1,3 FROM t1 WHERE 1 = 0);
ROW(1,2) = (SELECT 1,3 FROM t1 WHERE 1 = 0)
NULL
SELECT i FROM t1 WHERE ROW(1,2) = (SELECT 1,2 FROM DUAL WHERE 1 = 0);
i
SELECT i FROM t1 WHERE ROW(1,2) = (SELECT 1,3 FROM DUAL WHERE 1 = 0);
i
DROP TABLE t1;
End of 5.1 tests

View file

@ -922,7 +922,7 @@ select a, (select a,b,c from t1 where t1.a=t2.a) = ROW(a,2,'a'),(select c from t
a (select a,b,c from t1 where t1.a=t2.a) = ROW(a,2,'a') (select c from t1 where a=t2.a) a (select a,b,c from t1 where t1.a=t2.a) = ROW(a,2,'a') (select c from t1 where a=t2.a)
1 1 a 1 1 a
2 0 b 2 0 b
NULL 0 NULL NULL NULL NULL
select a, (select a,b,c from t1 where t1.a=t2.a) = ROW(a,3,'b'),(select c from t1 where a=t2.a) from t2; select a, (select a,b,c from t1 where t1.a=t2.a) = ROW(a,3,'b'),(select c from t1 where a=t2.a) from t2;
a (select a,b,c from t1 where t1.a=t2.a) = ROW(a,3,'b') (select c from t1 where a=t2.a) a (select a,b,c from t1 where t1.a=t2.a) = ROW(a,3,'b') (select c from t1 where a=t2.a)
1 0 a 1 0 a
@ -932,7 +932,7 @@ select a, (select a,b,c from t1 where t1.a=t2.a) = ROW(a,4,'c'),(select c from t
a (select a,b,c from t1 where t1.a=t2.a) = ROW(a,4,'c') (select c from t1 where a=t2.a) a (select a,b,c from t1 where t1.a=t2.a) = ROW(a,4,'c') (select c from t1 where a=t2.a)
1 0 a 1 0 a
2 0 b 2 0 b
NULL 0 NULL NULL NULL NULL
drop table t1,t2; drop table t1,t2;
create table t1 (a int, b real, c varchar(10)); create table t1 (a int, b real, c varchar(10));
insert into t1 values (1, 1, 'a'), (2,2,'b'), (NULL, 2, 'b'); insert into t1 values (1, 1, 'a'), (2,2,'b'), (NULL, 2, 'b');

View file

@ -81,4 +81,110 @@ col_int_nokey sub
0 NULL 0 NULL
2 11 2 11
DROP TABLE t1,t2; DROP TABLE t1,t2;
End of 5.1 tests. #
# Bug#54568: create view cause Assertion failed: 0,
# file .\item_subselect.cc, line 836
#
EXPLAIN SELECT 1 LIKE ( 1 IN ( SELECT 1 ) );
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL No tables used
Warnings:
Note 1249 Select 2 was reduced during optimization
DESCRIBE SELECT 1 LIKE ( 1 IN ( SELECT 1 ) );
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL No tables used
Warnings:
Note 1249 Select 2 was reduced during optimization
# None of the below should crash
CREATE VIEW v1 AS SELECT 1 LIKE ( 1 IN ( SELECT 1 ) );
CREATE VIEW v2 AS SELECT 1 LIKE '%' ESCAPE ( 1 IN ( SELECT 1 ) );
DROP VIEW v1, v2;
#
# Bug#51070: Query with a NOT IN subquery predicate returns a wrong
# result set
#
CREATE TABLE t1 ( a INT, b INT );
INSERT INTO t1 VALUES ( 1, NULL ), ( 2, NULL );
CREATE TABLE t2 ( c INT, d INT );
INSERT INTO t2 VALUES ( NULL, 3 ), ( NULL, 4 );
CREATE TABLE t3 ( e INT, f INT );
INSERT INTO t3 VALUES ( NULL, NULL ), ( NULL, NULL );
CREATE TABLE t4 ( a INT );
INSERT INTO t4 VALUES (1), (2), (3);
CREATE TABLE t5 ( a INT );
INSERT INTO t5 VALUES (NULL), (2);
EXPLAIN
SELECT * FROM t1 WHERE ( a, b ) NOT IN ( SELECT c, d FROM t2 );
id select_type table type possible_keys key key_len ref rows Extra
x PRIMARY x x x x x x x x
x DEPENDENT SUBQUERY x x x x x x x x
SELECT * FROM t1 WHERE ( a, b ) NOT IN ( SELECT c, d FROM t2 );
a b
EXPLAIN
SELECT * FROM t1 WHERE ( a, b ) NOT IN ( SELECT c, d FROM t2 ) IS NULL;
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Using where
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where
SELECT * FROM t1 WHERE ( a, b ) NOT IN ( SELECT c, d FROM t2 ) IS NULL;
a b
1 NULL
2 NULL
SELECT * FROM t1 WHERE ( a, b ) IN ( SELECT c, d FROM t2 ) IS NULL;
a b
1 NULL
2 NULL
SELECT * FROM t1 WHERE ( a, b ) NOT IN ( SELECT c, d FROM t2 ) IS UNKNOWN;
a b
1 NULL
2 NULL
SELECT * FROM t1 WHERE (( a, b ) NOT IN ( SELECT c, d FROM t2 )) IS UNKNOWN;
a b
1 NULL
2 NULL
SELECT * FROM t1 WHERE 1 = 1 AND ( a, b ) NOT IN ( SELECT c, d FROM t2 );
a b
EXPLAIN
SELECT * FROM t1 WHERE ( a, b ) NOT IN ( SELECT e, f FROM t3 );
id select_type table type possible_keys key key_len ref rows Extra
x PRIMARY x x x x x x x x
x DEPENDENT SUBQUERY x x x x x x x x
SELECT * FROM t1 WHERE ( a, b ) NOT IN ( SELECT e, f FROM t3 );
a b
EXPLAIN
SELECT * FROM t2 WHERE ( c, d ) NOT IN ( SELECT a, b FROM t1 );
id select_type table type possible_keys key key_len ref rows Extra
x PRIMARY x x x x x x x x
x DEPENDENT SUBQUERY x x x x x x x x
SELECT * FROM t2 WHERE ( c, d ) NOT IN ( SELECT a, b FROM t1 );
c d
EXPLAIN
SELECT * FROM t3 WHERE ( e, f ) NOT IN ( SELECT c, d FROM t2 );
id select_type table type possible_keys key key_len ref rows Extra
x PRIMARY x x x x x x x x
x DEPENDENT SUBQUERY x x x x x x x x
SELECT * FROM t3 WHERE ( e, f ) NOT IN ( SELECT c, d FROM t2 );
e f
EXPLAIN
SELECT * FROM t2 WHERE ( c, d ) NOT IN ( SELECT e, f FROM t3 );
id select_type table type possible_keys key key_len ref rows Extra
x PRIMARY x x x x x x x x
x DEPENDENT SUBQUERY x x x x x x x x
SELECT * FROM t2 WHERE ( c, d ) NOT IN ( SELECT e, f FROM t3 );
c d
SELECT * FROM t1 WHERE ( a, b ) NOT IN
( SELECT c, d FROM t2 WHERE c = 1 AND c <> 1 );
a b
1 NULL
2 NULL
SELECT * FROM t1 WHERE b NOT IN ( SELECT c FROM t2 WHERE c = 1 );
a b
1 NULL
2 NULL
SELECT * FROM t1 WHERE NULL NOT IN ( SELECT c FROM t2 WHERE c = 1 AND c <> 1 );
a b
1 NULL
2 NULL
DROP TABLE t1, t2, t3, t4, t5;
#
# End of 5.1 tests.
#

View file

@ -60,7 +60,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t0 ALL NULL NULL NULL NULL 4 100.00 1 SIMPLE t0 ALL NULL NULL NULL NULL 4 100.00
1 SIMPLE t1 ALL NULL NULL NULL NULL 4 100.00 1 SIMPLE t1 ALL NULL NULL NULL NULL 4 100.00
Warnings: Warnings:
Note 1003 select `test`.`t0`.`a` AS `a` from `test`.`t0` left join (`test`.`t1`) on((`test`.`t0`.`a` = `test`.`t1`.`a`)) where 1 Note 1003 select `test`.`t0`.`a` AS `a` from `test`.`t0` left join (`test`.`t1`) on((`test`.`t1`.`a` = `test`.`t0`.`a`)) where 1
# Elimination with aggregate functions # Elimination with aggregate functions
explain select count(*) from t1 left join t2 on t2.a=t1.a; explain select count(*) from t1 left join t2 on t2.a=t1.a;
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

View file

@ -296,4 +296,16 @@ CONVERT_TZ(NOW(), 'UTC', 'Europe/Moscow') IS NULL
UPDATE t1 SET t = CONVERT_TZ(t, 'UTC', 'Europe/Moscow'); UPDATE t1 SET t = CONVERT_TZ(t, 'UTC', 'Europe/Moscow');
UNLOCK TABLES; UNLOCK TABLES;
DROP TABLE t1; DROP TABLE t1;
#
# Bug #55424: convert_tz crashes when fed invalid data
#
CREATE TABLE t1 (a SET('x') NOT NULL);
INSERT INTO t1 VALUES ('');
SELECT CONVERT_TZ(1, a, 1) FROM t1;
CONVERT_TZ(1, a, 1)
NULL
SELECT CONVERT_TZ(1, 1, a) FROM t1;
CONVERT_TZ(1, 1, a)
NULL
DROP TABLE t1;
End of 5.1 tests End of 5.1 tests

View file

@ -1797,11 +1797,8 @@ Note 1050 Table 'v1' already exists
set @id=last_insert_id(); set @id=last_insert_id();
select * from t1; select * from t1;
id operation id operation
1 CREATE TABLE ... SELECT, inserting a new key
select * from t1_op_log; select * from t1_op_log;
operation operation
Before INSERT, new=CREATE TABLE ... SELECT, inserting a new key
After INSERT, new=CREATE TABLE ... SELECT, inserting a new key
truncate t1_op_log; truncate t1_op_log;
create table if not exists v1 replace create table if not exists v1 replace
select @id, "CREATE TABLE ... REPLACE SELECT, deleting a duplicate key"; select @id, "CREATE TABLE ... REPLACE SELECT, deleting a duplicate key";
@ -1809,13 +1806,8 @@ Warnings:
Note 1050 Table 'v1' already exists Note 1050 Table 'v1' already exists
select * from t1; select * from t1;
id operation id operation
1 CREATE TABLE ... REPLACE SELECT, deleting a duplicate key
select * from t1_op_log; select * from t1_op_log;
operation operation
Before INSERT, new=CREATE TABLE ... REPLACE SELECT, deleting a duplicate key
Before DELETE, old=CREATE TABLE ... SELECT, inserting a new key
After DELETE, old=CREATE TABLE ... SELECT, inserting a new key
After INSERT, new=CREATE TABLE ... REPLACE SELECT, deleting a duplicate key
truncate t1; truncate t1;
truncate t1_op_log; truncate t1_op_log;
insert into v1 (id, operation) insert into v1 (id, operation)

View file

@ -501,4 +501,25 @@ SHOW CREATE TRIGGER db1.trg;
ERROR 42000: Access denied; you need the TRIGGER privilege for this operation ERROR 42000: Access denied; you need the TRIGGER privilege for this operation
DROP USER 'no_rights'@'localhost'; DROP USER 'no_rights'@'localhost';
DROP DATABASE db1; DROP DATABASE db1;
DROP DATABASE IF EXISTS mysqltest_db1;
CREATE DATABASE mysqltest_db1;
USE mysqltest_db1;
GRANT ALL ON mysqltest_db1.* TO mysqltest_u1@localhost;
CREATE TABLE t1 (
a1 int,
a2 int
);
INSERT INTO t1 VALUES (1, 20);
CREATE TRIGGER mysqltest_db1.upd_t1
BEFORE UPDATE ON t1 FOR EACH ROW SET new.a2 = 200;
CREATE TABLE t2 (
a1 int
);
INSERT INTO t2 VALUES (2);
REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_u1@localhost;
UPDATE IGNORE t1, t2 SET t1.a1 = 2, t2.a1 = 3 WHERE t1.a1 = 1 AND t2.a1 = 2;
ERROR 42000: TRIGGER command denied to user 'mysqltest_u1'@'localhost' for table 't1'
DROP DATABASE mysqltest_db1;
DROP USER mysqltest_u1@localhost;
USE test;
End of 5.1 tests. End of 5.1 tests.

View file

@ -527,3 +527,24 @@ f1 f2-f3
5 0 5 0
DROP TABLE t1; DROP TABLE t1;
End of 5.0 tests End of 5.0 tests
#
# Bug #55779: select does not work properly in mysql server
# Version "5.1.42 SUSE MySQL RPM"
#
CREATE TABLE t1 (a TIMESTAMP, KEY (a));
INSERT INTO t1 VALUES ('2000-01-01 00:00:00'), ('2000-01-01 00:00:00'),
('2000-01-01 00:00:01'), ('2000-01-01 00:00:01');
SELECT a FROM t1 WHERE a >= 20000101000000;
a
2000-01-01 00:00:00
2000-01-01 00:00:00
2000-01-01 00:00:01
2000-01-01 00:00:01
SELECT a FROM t1 WHERE a >= '20000101000000';
a
2000-01-01 00:00:00
2000-01-01 00:00:00
2000-01-01 00:00:01
2000-01-01 00:00:01
DROP TABLE t1;
End of 5.1 tests

View file

@ -3,6 +3,7 @@ CREATE FUNCTION metaphon RETURNS STRING SONAME "UDF_EXAMPLE_LIB";
create table t1 (a char); create table t1 (a char);
set GLOBAL query_cache_size=1355776; set GLOBAL query_cache_size=1355776;
reset query cache; reset query cache;
flush status;
select metaphon('MySQL') from t1; select metaphon('MySQL') from t1;
metaphon('MySQL') metaphon('MySQL')
show status like "Qcache_hits"; show status like "Qcache_hits";

View file

@ -141,10 +141,10 @@ USE `#mysql50#../blablabla`;
ERROR 42000: Incorrect database name '#mysql50#../blablabla' ERROR 42000: Incorrect database name '#mysql50#../blablabla'
show full tables; show full tables;
Tables_in_test Table_type Tables_in_test Table_type
#mysql50#ltoriaeinnovacionendesarrolloempres?9120761097220077376?cio_com BASE TABLE #mysql50#ltoriaeinnovacionendesarrolloempres#9120761097220077376#cio_com BASE TABLE
rename table `#mysql50#ltoriaeinnovacionendesarrolloempres?9120761097220077376?cio_com` to `ltoriaeinnovacionendesarrolloempres?9120761097220077376?cio_com`; rename table `#mysql50#ltoriaeinnovacionendesarrolloempres#9120761097220077376#cio_com` to `ltoriaeinnovacionendesarrolloempres#9120761097220077376#cio_com`;
show full tables; show full tables;
Tables_in_test Table_type Tables_in_test Table_type
ltoriaeinnovacionendesarrolloempres?9120761097220077376?cio_com BASE TABLE ltoriaeinnovacionendesarrolloempres#9120761097220077376#cio_com BASE TABLE
drop table `ltoriaeinnovacionendesarrolloempres?9120761097220077376?cio_com`; drop table `ltoriaeinnovacionendesarrolloempres#9120761097220077376#cio_com`;
# End of 5.1 tests # End of 5.1 tests

View file

@ -430,4 +430,21 @@ CREATE TRIGGER t_after_insert AFTER INSERT ON t1 FOR EACH ROW SET @bug42188 = 10
INSERT INTO t1 VALUES (1); INSERT INTO t1 VALUES (1);
INSERT INTO t1 VALUES (1); INSERT INTO t1 VALUES (1);
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1(a INT);
INSERT INTO t1 VALUES (0),(0);
# BUG#55615 : should not crash
SELECT (@a:=(SELECT @a:=1 FROM t1 LIMIT 1)) AND COUNT(1) FROM t1 GROUP BY @a;
(@a:=(SELECT @a:=1 FROM t1 LIMIT 1)) AND COUNT(1)
1
1
# BUG#55564 : should not crash
SELECT IF(
@v:=LEAST((SELECT 1 FROM t1 t2 LEFT JOIN t1 ON (@v) GROUP BY t1.a), a),
count(*), 1)
FROM t1 GROUP BY a LIMIT 1;
IF(
@v:=LEAST((SELECT 1 FROM t1 t2 LEFT JOIN t1 ON (@v) GROUP BY t1.a), a),
count(*), 1)
1
DROP TABLE t1;
End of 5.1 tests End of 5.1 tests

View file

@ -24,4 +24,17 @@ SELECT @@global.debug;
@@global.debug @@global.debug
SET GLOBAL debug=@old_debug; SET GLOBAL debug=@old_debug;
#
# Bug #56709: Memory leaks at running the 5.1 test suite
#
SET @old_local_debug = @@debug;
SET @@debug='d,foo';
SELECT @@debug;
@@debug
d,foo
SET @@debug='';
SELECT @@debug;
@@debug
SET @@debug = @old_local_debug;
End of 5.1 tests End of 5.1 tests

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