Merge to mysql-next-mr

This commit is contained in:
Mikael Ronstrom 2009-09-28 09:39:50 +02:00
commit 70cb38ec82
382 changed files with 19347 additions and 3412 deletions

View File

@ -1,4 +1,4 @@
[MYSQL] [MYSQL]
post_commit_to = "commits@lists.mysql.com" post_commit_to = "commits@lists.mysql.com"
post_push_to = "commits@lists.mysql.com" post_push_to = "commits@lists.mysql.com"
tree_name = "mysql-5.4" tree_name = "mysql-5.4.5-next-mr"

View File

@ -3064,3 +3064,4 @@ sql/share/spanish
sql/share/swedish sql/share/swedish
sql/share/ukrainian sql/share/ukrainian
libmysqld/examples/mysqltest.cc libmysqld/examples/mysqltest.cc
libmysqld/sql_signal.cc

View File

@ -73,6 +73,11 @@ check_cpu () {
Alpha*EV6*) Alpha*EV6*)
cpu_arg="ev6"; cpu_arg="ev6";
;; ;;
#Core 2 Duo
*Intel*Core\(TM\)2*)
cpu_arg="nocona"
core2="yes"
;;
# Intel ia32 # Intel ia32
*Intel*Core*|*X[eE][oO][nN]*) *Intel*Core*|*X[eE][oO][nN]*)
# a Xeon is just another pentium4 ... # a Xeon is just another pentium4 ...
@ -137,10 +142,6 @@ check_cpu () {
*i386*) *i386*)
cpu_arg="i386" cpu_arg="i386"
;; ;;
#Core 2 Duo
*Intel*Core\(TM\)2*)
cpu_arg="nocona"
;;
# Intel ia64 # Intel ia64
*Itanium*) *Itanium*)
cpu_arg="itanium" cpu_arg="itanium"

View File

@ -137,6 +137,7 @@ ENDIF(MSVC)
IF(WIN32) IF(WIN32)
ADD_DEFINITIONS("-D_WINDOWS -D__WIN__ -D_CRT_SECURE_NO_DEPRECATE") ADD_DEFINITIONS("-D_WINDOWS -D__WIN__ -D_CRT_SECURE_NO_DEPRECATE")
ADD_DEFINITIONS("-D_WIN32_WINNT=0x0501")
ENDIF(WIN32) ENDIF(WIN32)
# default to x86 platform. We'll check for X64 in a bit # default to x86 platform. We'll check for X64 in a bit

View File

@ -86,7 +86,7 @@ extern "C" {
#endif #endif
#undef bcmp // Fix problem with new readline #undef bcmp // Fix problem with new readline
#if defined( __WIN__) #if defined(__WIN__)
#include <conio.h> #include <conio.h>
#elif !defined(__NETWARE__) #elif !defined(__NETWARE__)
#include <readline/readline.h> #include <readline/readline.h>
@ -106,7 +106,7 @@ extern "C" {
#define cmp_database(cs,A,B) strcmp((A),(B)) #define cmp_database(cs,A,B) strcmp((A),(B))
#endif #endif
#if !defined( __WIN__) && !defined(__NETWARE__) && !defined(THREAD) #if !defined(__WIN__) && !defined(__NETWARE__) && !defined(THREAD)
#define USE_POPEN #define USE_POPEN
#endif #endif
@ -1862,7 +1862,7 @@ static int read_and_execute(bool interactive)
if (opt_outfile && glob_buffer.is_empty()) if (opt_outfile && glob_buffer.is_empty())
fflush(OUTFILE); fflush(OUTFILE);
#if defined( __WIN__) || defined(__NETWARE__) #if defined(__WIN__) || defined(__NETWARE__)
tee_fputs(prompt, stdout); tee_fputs(prompt, stdout);
#if defined(__NETWARE__) #if defined(__NETWARE__)
line=fgets(linebuffer, sizeof(linebuffer)-1, stdin); line=fgets(linebuffer, sizeof(linebuffer)-1, stdin);
@ -1873,7 +1873,7 @@ static int read_and_execute(bool interactive)
if (p != NULL) if (p != NULL)
*p = '\0'; *p = '\0';
} }
#else defined(__WIN__) #else
if (!tmpbuf.is_alloced()) if (!tmpbuf.is_alloced())
tmpbuf.alloc(65535); tmpbuf.alloc(65535);
tmpbuf.length(0); tmpbuf.length(0);
@ -1899,7 +1899,7 @@ static int read_and_execute(bool interactive)
if (opt_outfile) if (opt_outfile)
fputs(prompt, OUTFILE); fputs(prompt, OUTFILE);
line= readline(prompt); line= readline(prompt);
#endif /* defined( __WIN__) || defined(__NETWARE__) */ #endif /* defined(__WIN__) || defined(__NETWARE__) */
/* /*
When Ctrl+d or Ctrl+z is pressed, the line may be NULL on some OS When Ctrl+d or Ctrl+z is pressed, the line may be NULL on some OS
@ -1947,10 +1947,10 @@ static int read_and_execute(bool interactive)
} }
} }
#if defined( __WIN__) || defined(__NETWARE__) #if defined(__WIN__) || defined(__NETWARE__)
buffer.free(); buffer.free();
#endif #endif
#if defined( __WIN__) #if defined(__WIN__)
tmpbuf.free(); tmpbuf.free();
#endif #endif
@ -3819,7 +3819,8 @@ com_edit(String *buffer,char *line __attribute__((unused)))
!(editor = (char *)getenv("VISUAL"))) !(editor = (char *)getenv("VISUAL")))
editor = "vi"; editor = "vi";
strxmov(buff,editor," ",filename,NullS); strxmov(buff,editor," ",filename,NullS);
(void) system(buff); if(system(buff) == -1)
goto err;
MY_STAT stat_arg; MY_STAT stat_arg;
if (!my_stat(filename,&stat_arg,MYF(MY_WME))) if (!my_stat(filename,&stat_arg,MYF(MY_WME)))
@ -4602,7 +4603,7 @@ void tee_putc(int c, FILE *file)
putc(c, OUTFILE); putc(c, OUTFILE);
} }
#if defined( __WIN__) || defined(__NETWARE__) #if defined(__WIN__) || defined(__NETWARE__)
#include <time.h> #include <time.h>
#else #else
#include <sys/times.h> #include <sys/times.h>
@ -4614,7 +4615,7 @@ void tee_putc(int c, FILE *file)
static ulong start_timer(void) static ulong start_timer(void)
{ {
#if defined( __WIN__) || defined(__NETWARE__) #if defined(__WIN__) || defined(__NETWARE__)
return clock(); return clock();
#else #else
struct tms tms_tmp; struct tms tms_tmp;

View File

@ -552,6 +552,7 @@ static int upgrade_already_done(void)
FILE *in; FILE *in;
char upgrade_info_file[FN_REFLEN]= {0}; char upgrade_info_file[FN_REFLEN]= {0};
char buf[sizeof(MYSQL_SERVER_VERSION)+1]; char buf[sizeof(MYSQL_SERVER_VERSION)+1];
char *res;
if (get_upgrade_info_file_name(upgrade_info_file)) if (get_upgrade_info_file_name(upgrade_info_file))
return 0; /* Could not get filename => not sure */ return 0; /* Could not get filename => not sure */
@ -564,7 +565,7 @@ static int upgrade_already_done(void)
will be detected by the strncmp will be detected by the strncmp
*/ */
bzero(buf, sizeof(buf)); bzero(buf, sizeof(buf));
fgets(buf, sizeof(buf), in); res= fgets(buf, sizeof(buf), in);
my_fclose(in, MYF(0)); my_fclose(in, MYF(0));

View File

@ -22,6 +22,7 @@
#endif #endif
#include <sys/stat.h> #include <sys/stat.h>
#include <mysql.h> #include <mysql.h>
#include <sql_common.h>
#define ADMIN_VERSION "8.42" #define ADMIN_VERSION "8.42"
#define MAX_MYSQL_VAR 512 #define MAX_MYSQL_VAR 512
@ -353,6 +354,11 @@ int main(int argc,char *argv[])
if (sql_connect(&mysql, option_wait)) if (sql_connect(&mysql, option_wait))
{ {
/*
We couldn't get an initial connection and will definitely exit.
The following just determines the exit-code we'll give.
*/
unsigned int err= mysql_errno(&mysql); unsigned int err= mysql_errno(&mysql);
if (err >= CR_MIN_ERROR && err <= CR_MAX_ERROR) if (err >= CR_MIN_ERROR && err <= CR_MAX_ERROR)
error= 1; error= 1;
@ -371,41 +377,79 @@ int main(int argc,char *argv[])
} }
else else
{ {
while (!interrupted) /*
--count=0 aborts right here. Otherwise iff --sleep=t ("interval")
is given a t!=0, we get an endless loop, or n iterations if --count=n
was given an n!=0. If --sleep wasn't given, we get one iteration.
To wit, --wait loops the connection-attempts, while --sleep loops
the command execution (endlessly if no --count is given).
*/
while (!interrupted && (!opt_count_iterations || nr_iterations))
{ {
new_line = 0; new_line = 0;
if ((error=execute_commands(&mysql,argc,commands)))
if ((error= execute_commands(&mysql,argc,commands)))
{ {
/*
Unknown/malformed command always aborts and can't be --forced.
If the user got confused about the syntax, proceeding would be
dangerous ...
*/
if (error > 0) if (error > 0)
break; /* Wrong command error */ break;
if (!option_force)
/*
Command was well-formed, but failed on the server. Might succeed
on retry (if conditions on server change etc.), but needs --force
to retry.
*/
if (!option_force)
break;
} /* if((error= ... */
if (interval) /* --sleep=interval given */
{
/*
If connection was dropped (unintentionally, or due to SHUTDOWN),
re-establish it if --wait ("retry-connect") was given and user
didn't signal for us to die. Otherwise, signal failure.
*/
if (mysql.net.vio == 0)
{ {
if (option_wait && !interrupted) if (option_wait && !interrupted)
{ {
mysql_close(&mysql); sleep(1);
if (!sql_connect(&mysql, option_wait)) sql_connect(&mysql, option_wait);
{ /*
sleep(1); /* Don't retry too rapidly */ continue normally and decrease counters so that
continue; /* Retry */ "mysqladmin --count=1 --wait=1 shutdown"
} cannot loop endlessly.
*/
} }
error=1; else
break; {
} /*
} connexion broke, and we have no order to re-establish it. fail.
if (interval) */
{ if (!option_force)
if (opt_count_iterations && --nr_iterations == 0) error= 1;
break; break;
}
} /* lost connection */
sleep(interval); sleep(interval);
if (new_line) if (new_line)
puts(""); puts("");
} }
else else
break; break; /* no --sleep, done looping */
} } /* command-loop */
mysql_close(&mysql); } /* got connection */
}
mysql_close(&mysql);
my_free(opt_password,MYF(MY_ALLOW_ZERO_PTR)); my_free(opt_password,MYF(MY_ALLOW_ZERO_PTR));
my_free(user,MYF(MY_ALLOW_ZERO_PTR)); my_free(user,MYF(MY_ALLOW_ZERO_PTR));
#ifdef HAVE_SMEM #ifdef HAVE_SMEM
@ -423,6 +467,17 @@ sig_handler endprog(int signal_number __attribute__((unused)))
interrupted=1; interrupted=1;
} }
/**
@brief connect to server, optionally waiting for same to come up
@param mysql connection struct
@param wait wait for server to come up?
(0: no, ~0: forever, n: cycles)
@return Operation result
@retval 0 success
@retval 1 failure
*/
static my_bool sql_connect(MYSQL *mysql, uint wait) static my_bool sql_connect(MYSQL *mysql, uint wait)
{ {
@ -431,7 +486,7 @@ static my_bool sql_connect(MYSQL *mysql, uint wait)
for (;;) for (;;)
{ {
if (mysql_real_connect(mysql,host,user,opt_password,NullS,tcp_port, if (mysql_real_connect(mysql,host,user,opt_password,NullS,tcp_port,
unix_port, 0)) unix_port, CLIENT_REMEMBER_OPTIONS))
{ {
mysql->reconnect= 1; mysql->reconnect= 1;
if (info) if (info)
@ -442,9 +497,9 @@ static my_bool sql_connect(MYSQL *mysql, uint wait)
return 0; return 0;
} }
if (!wait) if (!wait) // was or reached 0, fail
{ {
if (!option_silent) if (!option_silent) // print diagnostics
{ {
if (!host) if (!host)
host= (char*) LOCAL_HOST; host= (char*) LOCAL_HOST;
@ -468,11 +523,18 @@ static my_bool sql_connect(MYSQL *mysql, uint wait)
} }
return 1; return 1;
} }
if (wait != (uint) ~0) if (wait != (uint) ~0)
wait--; /* One less retry */ wait--; /* count down, one less retry */
if ((mysql_errno(mysql) != CR_CONN_HOST_ERROR) && if ((mysql_errno(mysql) != CR_CONN_HOST_ERROR) &&
(mysql_errno(mysql) != CR_CONNECTION_ERROR)) (mysql_errno(mysql) != CR_CONNECTION_ERROR))
{ {
/*
Error is worse than "server doesn't answer (yet?)";
fail even if we still have "wait-coins" unless --force
was also given.
*/
fprintf(stderr,"Got error: %s\n", mysql_error(mysql)); fprintf(stderr,"Got error: %s\n", mysql_error(mysql));
if (!option_force) if (!option_force)
return 1; return 1;
@ -496,11 +558,18 @@ static my_bool sql_connect(MYSQL *mysql, uint wait)
} }
/* /**
Execute a command. @brief Execute all commands
Return 0 on ok
-1 on retryable error @details We try to execute all commands we were given, in the order
1 on fatal error given, but return with non-zero as soon as we encounter trouble.
By that token, individual commands can be considered a conjunction
with boolean short-cut.
@return success?
@retval 0 Yes! ALL commands worked!
@retval 1 No, one failed and will never work (malformed): fatal error!
@retval -1 No, one failed on the server, may work next time!
*/ */
static int execute_commands(MYSQL *mysql,int argc, char **argv) static int execute_commands(MYSQL *mysql,int argc, char **argv)
@ -570,7 +639,6 @@ static int execute_commands(MYSQL *mysql,int argc, char **argv)
mysql_error(mysql)); mysql_error(mysql));
return -1; return -1;
} }
mysql_close(mysql); /* Close connection to avoid error messages */
argc=1; /* force SHUTDOWN to be the last command */ argc=1; /* force SHUTDOWN to be the last command */
if (got_pidfile) if (got_pidfile)
{ {
@ -1036,14 +1104,16 @@ static void usage(void)
static int drop_db(MYSQL *mysql, const char *db) static int drop_db(MYSQL *mysql, const char *db)
{ {
char name_buff[FN_REFLEN+20], buf[10]; char name_buff[FN_REFLEN+20], buf[10];
char *input;
if (!option_force) if (!option_force)
{ {
puts("Dropping the database is potentially a very bad thing to do."); puts("Dropping the database is potentially a very bad thing to do.");
puts("Any data stored in the database will be destroyed.\n"); puts("Any data stored in the database will be destroyed.\n");
printf("Do you really want to drop the '%s' database [y/N] ",db); printf("Do you really want to drop the '%s' database [y/N] ",db);
fflush(stdout); fflush(stdout);
VOID(fgets(buf,sizeof(buf)-1,stdin)); input= fgets(buf, sizeof(buf)-1, stdin);
if ((*buf != 'y') && (*buf != 'Y')) if (!input || ((*input != 'y') && (*input != 'Y')))
{ {
puts("\nOK, aborting database drop!"); puts("\nOK, aborting database drop!");
return -1; return -1;

View File

@ -1909,7 +1909,7 @@ static Exit_status dump_local_log_entries(PRINT_EVENT_INFO *print_event_info,
return ERROR_STOP; return ERROR_STOP;
} }
#endif #endif
if (init_io_cache(file, fileno(stdin), 0, READ_CACHE, (my_off_t) 0, if (init_io_cache(file, my_fileno(stdin), 0, READ_CACHE, (my_off_t) 0,
0, MYF(MY_WME | MY_NABP | MY_DONT_CHECK_FILESIZE))) 0, MYF(MY_WME | MY_NABP | MY_DONT_CHECK_FILESIZE)))
{ {
error("Failed to init IO cache."); error("Failed to init IO cache.");

View File

@ -5008,7 +5008,7 @@ int main(int argc, char **argv)
exit_code= get_options(&argc, &argv); exit_code= get_options(&argc, &argv);
if (exit_code) if (exit_code)
{ {
free_resources(0); free_resources();
exit(exit_code); exit(exit_code);
} }
@ -5016,14 +5016,14 @@ int main(int argc, char **argv)
{ {
if(!(stderror_file= freopen(log_error_file, "a+", stderr))) if(!(stderror_file= freopen(log_error_file, "a+", stderr)))
{ {
free_resources(0); free_resources();
exit(EX_MYSQLERR); exit(EX_MYSQLERR);
} }
} }
if (connect_to_db(current_host, current_user, opt_password)) if (connect_to_db(current_host, current_user, opt_password))
{ {
free_resources(0); free_resources();
exit(EX_MYSQLERR); exit(EX_MYSQLERR);
} }
if (!path) if (!path)

View File

@ -1199,7 +1199,7 @@ get_options(int *argc,char ***argv)
if (opt_csv_str[0] == '-') if (opt_csv_str[0] == '-')
{ {
csv_file= fileno(stdout); csv_file= my_fileno(stdout);
} }
else else
{ {

View File

@ -417,6 +417,7 @@ static struct st_expected_errors saved_expected_errors;
struct st_command struct st_command
{ {
char *query, *query_buf,*first_argument,*last_argument,*end; char *query, *query_buf,*first_argument,*last_argument,*end;
DYNAMIC_STRING content;
int first_word_len, query_len; int first_word_len, query_len;
my_bool abort_on_error; my_bool abort_on_error;
struct st_expected_errors expected_errors; struct st_expected_errors expected_errors;
@ -431,10 +432,12 @@ DYNAMIC_STRING ds_res;
char builtin_echo[FN_REFLEN]; char builtin_echo[FN_REFLEN];
static void cleanup_and_exit(int exit_code) __attribute__((noreturn));
void die(const char *fmt, ...) void die(const char *fmt, ...)
ATTRIBUTE_FORMAT(printf, 1, 2); ATTRIBUTE_FORMAT(printf, 1, 2) __attribute__((noreturn));
void abort_not_supported_test(const char *fmt, ...) void abort_not_supported_test(const char *fmt, ...)
ATTRIBUTE_FORMAT(printf, 1, 2); ATTRIBUTE_FORMAT(printf, 1, 2) __attribute__((noreturn));
void verbose_msg(const char *fmt, ...) void verbose_msg(const char *fmt, ...)
ATTRIBUTE_FORMAT(printf, 1, 2); ATTRIBUTE_FORMAT(printf, 1, 2);
void log_msg(const char *fmt, ...) void log_msg(const char *fmt, ...)
@ -1138,6 +1141,8 @@ void free_used_memory()
{ {
struct st_command **q= dynamic_element(&q_lines, i, struct st_command**); struct st_command **q= dynamic_element(&q_lines, i, struct st_command**);
my_free((*q)->query_buf,MYF(MY_ALLOW_ZERO_PTR)); my_free((*q)->query_buf,MYF(MY_ALLOW_ZERO_PTR));
if ((*q)->content.str)
dynstr_free(&(*q)->content);
my_free((*q),MYF(0)); my_free((*q),MYF(0));
} }
for (i= 0; i < 10; i++) for (i= 0; i < 10; i++)
@ -1163,6 +1168,7 @@ void free_used_memory()
mysql_server_end(); mysql_server_end();
/* Don't use DBUG after mysql_server_end() */ /* Don't use DBUG after mysql_server_end() */
DBUG_VIOLATION_HELPER_LEAVE;
return; return;
} }
@ -2485,7 +2491,7 @@ void do_source(struct st_command *command)
} }
dynstr_free(&ds_filename); dynstr_free(&ds_filename);
return; DBUG_VOID_RETURN;
} }
@ -3287,21 +3293,30 @@ void do_write_file_command(struct st_command *command, my_bool append)
sizeof(write_file_args)/sizeof(struct command_arg), sizeof(write_file_args)/sizeof(struct command_arg),
' '); ' ');
/* If no delimiter was provided, use EOF */
if (ds_delimiter.length == 0)
dynstr_set(&ds_delimiter, "EOF");
if (!append && access(ds_filename.str, F_OK) == 0) if (!append && access(ds_filename.str, F_OK) == 0)
{ {
/* The file should not be overwritten */ /* The file should not be overwritten */
die("File already exist: '%s'", ds_filename.str); die("File already exist: '%s'", ds_filename.str);
} }
init_dynamic_string(&ds_content, "", 1024, 1024); ds_content= command->content;
read_until_delimiter(&ds_content, &ds_delimiter); /* If it hasn't been done already by a loop iteration, fill it in */
DBUG_PRINT("info", ("Writing to file: %s", ds_filename.str)); if (! ds_content.str)
str_to_file2(ds_filename.str, ds_content.str, ds_content.length, append); {
dynstr_free(&ds_content); /* If no delimiter was provided, use EOF */
if (ds_delimiter.length == 0)
dynstr_set(&ds_delimiter, "EOF");
init_dynamic_string(&ds_content, "", 1024, 1024);
read_until_delimiter(&ds_content, &ds_delimiter);
command->content= ds_content;
}
/* This function could be called even if "false", so check before printing */
if (cur_block->ok)
{
DBUG_PRINT("info", ("Writing to file: %s", ds_filename.str));
str_to_file2(ds_filename.str, ds_content.str, ds_content.length, append);
}
dynstr_free(&ds_filename); dynstr_free(&ds_filename);
dynstr_free(&ds_delimiter); dynstr_free(&ds_delimiter);
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
@ -3444,12 +3459,17 @@ void do_diff_files(struct st_command *command)
die("command \"diff_files\" failed, file '%s' does not exist", die("command \"diff_files\" failed, file '%s' does not exist",
ds_filename2.str); ds_filename2.str);
if ((error= compare_files(ds_filename.str, ds_filename2.str))) if ((error= compare_files(ds_filename.str, ds_filename2.str)) &&
match_expected_error(command, error, NULL) < 0)
{ {
/* Compare of the two files failed, append them to output /* Compare of the two files failed, append them to output
so the failure can be analyzed so the failure can be analyzed, but only if it was not
expected to fail.
*/ */
show_diff(&ds_res, ds_filename.str, ds_filename2.str); show_diff(&ds_res, ds_filename.str, ds_filename2.str);
log_file.write(&ds_res);
log_file.flush();
dynstr_set(&ds_res, 0);
} }
dynstr_free(&ds_filename); dynstr_free(&ds_filename);
@ -3705,10 +3725,9 @@ void do_wait_for_slave_to_stop(struct st_command *c __attribute__((unused)))
MYSQL* mysql = &cur_con->mysql; MYSQL* mysql = &cur_con->mysql;
for (;;) for (;;)
{ {
MYSQL_RES *res; MYSQL_RES *UNINIT_VAR(res);
MYSQL_ROW row; MYSQL_ROW row;
int done; int done;
LINT_INIT(res);
if (mysql_query(mysql,"show status like 'Slave_running'") || if (mysql_query(mysql,"show status like 'Slave_running'") ||
!(res=mysql_store_result(mysql))) !(res=mysql_store_result(mysql)))
@ -5240,13 +5259,12 @@ my_bool end_of_query(int c)
int read_line(char *buf, int size) int read_line(char *buf, int size)
{ {
char c, 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;
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");
LINT_INIT(last_quote);
start_lineno= cur_file->lineno; start_lineno= cur_file->lineno;
DBUG_PRINT("info", ("Starting to read at lineno: %d", start_lineno)); DBUG_PRINT("info", ("Starting to read at lineno: %d", start_lineno));
@ -6478,8 +6496,7 @@ void run_query_normal(struct st_connection *cn, struct st_command *command,
if (!disable_result_log) if (!disable_result_log)
{ {
ulonglong affected_rows; /* Ok to be undef if 'disable_info' is set */ ulonglong UNINIT_VAR(affected_rows); /* Ok to be undef if 'disable_info' is set */
LINT_INIT(affected_rows);
if (res) if (res)
{ {
@ -7165,6 +7182,10 @@ void run_query(struct st_connection *cn, struct st_command *command, int flags)
run_query_normal(cn, command, flags, query, query_len, run_query_normal(cn, command, flags, query, query_len,
ds, &ds_warnings); ds, &ds_warnings);
dynstr_free(&ds_warnings);
if (command->type == Q_EVAL)
dynstr_free(&eval_query);
if (display_result_sorted) if (display_result_sorted)
{ {
/* Sort the result set and append it to result */ /* Sort the result set and append it to result */
@ -7195,11 +7216,8 @@ void run_query(struct st_connection *cn, struct st_command *command, int flags)
check_require(ds, command->require_file); check_require(ds, command->require_file);
} }
dynstr_free(&ds_warnings);
if (ds == &ds_result) if (ds == &ds_result)
dynstr_free(&ds_result); dynstr_free(&ds_result);
if (command->type == Q_EVAL)
dynstr_free(&eval_query);
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
@ -7508,6 +7526,8 @@ static void init_signal_handling(void)
#endif #endif
sigaction(SIGILL, &sa, NULL); sigaction(SIGILL, &sa, NULL);
sigaction(SIGFPE, &sa, NULL); sigaction(SIGFPE, &sa, NULL);
DBUG_VOID_RETURN;
} }
#endif /* !__WIN__ */ #endif /* !__WIN__ */
@ -7682,7 +7702,31 @@ int main(int argc, char **argv)
command->type= Q_COMMENT; command->type= Q_COMMENT;
} }
if (cur_block->ok) my_bool ok_to_do= cur_block->ok;
/*
Some commands need to be "done" the first time if they may get
re-iterated over in a true context. This can only happen if there's
a while loop at some level above the current block.
*/
if (!ok_to_do)
{
if (command->type == Q_SOURCE ||
command->type == Q_WRITE_FILE ||
command->type == Q_APPEND_FILE ||
command->type == Q_PERL)
{
for (struct st_block *stb= cur_block-1; stb >= block_stack; stb--)
{
if (stb->cmd == cmd_while)
{
ok_to_do= 1;
break;
}
}
}
}
if (ok_to_do)
{ {
command->last_argument= command->first_argument; command->last_argument= command->first_argument;
processed = 1; processed = 1;
@ -7991,6 +8035,8 @@ int main(int argc, char **argv)
if (parsing_disabled) if (parsing_disabled)
die("Test ended with parsing disabled"); die("Test ended with parsing disabled");
my_bool empty_result= FALSE;
/* /*
The whole test has been executed _sucessfully_. The whole test has been executed _sucessfully_.
Time to compare result or save it to record file. Time to compare result or save it to record file.
@ -8031,11 +8077,20 @@ int main(int argc, char **argv)
} }
else else
{ {
die("The test didn't produce any output"); /* Empty output is an error *unless* we also have an empty result file */
if (! result_file_name || record ||
compare_files (log_file.file_name(), result_file_name))
{
die("The test didn't produce any output");
}
else
{
empty_result= TRUE; /* Meaning empty was expected */
}
} }
if (!command_executed && result_file_name) if (!command_executed && result_file_name && !empty_result)
die("No queries executed but result file found!"); die("No queries executed but non-empty result file found!");
verbose_msg("Test has succeeded!"); verbose_msg("Test has succeeded!");
timer_output(); timer_output();
@ -8122,6 +8177,8 @@ void do_get_replace_column(struct st_command *command)
} }
my_free(start, MYF(0)); my_free(start, MYF(0));
command->last_argument= command->end; command->last_argument= command->end;
DBUG_VOID_RETURN;
} }

View File

@ -33,7 +33,7 @@ LINE_BUFFER *batch_readline_init(ulong max_size,FILE *file)
if (!(line_buff=(LINE_BUFFER*) if (!(line_buff=(LINE_BUFFER*)
my_malloc(sizeof(*line_buff),MYF(MY_WME | MY_ZEROFILL)))) my_malloc(sizeof(*line_buff),MYF(MY_WME | MY_ZEROFILL))))
return 0; return 0;
if (init_line_buffer(line_buff,fileno(file),IO_SIZE,max_size)) if (init_line_buffer(line_buff,my_fileno(file),IO_SIZE,max_size))
{ {
my_free(line_buff,MYF(0)); my_free(line_buff,MYF(0));
return 0; return 0;

View File

@ -339,9 +339,7 @@ rl_generic_bind (type, keyseq, data, map)
char *keys; char *keys;
int keys_len; int keys_len;
register int i; register int i;
KEYMAP_ENTRY k; KEYMAP_ENTRY k= { 0, NULL };
k.function = 0;
/* If no keys to bind to, exit right away. */ /* If no keys to bind to, exit right away. */
if (keyseq == 0 || *keyseq == 0) if (keyseq == 0 || *keyseq == 0)
@ -776,7 +774,7 @@ _rl_read_file (filename, sizep)
file_size = (size_t)finfo.st_size; file_size = (size_t)finfo.st_size;
/* check for overflow on very large files */ /* check for overflow on very large files */
if ((sizeof(off_t) > sizeof(size_t) && finfo.st_size > (off_t)(size_t)~0) || if ((sizeof(off_t) > sizeof(size_t) && finfo.st_size > (off_t)(size_t)~0) ||
file_size + 1 < file_size) file_size + 1 < file_size)
{ {
if (file >= 0) if (file >= 0)

View File

@ -186,7 +186,7 @@ read_history_range (filename, from, to)
file_size = (size_t)finfo.st_size; file_size = (size_t)finfo.st_size;
/* check for overflow on very large files */ /* check for overflow on very large files */
if ((sizeof(off_t) > sizeof(size_t) && finfo.st_size > (off_t)(size_t)~0) || if ((sizeof(off_t) > sizeof(size_t) && finfo.st_size > (off_t)(size_t)~0) ||
file_size + 1 < file_size) file_size + 1 < file_size)
{ {
errno = overflow_errno; errno = overflow_errno;
@ -311,6 +311,7 @@ history_truncate_file (fname, lines)
int file, chars_read, rv; int file, chars_read, rv;
struct stat finfo; struct stat finfo;
size_t file_size; size_t file_size;
size_t bytes_written;
buffer = (char *)NULL; buffer = (char *)NULL;
filename = history_filename (fname); filename = history_filename (fname);
@ -340,7 +341,7 @@ history_truncate_file (fname, lines)
file_size = (size_t)finfo.st_size; file_size = (size_t)finfo.st_size;
/* check for overflow on very large files */ /* check for overflow on very large files */
if ((sizeof(off_t) > sizeof(size_t) && finfo.st_size > (off_t)(size_t)~0) || if ((sizeof(off_t) > sizeof(size_t) && finfo.st_size > (off_t)(size_t)~0) ||
file_size + 1 < file_size) file_size + 1 < file_size)
{ {
close (file); close (file);
@ -400,7 +401,7 @@ if ((sizeof(off_t) > sizeof(size_t) && finfo.st_size > (off_t)(size_t)~0) ||
truncate to. */ truncate to. */
if (bp > buffer && ((file = open (filename, O_WRONLY|O_TRUNC|O_BINARY, 0600)) != -1)) if (bp > buffer && ((file = open (filename, O_WRONLY|O_TRUNC|O_BINARY, 0600)) != -1))
{ {
write (file, bp, chars_read - (bp - buffer)); bytes_written= write (file, bp, chars_read - (bp - buffer));
#if defined (__BEOS__) #if defined (__BEOS__)
/* BeOS ignores O_TRUNC. */ /* BeOS ignores O_TRUNC. */

View File

@ -137,7 +137,8 @@ UNDO_LIST *
_rl_copy_undo_list (head) _rl_copy_undo_list (head)
UNDO_LIST *head; UNDO_LIST *head;
{ {
UNDO_LIST *list, *new, *roving, *c; UNDO_LIST *list, *new, *c;
UNDO_LIST *roving= NULL;
list = head; list = head;
new = 0; new = 0;

View File

@ -81,8 +81,13 @@ rl_alphabetic (c)
#if defined (HANDLE_MULTIBYTE) #if defined (HANDLE_MULTIBYTE)
int int
_rl_walphabetic (wc) /*
wchar_t wc; Portability issue with VisualAge C++ Professional / C for AIX Compiler, Version 6:
"util.c", line 84.1: 1506-343 (S) Redeclaration of _rl_walphabetic differs
from previous declaration on line 110 of "rlmbutil.h".
So, put type in the function signature here.
*/
_rl_walphabetic (wchar_t wc)
{ {
int c; int c;

View File

@ -10,7 +10,7 @@ AC_CANONICAL_SYSTEM
# #
# When changing major version number please also check switch statement # When changing major version number please also check switch statement
# in client/mysqlbinlog.cc:check_master_version(). # in client/mysqlbinlog.cc:check_master_version().
AM_INIT_AUTOMAKE(mysql, 5.4.3-beta) AM_INIT_AUTOMAKE(mysql, 5.4.5-beta)
AM_CONFIG_HEADER([include/config.h:config.h.in]) AM_CONFIG_HEADER([include/config.h:config.h.in])
PROTOCOL_VERSION=10 PROTOCOL_VERSION=10

View File

@ -65,7 +65,6 @@
#endif #endif
/* File and lock constants */ /* File and lock constants */
#define O_SHARE 0x1000 /* Open file in sharing mode */
#ifdef __BORLANDC__ #ifdef __BORLANDC__
#define F_RDLCK LK_NBLCK /* read lock */ #define F_RDLCK LK_NBLCK /* read lock */
#define F_WRLCK LK_NBRLCK /* write lock */ #define F_WRLCK LK_NBRLCK /* write lock */
@ -336,7 +335,7 @@ inline ulonglong double2ulonglong(double d)
#define FN_DEVCHAR ':' #define FN_DEVCHAR ':'
#define FN_NETWORK_DRIVES /* Uses \\ to indicate network drives */ #define FN_NETWORK_DRIVES /* Uses \\ to indicate network drives */
#define FN_NO_CASE_SENCE /* Files are not case-sensitive */ #define FN_NO_CASE_SENCE /* Files are not case-sensitive */
#define OS_FILE_LIMIT 2048 #define OS_FILE_LIMIT UINT_MAX /* No limit*/
#define DO_NOT_REMOVE_THREAD_WRAPPERS #define DO_NOT_REMOVE_THREAD_WRAPPERS
#define thread_safe_increment(V,L) InterlockedIncrement((long*) &(V)) #define thread_safe_increment(V,L) InterlockedIncrement((long*) &(V))

View File

@ -16,6 +16,29 @@
#ifndef _dbug_h #ifndef _dbug_h
#define _dbug_h #define _dbug_h
#if defined(__cplusplus) && !defined(DBUG_OFF)
class Dbug_violation_helper
{
public:
inline Dbug_violation_helper() :
_entered(TRUE)
{ }
inline ~Dbug_violation_helper()
{
assert(!_entered);
}
inline void leave()
{
_entered= FALSE;
}
private:
bool _entered;
};
#endif /* C++ */
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
@ -47,11 +70,31 @@ extern void _db_lock_file_(void);
extern void _db_unlock_file_(void); extern void _db_unlock_file_(void);
extern FILE *_db_fp_(void); extern FILE *_db_fp_(void);
#define DBUG_ENTER(a) const char *_db_func_, *_db_file_; uint _db_level_; \ #ifdef __cplusplus
char **_db_framep_; \
_db_enter_ (a,__FILE__,__LINE__,&_db_func_,&_db_file_,&_db_level_, \ #define DBUG_ENTER(a) \
&_db_framep_) const char *_db_func_, *_db_file_; \
uint _db_level_; \
char **_db_framep_; \
Dbug_violation_helper dbug_violation_helper; \
_db_enter_ (a, __FILE__, __LINE__, &_db_func_, &_db_file_, \
&_db_level_, &_db_framep_)
#define DBUG_VIOLATION_HELPER_LEAVE dbug_violation_helper.leave()
#else /* C */
#define DBUG_ENTER(a) \
const char *_db_func_, *_db_file_; \
uint _db_level_; \
char **_db_framep_; \
_db_enter_ (a, __FILE__, __LINE__, &_db_func_, &_db_file_, \
&_db_level_, &_db_framep_)
#define DBUG_VIOLATION_HELPER_LEAVE do { } while(0)
#endif /* C++ */
#define DBUG_LEAVE \ #define DBUG_LEAVE \
DBUG_VIOLATION_HELPER_LEAVE; \
_db_return_ (__LINE__, &_db_func_, &_db_file_, &_db_level_) _db_return_ (__LINE__, &_db_func_, &_db_file_, &_db_level_)
#define DBUG_RETURN(a1) do {DBUG_LEAVE; return(a1);} while(0) #define DBUG_RETURN(a1) do {DBUG_LEAVE; return(a1);} while(0)
#define DBUG_VOID_RETURN do {DBUG_LEAVE; return;} while(0) #define DBUG_VOID_RETURN do {DBUG_LEAVE; return;} while(0)
@ -85,6 +128,7 @@ extern FILE *_db_fp_(void);
#define DBUG_ENTER(a1) #define DBUG_ENTER(a1)
#define DBUG_LEAVE #define DBUG_LEAVE
#define DBUG_VIOLATION_HELPER_LEAVE
#define DBUG_RETURN(a1) do { return(a1); } while(0) #define DBUG_RETURN(a1) do { return(a1); } while(0)
#define DBUG_VOID_RETURN do { return; } while(0) #define DBUG_VOID_RETURN do { return; } while(0)
#define DBUG_EXECUTE(keyword,a1) do { } while(0) #define DBUG_EXECUTE(keyword,a1) do { } while(0)

View File

@ -69,7 +69,11 @@ typedef struct my_stat
#else #else
#if(_MSC_VER)
#define MY_STAT struct _stati64 /* 64 bit file size */
#else
#define MY_STAT struct stat /* Orginal struct have what we need */ #define MY_STAT struct stat /* Orginal struct have what we need */
#endif
#endif /* USE_MY_STAT_STRUCT */ #endif /* USE_MY_STAT_STRUCT */

View File

@ -564,6 +564,25 @@ int __void__;
#define PURIFY_OR_LINT_INIT(var) #define PURIFY_OR_LINT_INIT(var)
#endif #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).
*/
#if defined(_lint) || defined(FORCE_INIT_OF_VARS) || defined(__cplusplus) || \
!defined(__GNUC__)
#define UNINIT_VAR(x) x= 0
#else
#define UNINIT_VAR(x) x= x
#endif
/* Define some useful general macros */
#if !defined(max)
#define max(a, b) ((a) > (b) ? (a) : (b))
#define min(a, b) ((a) < (b) ? (a) : (b))
#endif
#if !defined(HAVE_UINT) #if !defined(HAVE_UINT)
#undef HAVE_UINT #undef HAVE_UINT
#define HAVE_UINT #define HAVE_UINT
@ -736,7 +755,41 @@ typedef SOCKET_SIZE_TYPE size_socket;
#define FN_LIBCHAR '/' #define FN_LIBCHAR '/'
#define FN_ROOTDIR "/" #define FN_ROOTDIR "/"
#endif #endif
#define MY_NFILE 64 /* This is only used to save filenames */
/*
MY_FILE_MIN is Windows speciality and is used to quickly detect
the mismatch of CRT and mysys file IO usage on Windows at runtime.
CRT file descriptors can be in the range 0-2047, whereas descriptors returned
by my_open() will start with 2048. If a file descriptor with value less then
MY_FILE_MIN is passed to mysys IO function, chances are it stemms from
open()/fileno() and not my_open()/my_fileno.
For Posix, mysys functions are light wrappers around libc, and MY_FILE_MIN
is logically 0.
*/
#ifdef _WIN32
#define MY_FILE_MIN 2048
#else
#define MY_FILE_MIN 0
#endif
/*
MY_NFILE is the default size of my_file_info array.
It is larger on Windows, because it all file handles are stored in my_file_info
Default size is 16384 and this should be enough for most cases.If it is not
enough, --max-open-files with larger value can be used.
For Posix , my_file_info array is only used to store filenames for
error reporting and its size is not a limitation for number of open files.
*/
#ifdef _WIN32
#define MY_NFILE (16384 + MY_FILE_MIN)
#else
#define MY_NFILE 64
#endif
#ifndef OS_FILE_LIMIT #ifndef OS_FILE_LIMIT
#define OS_FILE_LIMIT 65535 #define OS_FILE_LIMIT 65535
#endif #endif
@ -773,9 +826,8 @@ typedef SOCKET_SIZE_TYPE size_socket;
/* Some things that this system doesn't have */ /* Some things that this system doesn't have */
#define NO_HASH /* Not needed anymore */ #define NO_HASH /* Not needed anymore */
#ifdef __WIN__ #ifdef _WIN32
#define NO_DIR_LIBRARY /* Not standar dir-library */ #define NO_DIR_LIBRARY /* Not standard dir-library */
#define USE_MY_STAT_STRUCT /* For my_lib */
#endif #endif
/* Some defines of functions for portability */ /* Some defines of functions for portability */

View File

@ -39,6 +39,17 @@ extern int NEAR my_errno; /* Last error in mysys */
#define MYSYS_PROGRAM_DONT_USE_CURSES() { error_handler_hook = my_message_no_curses; mysys_uses_curses=0;} #define MYSYS_PROGRAM_DONT_USE_CURSES() { error_handler_hook = my_message_no_curses; mysys_uses_curses=0;}
#define MY_INIT(name); { my_progname= name; my_init(); } #define MY_INIT(name); { my_progname= name; my_init(); }
/**
Max length of an error message generated by mysys utilities.
Some mysys functions produce error messages. These mostly go
to stderr.
This constant defines the size of the buffer used to format
the message. It should be kept in sync with MYSQL_ERRMSG_SIZE,
since sometimes mysys errors are stored in the server diagnostics
area, and we would like to avoid unexpected truncation.
*/
#define MYSYS_ERRMSG_SIZE (512)
#define MY_FILE_ERROR ((size_t) -1) #define MY_FILE_ERROR ((size_t) -1)
/* General bitmaps for my_func's */ /* General bitmaps for my_func's */
@ -67,6 +78,7 @@ extern int NEAR my_errno; /* Last error in mysys */
#define MY_HOLD_ON_ERROR 256 /* my_realloc() ; Return old ptr on error */ #define MY_HOLD_ON_ERROR 256 /* my_realloc() ; Return old ptr on error */
#define MY_DONT_OVERWRITE_FILE 1024 /* my_copy: Don't overwrite file */ #define MY_DONT_OVERWRITE_FILE 1024 /* my_copy: Don't overwrite file */
#define MY_THREADSAFE 2048 /* my_seek(): lock fd mutex */ #define MY_THREADSAFE 2048 /* my_seek(): lock fd mutex */
#define MY_SYNC 4096 /* my_copy(): sync dst file */
#define MY_CHECK_ERROR 1 /* Params to my_end; Check open-close */ #define MY_CHECK_ERROR 1 /* Params to my_end; Check open-close */
#define MY_GIVE_INFO 2 /* Give time info about process*/ #define MY_GIVE_INFO 2 /* Give time info about process*/
@ -89,8 +101,6 @@ extern int NEAR my_errno; /* Last error in mysys */
#define ME_COLOUR2 ((2 << ME_HIGHBYTE)) #define ME_COLOUR2 ((2 << ME_HIGHBYTE))
#define ME_COLOUR3 ((3 << ME_HIGHBYTE)) #define ME_COLOUR3 ((3 << ME_HIGHBYTE))
#define ME_FATALERROR 1024 /* Fatal statement error */ #define ME_FATALERROR 1024 /* Fatal statement error */
#define ME_NO_WARNING_FOR_ERROR 2048 /* Don't push a warning for error */
#define ME_NO_SP_HANDLER 4096 /* Don't call stored routine error handlers */
/* Bits in last argument to fn_format */ /* Bits in last argument to fn_format */
#define MY_REPLACE_DIR 1 /* replace dir in name with 'dir' */ #define MY_REPLACE_DIR 1 /* replace dir in name with 'dir' */
@ -209,8 +219,8 @@ extern int errno; /* declare errno */
extern char *home_dir; /* Home directory for user */ extern char *home_dir; /* Home directory for user */
extern const char *my_progname; /* program-name (printed in errors) */ extern const char *my_progname; /* program-name (printed in errors) */
extern char NEAR curr_dir[]; /* Current directory for user */ extern char NEAR curr_dir[]; /* Current directory for user */
extern int (*error_handler_hook)(uint my_err, const char *str,myf MyFlags); extern void (*error_handler_hook)(uint my_err, const char *str,myf MyFlags);
extern int (*fatal_error_handler_hook)(uint my_err, const char *str, extern void (*fatal_error_handler_hook)(uint my_err, const char *str,
myf MyFlags); myf MyFlags);
extern uint my_file_limit; extern uint my_file_limit;
extern ulong my_thread_stack_size; extern ulong my_thread_stack_size;
@ -310,9 +320,13 @@ enum file_type
struct st_my_file_info struct st_my_file_info
{ {
char * name; char *name;
enum file_type type; #ifdef _WIN32
#if defined(THREAD) && !defined(HAVE_PREAD) HANDLE fhandle; /* win32 file handle */
int oflag; /* open flags, e.g O_APPEND */
#endif
enum file_type type;
#if defined(THREAD) && !defined(HAVE_PREAD) && !defined(_WIN32)
pthread_mutex_t mutex; pthread_mutex_t mutex;
#endif #endif
}; };
@ -617,12 +631,12 @@ extern void *my_memmem(const void *haystack, size_t haystacklen,
const void *needle, size_t needlelen); const void *needle, size_t needlelen);
#ifdef __WIN__ #ifdef _WIN32
extern int my_access(const char *path, int amode); extern int my_access(const char *path, int amode);
extern File my_sopen(const char *path, int oflag, int shflag, int pmode);
#else #else
#define my_access access #define my_access access
#endif #endif
extern int check_if_legal_filename(const char *path); extern int check_if_legal_filename(const char *path);
extern int check_if_legal_tablename(const char *path); extern int check_if_legal_tablename(const char *path);
@ -633,6 +647,13 @@ extern int nt_share_delete(const char *name,myf MyFlags);
#define my_delete_allow_opened(fname,flags) my_delete((fname),(flags)) #define my_delete_allow_opened(fname,flags) my_delete((fname),(flags))
#endif #endif
#ifdef _WIN32
/* Windows-only functions (CRT equivalents)*/
extern File my_sopen(const char *path, int oflag, int shflag, int pmode);
extern HANDLE my_get_osfhandle(File fd);
extern void my_osmaperr(unsigned long last_error);
#endif
#ifndef TERMINATE #ifndef TERMINATE
extern void TERMINATE(FILE *file, uint flag); extern void TERMINATE(FILE *file, uint flag);
#endif #endif
@ -641,19 +662,20 @@ extern void wait_for_free_space(const char *filename, int errors);
extern FILE *my_fopen(const char *FileName,int Flags,myf MyFlags); extern FILE *my_fopen(const char *FileName,int Flags,myf MyFlags);
extern FILE *my_fdopen(File Filedes,const char *name, int Flags,myf MyFlags); extern FILE *my_fdopen(File Filedes,const char *name, int Flags,myf MyFlags);
extern int my_fclose(FILE *fd,myf MyFlags); extern int my_fclose(FILE *fd,myf MyFlags);
extern File my_fileno(FILE *fd);
extern int my_chsize(File fd,my_off_t newlength, int filler, myf MyFlags); extern int my_chsize(File fd,my_off_t newlength, int filler, myf MyFlags);
extern int my_sync(File fd, myf my_flags); extern int my_sync(File fd, myf my_flags);
extern int my_sync_dir(const char *dir_name, myf my_flags); extern int my_sync_dir(const char *dir_name, myf my_flags);
extern int my_sync_dir_by_file(const char *file_name, myf my_flags); extern int my_sync_dir_by_file(const char *file_name, myf my_flags);
extern int my_error _VARARGS((int nr,myf MyFlags, ...)); extern void my_error _VARARGS((int nr,myf MyFlags, ...));
extern int my_printf_error _VARARGS((uint my_err, const char *format, extern void my_printf_error _VARARGS((uint my_err, const char *format,
myf MyFlags, ...)) myf MyFlags, ...))
ATTRIBUTE_FORMAT(printf, 2, 4); ATTRIBUTE_FORMAT(printf, 2, 4);
extern int my_error_register(const char **errmsgs, int first, int last); extern int my_error_register(const char **errmsgs, int first, int last);
extern const char **my_error_unregister(int first, int last); extern const char **my_error_unregister(int first, int last);
extern int my_message(uint my_err, const char *str,myf MyFlags); extern void my_message(uint my_err, const char *str,myf MyFlags);
extern int my_message_no_curses(uint my_err, const char *str,myf MyFlags); extern void 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 void 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, int MyFlags);

View File

@ -98,7 +98,7 @@ SET(CLIENT_SOURCES ../mysys/array.c ../strings/bchange.c ../strings/bmove.c
../strings/strtoll.c ../strings/strtoull.c ../strings/strxmov.c ../strings/strxnmov.c ../strings/strtoll.c ../strings/strtoull.c ../strings/strxmov.c ../strings/strxnmov.c
../mysys/thr_mutex.c ../mysys/typelib.c ../vio/vio.c ../vio/viosocket.c ../mysys/thr_mutex.c ../mysys/typelib.c ../vio/vio.c ../vio/viosocket.c
../vio/viossl.c ../vio/viosslfactories.c ../strings/xml.c ../mysys/mf_qsort.c ../vio/viossl.c ../vio/viosslfactories.c ../strings/xml.c ../mysys/mf_qsort.c
../mysys/my_getsystime.c ../mysys/my_sync.c ${LIB_SOURCES}) ../mysys/my_getsystime.c ../mysys/my_sync.c ../mysys/my_winerr.c ../mysys/my_winfile.c ${LIB_SOURCES})
# Need to set USE_TLS for building the DLL, since __declspec(thread) # Need to set USE_TLS for building the DLL, since __declspec(thread)
# approach to thread local storage does not work properly in DLLs. # approach to thread local storage does not work properly in DLLs.

View File

@ -1635,8 +1635,7 @@ myodbc_remove_escape(MYSQL *mysql,char *name)
char *to; char *to;
#ifdef USE_MB #ifdef USE_MB
my_bool use_mb_flag=use_mb(mysql->charset); my_bool use_mb_flag=use_mb(mysql->charset);
char *end; char *UNINIT_VAR(end);
LINT_INIT(end);
if (use_mb_flag) if (use_mb_flag)
for (end=name; *end ; end++) ; for (end=name; *end ; end++) ;
#endif #endif

View File

@ -139,6 +139,7 @@ SET(LIBMYSQLD_SOURCES emb_qcache.cc libmysqld.c lib_sql.cc
../sql/time.cc ../sql/tztime.cc ../sql/uniques.cc ../sql/unireg.cc ../sql/time.cc ../sql/tztime.cc ../sql/uniques.cc ../sql/unireg.cc
../sql/partition_info.cc ../sql/sql_connect.cc ../sql/partition_info.cc ../sql/sql_connect.cc
../sql/scheduler.cc ../sql/event_parse_data.cc ../sql/scheduler.cc ../sql/event_parse_data.cc
./sql/sql_signal.cc
${GEN_SOURCES} ${GEN_SOURCES}
${LIB_SOURCES}) ${LIB_SOURCES})

View File

@ -77,7 +77,7 @@ sqlsources = derror.cc field.cc field_conv.cc strfunc.cc filesort.cc \
rpl_filter.cc sql_partition.cc sql_builtin.cc sql_plugin.cc \ rpl_filter.cc sql_partition.cc sql_builtin.cc sql_plugin.cc \
sql_tablespace.cc \ sql_tablespace.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 sql_servers.cc event_parse_data.cc sql_signal.cc
libmysqld_int_a_SOURCES= $(libmysqld_sources) libmysqld_int_a_SOURCES= $(libmysqld_sources)
nodist_libmysqld_int_a_SOURCES= $(libmysqlsources) $(sqlsources) nodist_libmysqld_int_a_SOURCES= $(libmysqlsources) $(sqlsources)

View File

@ -483,7 +483,8 @@ int emb_load_querycache_result(THD *thd, Querycache_stream *src)
*prev_row= NULL; *prev_row= NULL;
data->embedded_info->prev_ptr= prev_row; data->embedded_info->prev_ptr= prev_row;
return_ok: return_ok:
net_send_eof(thd, thd->server_status, thd->total_warn_count); net_send_eof(thd, thd->server_status,
thd->warning_info->statement_warn_count());
DBUG_RETURN(0); DBUG_RETURN(0);
err: err:
DBUG_RETURN(1); DBUG_RETURN(1);

View File

@ -112,7 +112,7 @@ emb_advanced_command(MYSQL *mysql, enum enum_server_command command,
/* Clear result variables */ /* Clear result variables */
thd->clear_error(); thd->clear_error();
thd->main_da.reset_diagnostics_area(); thd->stmt_da->reset_diagnostics_area();
mysql->affected_rows= ~(my_ulonglong) 0; mysql->affected_rows= ~(my_ulonglong) 0;
mysql->field_count= 0; mysql->field_count= 0;
net_clear_error(net); net_clear_error(net);
@ -217,7 +217,7 @@ static my_bool emb_read_prepare_result(MYSQL *mysql, MYSQL_STMT *stmt)
stmt->stmt_id= thd->client_stmt_id; stmt->stmt_id= thd->client_stmt_id;
stmt->param_count= thd->client_param_count; stmt->param_count= thd->client_param_count;
stmt->field_count= 0; stmt->field_count= 0;
mysql->warning_count= thd->total_warn_count; mysql->warning_count= thd->warning_info->statement_warn_count();
if (thd->first_data) if (thd->first_data)
{ {
@ -402,7 +402,7 @@ static void emb_free_embedded_thd(MYSQL *mysql)
static const char * emb_read_statistics(MYSQL *mysql) static const char * emb_read_statistics(MYSQL *mysql)
{ {
THD *thd= (THD*)mysql->thd; THD *thd= (THD*)mysql->thd;
return thd->is_error() ? thd->main_da.message() : ""; return thd->is_error() ? thd->stmt_da->message() : "";
} }
@ -703,9 +703,10 @@ int check_embedded_connection(MYSQL *mysql, const char *db)
err: err:
{ {
NET *net= &mysql->net; NET *net= &mysql->net;
strmake(net->last_error, thd->main_da.message(), sizeof(net->last_error)-1); strmake(net->last_error, thd->stmt_da->message(),
sizeof(net->last_error)-1);
memcpy(net->sqlstate, memcpy(net->sqlstate,
mysql_errno_to_sqlstate(thd->main_da.sql_errno()), mysql_errno_to_sqlstate(thd->stmt_da->sql_errno()),
sizeof(net->sqlstate)-1); sizeof(net->sqlstate)-1);
} }
return result; return result;
@ -729,8 +730,8 @@ void THD::clear_data_list()
void THD::clear_error() void THD::clear_error()
{ {
if (main_da.is_error()) if (stmt_da->is_error())
main_da.reset_diagnostics_area(); stmt_da->reset_diagnostics_area();
} }
static char *dup_str_aux(MEM_ROOT *root, const char *from, uint length, static char *dup_str_aux(MEM_ROOT *root, const char *from, uint length,
@ -804,7 +805,7 @@ MYSQL_DATA *THD::alloc_new_dataset()
static static
bool bool
write_eof_packet(THD *thd, uint server_status, uint total_warn_count) write_eof_packet(THD *thd, uint server_status, uint statement_warn_count)
{ {
if (!thd->mysql) // bootstrap file handling if (!thd->mysql) // bootstrap file handling
return FALSE; return FALSE;
@ -821,7 +822,7 @@ write_eof_packet(THD *thd, uint server_status, uint total_warn_count)
is cleared between substatements, and mysqltest gets confused is cleared between substatements, and mysqltest gets confused
*/ */
thd->cur_data->embedded_info->warning_count= thd->cur_data->embedded_info->warning_count=
(thd->spcont ? 0 : min(total_warn_count, 65535)); (thd->spcont ? 0 : min(statement_warn_count, 65535));
return FALSE; return FALSE;
} }
@ -978,7 +979,8 @@ bool Protocol::send_fields(List<Item> *list, uint flags)
} }
if (flags & SEND_EOF) if (flags & SEND_EOF)
write_eof_packet(thd, thd->server_status, thd->total_warn_count); write_eof_packet(thd, thd->server_status,
thd->warning_info->statement_warn_count());
DBUG_RETURN(prepare_for_send(list)); DBUG_RETURN(prepare_for_send(list));
err: err:
@ -1040,25 +1042,24 @@ bool Protocol_binary::write()
bool bool
net_send_ok(THD *thd, net_send_ok(THD *thd,
uint server_status, uint total_warn_count, uint server_status, uint statement_warn_count,
ha_rows affected_rows, ulonglong id, const char *message) ulonglong affected_rows, ulonglong id, const char *message)
{ {
DBUG_ENTER("emb_net_send_ok"); DBUG_ENTER("emb_net_send_ok");
MYSQL_DATA *data; MYSQL_DATA *data;
bool error;
MYSQL *mysql= thd->mysql; MYSQL *mysql= thd->mysql;
if (!mysql) // bootstrap file handling if (!mysql) // bootstrap file handling
DBUG_RETURN(FALSE); DBUG_RETURN(FALSE);
if (!(data= thd->alloc_new_dataset())) if (!(data= thd->alloc_new_dataset()))
return TRUE; DBUG_RETURN(TRUE);
data->embedded_info->affected_rows= affected_rows; data->embedded_info->affected_rows= affected_rows;
data->embedded_info->insert_id= id; data->embedded_info->insert_id= id;
if (message) if (message)
strmake(data->embedded_info->info, message, strmake(data->embedded_info->info, message,
sizeof(data->embedded_info->info)-1); sizeof(data->embedded_info->info)-1);
error= write_eof_packet(thd, server_status, total_warn_count); bool error= write_eof_packet(thd, server_status, statement_warn_count);
thd->cur_data= 0; thd->cur_data= 0;
DBUG_RETURN(error); DBUG_RETURN(error);
} }
@ -1075,15 +1076,16 @@ net_send_ok(THD *thd,
*/ */
bool bool
net_send_eof(THD *thd, uint server_status, uint total_warn_count) net_send_eof(THD *thd, uint server_status, uint statement_warn_count)
{ {
bool error= write_eof_packet(thd, server_status, total_warn_count); bool error= write_eof_packet(thd, server_status, statement_warn_count);
thd->cur_data= 0; thd->cur_data= 0;
return error; return error;
} }
bool net_send_error_packet(THD *thd, uint sql_errno, const char *err) bool net_send_error_packet(THD *thd, uint sql_errno, const char *err,
const char *sqlstate)
{ {
MYSQL_DATA *data= thd->cur_data; MYSQL_DATA *data= thd->cur_data;
struct embedded_query_result *ei; struct embedded_query_result *ei;
@ -1100,7 +1102,7 @@ bool net_send_error_packet(THD *thd, uint sql_errno, const char *err)
ei= data->embedded_info; ei= data->embedded_info;
ei->last_errno= sql_errno; ei->last_errno= sql_errno;
strmake(ei->info, err, sizeof(ei->info)-1); strmake(ei->info, err, sizeof(ei->info)-1);
strmov(ei->sqlstate, mysql_errno_to_sqlstate(sql_errno)); strmov(ei->sqlstate, sqlstate);
ei->server_status= thd->server_status; ei->server_status= thd->server_status;
thd->cur_data= 0; thd->cur_data= 0;
return FALSE; return FALSE;

View File

@ -17,7 +17,8 @@
## Process this file with automake to create Makefile.in ## Process this file with automake to create Makefile.in
testdir = $(prefix)/mysql-test testroot = $(prefix)
testdir = $(testroot)/mysql-test
test_SCRIPTS = mtr \ test_SCRIPTS = mtr \
mysql-test-run \ mysql-test-run \

View File

@ -23,3 +23,10 @@ The syntax is as follows:
start with the same characters up to the last letter before the asterisk start with the same characters up to the last letter before the asterisk
are considered experimental: are considered experimental:
main.a* # get rid of main.alias, main.alibaba and main.agliolio main.a* # get rid of main.alias, main.alibaba and main.agliolio
6) Optionally, the test case may be followed by one or more platform
qualifiers beginning with @ or @!. The test will then be considered
experimental only/except on that platform. Basic OS names as
reported by $^O in Perl, or 'windows' are supported, this includes
solaris, linux, windows, aix, darwin, ... Example:
main.alias @aix @windows # Fails on those

View File

@ -1,6 +1,71 @@
# For easier human reading (MTR doesn't care), please keep entries
# in alphabetical order. This also helps with merge conflict resolution.
binlog.binlog_tmp_table* # Bug#45578:2009-07-10 alik Test binlog_tmp_table fails ramdonly on PB2: Unknown table 't2'
funcs_1.charset_collation_1 # depends on compile-time decisions funcs_1.charset_collation_1 # depends on compile-time decisions
binlog.binlog_tmp_table # Bug#45578: Test binlog_tmp_table fails ramdonly on PB2: Unknown table 't2'
main.ctype_gbk_binlog # Bug#46010: main.ctype_gbk_binlog fails sporadically : Table 't2' already exists innodb.innodb_information_schema # Bug#47449 2009-09-19 alik main.information_schema and innodb.innodb_information_schema fail sporadically
rpl.rpl_row_create_table # Bug#45576: rpl_row_create_table fails on PB2
main.ctype_gbk_binlog @solaris # Bug#46010: main.ctype_gbk_binlog fails sporadically : Table 't2' already exists
main.information_schema # Bug#47449 2009-09-19 alik main.information_schema and innodb.innodb_information_schema fail sporadically
main.innodb-autoinc # Bug#44030 2009-09-24 alik Marking innodb-autoinc experimental while waiting for the patch to be merged
main.lock_multi_bug38499 # Bug#47448 2009-09-19 alik main.lock_multi_bug38499 times out sporadically
main.plugin # Bug#47146 Linking problem with example plugin when dtrace enabled
main.plugin_load # Bug#47146
rpl.rpl_get_master_version_and_clock* # Bug#46931 2009-08-26 alik rpl.rpl_get_master_version_and_clock fails on hpux11.31
rpl.rpl_innodb_bug28430* @solaris # Bug#46029
rpl.rpl_innodb_bug30888* @solaris # Bug#47646 2009-09-25 alik rpl.rpl_innodb_bug30888 fails sporadically on Solaris
rpl.rpl_plugin_load* @solaris # Bug#47146
rpl.rpl_row_create_table* # Bug#45576: rpl_row_create_table fails on PB2
rpl.rpl_trigger* # Bug#46656 2009-09-25 alik InnoDB plugin: memory leaks (Valgrind)
rpl_ndb.rpl_ndb_log # Bug#38998 rpl_ndb.rpl_ndb_log # Bug#38998
rpl.rpl_innodb_bug28430 # Bug#46029
# Declare all NDB-tests in other test suites experimental.
stress.ddl_ndb
sys_vars.ndb_log_update_as_write_basic
sys_vars.have_ndbcluster_basic
sys_vars.ndb_log_updated_only_basic
funcs_1.ndb_storedproc_10
funcs_1.ndb_bitdata
funcs_1.ndb_trig_03
funcs_1.ndb_trig_0102
funcs_1.is_tables_ndb
funcs_1.is_columns_ndb
funcs_1.ndb_trig_0407
funcs_1.ndb_trig_1011ext
funcs_1.ndb_storedproc_06
funcs_1.ndb_views
funcs_1.is_cml_ndb
funcs_1.ndb_storedproc_02
funcs_1.ndb_storedproc_03
funcs_1.ndb_trig_03e
funcs_1.is_engines_ndb
funcs_1.ndb_trig_08
funcs_1.ndb_storedproc_07
funcs_1.ndb_storedproc_08
funcs_1.ndb_func_view
funcs_1.ndb_trig_09
funcs_1.ndb_cursors
funcs_2.ndb_charset
parts.partition_engine_ndb
parts.ndb_dd_backuprestore
parts.partition_value_ndb
parts.partition_mgm_lc2_ndb
parts.partition_alter1_2_ndb
parts.partition_alter1_1_ndb
parts.part_supported_sql_func_ndb
parts.partition_int_ndb
parts.partition_mgm_lc1_ndb
parts.partition_auto_increment_ndb
parts.partition_syntax_ndb
parts.partition_alter1_1_2_ndb
parts.partition_basic_ndb
parts.partition_mgm_lc0_ndb

View File

@ -0,0 +1,5 @@
perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=n_mix --mysqld=--binlog-format=mixed --suite=main,binlog,innodb,federated,rpl
perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=ps_row --ps-protocol --mysqld=--binlog-format=row --suite=main,binlog,innodb,federated,rpl
perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=embedded --embedded --suite=main,binlog,innodb,federated,rpl
perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=rpl_binlog_row --mysqld=--binlog-format=row --suite=rpl,binlog
perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=funcs_1 --suite=funcs_1

View File

@ -0,0 +1,5 @@
perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=n_mix --mysqld=--binlog-format=mixed --suite=main,binlog,innodb,federated,rpl
perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=ps_row --ps-protocol --mysqld=--binlog-format=row --suite=main,binlog,innodb,federated,rpl
perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=embedded --embedded --suite=main,binlog,innodb,federated,rpl
perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=rpl_binlog_row --mysqld=--binlog-format=row --suite=rpl,binlog
perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=funcs_1 --suite=funcs_1

View File

@ -163,5 +163,81 @@ show create table t1;
connection master; connection master;
drop table t1; drop table t1;
# End cleanup #
# BUG#45999 Row based replication fails when auto_increment field = 0.
# Store engine of Slaves auto-generates new sequence numbers for
# auto_increment fields if the values of them are 0. There is an inconsistency
# between slave and master. When MODE_NO_AUTO_VALUE_ON_ZERO are masters treat
#
source include/master-slave-reset.inc;
connection master;
--disable_warnings
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t2;
--enable_warnings
eval CREATE TABLE t1 (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY) ENGINE=$engine_type;
eval CREATE TABLE t2 (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY) ENGINE=$engine_type2;
SET SQL_MODE='';
# Value of the id will be 1;
INSERT INTO t1 VALUES(NULL);
INSERT INTO t2 VALUES(NULL);
SELECT * FROM t1;
SELECT * FROM t2;
# Value of the id will be 2;
INSERT INTO t1 VALUES();
INSERT INTO t2 VALUES();
SELECT * FROM t1;
SELECT * FROM t2;
# Value of the id will be 3. The master treats 0 as NULL or empty because
# NO_AUTO_VALUE_ON_ZERO is not assign to SQL_MODE.
INSERT INTO t1 VALUES(0);
INSERT INTO t2 VALUES(0);
SELECT * FROM t1;
SELECT * FROM t2;
SET SQL_MODE=NO_AUTO_VALUE_ON_ZERO;
# Value of the id will be 0. The master does not treat 0 as NULL or empty
# because NO_AUTO_VALUE_ON_ZERO has assigned to SQL_MODE.
INSERT INTO t1 VALUES(0);
INSERT INTO t2 VALUES(0);
SELECT * FROM t1;
SELECT * FROM t2;
INSERT INTO t1 VALUES(4);
INSERT INTO t2 VALUES(4);
FLUSH LOGS;
sync_slave_with_master;
let $diff_table_1= master:test.t1;
let $diff_table_2= slave:test.t1;
source include/diff_tables.inc;
let $diff_table_1= master:test.t2;
let $diff_table_2= slave:test.t2;
source include/diff_tables.inc;
connection master;
DROP TABLE t1;
DROP TABLE t2;
sync_slave_with_master;
connection master;
let $MYSQLD_DATADIR= `SELECT @@DATADIR`;
--exec $MYSQL_BINLOG $MYSQLD_DATADIR/master-bin.000001 | $MYSQL test
sync_slave_with_master;
let $diff_table_1= master:test.t1;
let $diff_table_2= slave:test.t1;
source include/diff_tables.inc;
let $diff_table_1= master:test.t2;
let $diff_table_2= slave:test.t2;
source include/diff_tables.inc;
# End cleanup
DROP TABLE t1;
DROP TABLE t2;
SET SQL_MODE='';
sync_slave_with_master; sync_slave_with_master;

View File

@ -22,6 +22,8 @@ DROP TABLE IF EXISTS t1, t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t14a,t15,t1
# should stop the slave. # # should stop the slave. #
################################################# #################################################
call mtr.add_suppression("Slave: Unknown table 't6' Error_code: 1051");
--echo **** Diff Table Def Start **** --echo **** Diff Table Def Start ****
############################################## ##############################################

View File

@ -0,0 +1,710 @@
###################################################################################
# This test checks if transactions that mixes transactional and non-transactional
# tables are correctly handled in statement mode. In an nutshell, we have what
# follows:
#
# 1) "B T T C" generates in binlog the "B T T C" entries.
#
# 2) "B T T R" generates in binlog an "empty" entry.
#
# 3) "B T N C" generates in binlog the "B T N C" entries.
#
# 4) "B T N R" generates in binlog the "B T N R" entries.
#
# 5) "T" generates in binlog the "B T C" entry.
#
# 6) "N" generates in binlog the "N" entry.
#
# 7) "M" generates in binglog the "B M C" entries.
#
# 8) "B N N T C" generates in binglog the "N N B T C" entries.
#
# 9) "B N N T R" generates in binlog the "N N B T R" entries.
#
# 10) "B N N C" generates in binglog the "N N" entries.
#
# 11) "B N N R" generates in binlog the "N N" entries.
#
# 12) "B M T C" generates in the binlog the "B M T C" entries.
#
# 13) "B M T R" generates in the binlog the "B M T R" entries.
###################################################################################
--echo ###################################################################################
--echo # CONFIGURATION
--echo ###################################################################################
connection master;
SET SQL_LOG_BIN=0;
CREATE TABLE nt_1 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
CREATE TABLE nt_2 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
CREATE TABLE nt_3 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
CREATE TABLE nt_4 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
CREATE TABLE tt_1 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
CREATE TABLE tt_2 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
CREATE TABLE tt_3 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
CREATE TABLE tt_4 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
SET SQL_LOG_BIN=1;
connection slave;
SET SQL_LOG_BIN=0;
CREATE TABLE nt_1 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
CREATE TABLE nt_2 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
CREATE TABLE nt_3 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
CREATE TABLE nt_4 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
CREATE TABLE tt_1 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
CREATE TABLE tt_2 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
CREATE TABLE tt_3 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
CREATE TABLE tt_4 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
SET SQL_LOG_BIN=1;
connection master;
DELIMITER |;
CREATE FUNCTION f1 () RETURNS VARCHAR(64)
BEGIN
RETURN "Testing...";
END|
CREATE FUNCTION f2 () RETURNS VARCHAR(64)
BEGIN
RETURN f1();
END|
CREATE PROCEDURE pc_i_tt_3 (IN x INT, IN y VARCHAR(64))
BEGIN
INSERT INTO tt_3 VALUES (y,x,x);
END|
CREATE TRIGGER tr_i_tt_3_to_nt_3 BEFORE INSERT ON tt_3 FOR EACH ROW
BEGIN
INSERT INTO nt_3 VALUES (NEW.a, NEW.b, NEW.c);
END|
CREATE TRIGGER tr_i_nt_4_to_tt_4 BEFORE INSERT ON nt_4 FOR EACH ROW
BEGIN
INSERT INTO tt_4 VALUES (NEW.a, NEW.b, NEW.c);
END|
DELIMITER ;|
--echo ###################################################################################
--echo # MIXING TRANSACTIONAL and NON-TRANSACTIONAL TABLES
--echo ###################################################################################
connection master;
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
--echo #1) "B T T C" generates in binlog the "B T T C" entries.
--echo #
BEGIN;
INSERT INTO tt_1 VALUES ("new text 4", 4, "new text 4");
INSERT INTO tt_2 VALUES ("new text 4", 4, "new text 4");
COMMIT;
--source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
--echo #1.e) "B T T C" with error in T generates in binlog the "B T T C" entries.
--echo #
INSERT INTO tt_1 VALUES ("new text -2", -2, "new text -2");
BEGIN;
--error ER_DUP_ENTRY
INSERT INTO tt_1 VALUES ("new text -1", -1, "new text -1"), ("new text -2", -2, "new text -2");
INSERT INTO tt_2 VALUES ("new text -3", -3, "new text -3");
COMMIT;
BEGIN;
INSERT INTO tt_2 VALUES ("new text -5", -5, "new text -5");
--error ER_DUP_ENTRY
INSERT INTO tt_2 VALUES ("new text -4", -4, "new text -4"), ("new text -5", -5, "new text -5");
COMMIT;
--source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
--echo #2) "B T T R" generates in binlog an "empty" entry.
--echo #
BEGIN;
INSERT INTO tt_1 VALUES ("new text 5", 5, "new text 5");
INSERT INTO tt_2 VALUES ("new text 5", 5, "new text 5");
ROLLBACK;
--source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
--echo #2.e) "B T T R" with error in T generates in binlog an "empty" entry.
--echo #
INSERT INTO tt_1 VALUES ("new text -7", -7, "new text -7");
BEGIN;
--error ER_DUP_ENTRY
INSERT INTO tt_1 VALUES ("new text -6", -6, "new text -6"), ("new text -7", -7, "new text -7");
INSERT INTO tt_2 VALUES ("new text -8", -8, "new text -8");
ROLLBACK;
BEGIN;
INSERT INTO tt_2 VALUES ("new text -10", -10, "new text -10");
--error ER_DUP_ENTRY
INSERT INTO tt_2 VALUES ("new text -9", -9, "new text -9"), ("new text -10", -10, "new text -10");
ROLLBACK;
--source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
--echo #3) "B T N C" generates in binlog the "B T N C" entries.
--echo #
BEGIN;
INSERT INTO tt_1 VALUES ("new text 6", 6, "new text 6");
INSERT INTO nt_1 VALUES ("new text 6", 6, "new text 6");
COMMIT;
--source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
--echo #3.e) "B T N C" with error in either T or N generates in binlog the "B T N C" entries.
--echo #
INSERT INTO tt_1 VALUES ("new text -12", -12, "new text -12");
BEGIN;
--error ER_DUP_ENTRY
INSERT INTO tt_1 VALUES ("new text -11", -11, "new text -11"), ("new text -12", -12, "new text -12");
INSERT INTO nt_1 VALUES ("new text -13", -13, "new text -13");
COMMIT;
BEGIN;
INSERT INTO tt_1 VALUES ("new text -14", -14, "new text -14");
INSERT INTO nt_1 VALUES ("new text -16", -16, "new text -16");
--error ER_DUP_ENTRY
INSERT INTO nt_1 VALUES ("new text -15", -15, "new text -15"), ("new text -16", -16, "new text -16");
COMMIT;
--source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
--echo #4) "B T N R" generates in binlog the "B T N R" entries.
--echo #
BEGIN;
INSERT INTO tt_1 VALUES ("new text 7", 7, "new text 7");
INSERT INTO nt_1 VALUES ("new text 7", 7, "new text 7");
ROLLBACK;
--source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
--echo #4.e) "B T N R" with error in either T or N generates in binlog the "B T N R" entries.
--echo #
INSERT INTO tt_1 VALUES ("new text -17", -17, "new text -17");
BEGIN;
--error ER_DUP_ENTRY
INSERT INTO tt_1 VALUES ("new text -16", -16, "new text -16"), ("new text -17", -17, "new text -17");
INSERT INTO nt_1 VALUES ("new text -18", -18, "new text -18");
ROLLBACK;
BEGIN;
INSERT INTO tt_1 VALUES ("new text -19", -19, "new text -19");
INSERT INTO nt_1 VALUES ("new text -21", -21, "new text -21");
--error ER_DUP_ENTRY
INSERT INTO nt_1 VALUES ("new text -20", -20, "new text -20"), ("new text -21", -21, "new text -21");
ROLLBACK;
--source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
--echo #5) "T" generates in binlog the "B T C" entry.
--echo #
INSERT INTO tt_1 VALUES ("new text 8", 8, "new text 8");
--source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
--echo #5.e) "T" with error in T generates in binlog an "empty" entry.
--echo #
INSERT INTO tt_1 VALUES ("new text -1", -1, "new text -1");
--error ER_DUP_ENTRY
INSERT INTO tt_1 VALUES ("new text -1", -1, "new text -1"), ("new text -22", -22, "new text -22");
--error ER_DUP_ENTRY
INSERT INTO tt_1 VALUES ("new text -23", -23, "new text -23"), ("new text -1", -1, "new text -1");
--source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
--echo #6) "N" generates in binlog the "N" entry.
--echo #
INSERT INTO nt_1 VALUES ("new text 9", 9, "new text 9");
--source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
--echo #6.e) "N" with error in N generates in binlog an empty entry if the error
--echo # happens in the first tuple. Otherwise, generates the "N" entry and
--echo # the error is appended.
--echo #
INSERT INTO nt_1 VALUES ("new text -1", -1, "new text -1");
--error ER_DUP_ENTRY
INSERT INTO nt_1 VALUES ("new text -1", -1, "new text -1");
--error ER_DUP_ENTRY
INSERT INTO nt_1 VALUES ("new text -24", -24, "new text -24"), ("new text -1", -1, "new text -1");
--source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
--echo #7) "M" generates in binglog the "B M C" entries.
--echo #
DELETE FROM nt_1;
INSERT INTO nt_1 SELECT * FROM tt_1;
DELETE FROM tt_1;
INSERT INTO tt_1 SELECT * FROM nt_1;
INSERT INTO tt_3 VALUES ("new text 000", 000, '');
INSERT INTO tt_3 VALUES("new text 100", 100, f1());
INSERT INTO nt_4 VALUES("new text 100", 100, f1());
INSERT INTO tt_3 VALUES("new text 200", 200, f2());
INSERT INTO nt_4 VALUES ("new text 300", 300, '');
INSERT INTO nt_4 VALUES ("new text 400", 400, f1());
INSERT INTO nt_4 VALUES ("new text 500", 500, f2());
CALL pc_i_tt_3(600, "Testing...");
UPDATE nt_3, nt_4, tt_3, tt_4 SET nt_3.a= "new text 1", nt_4.a= "new text 1", tt_3.a= "new text 1", tt_4.a= "new text 1" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
UPDATE tt_3, tt_4, nt_3, nt_4 SET tt_3.a= "new text 2", tt_4.a= "new text 2", nt_3.a= "new text 2", nt_4.a = "new text 2" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 3", nt_3.a= "new text 3", nt_4.a= "new text 3", tt_4.a = "new text 3" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 4", nt_3.a= "new text 4", nt_4.a= "new text 4", tt_4.a = "new text 4" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
--source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
--echo #7.e) "M" with error in M generates in binglog the "B M R" entries.
--echo #
INSERT INTO nt_3 VALUES ("new text -26", -26, '');
SELECT * FROM tt_3;
--error ER_DUP_ENTRY
INSERT INTO tt_3 VALUES ("new text -25", -25, ''), ("new text -26", -26, '');
SELECT * FROM tt_3;
INSERT INTO tt_4 VALUES ("new text -26", -26, '');
SELECT * FROM nt_4;
--error ER_DUP_ENTRY
INSERT INTO nt_4 VALUES ("new text -25", -25, ''), ("new text -26", -26, '');
SELECT * FROM nt_4;
--source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
--echo #8) "B N N T C" generates in binglog the "N N B T C" entries.
--echo #
BEGIN;
INSERT INTO nt_1 VALUES ("new text 10", 10, "new text 10");
INSERT INTO nt_2 VALUES ("new text 10", 10, "new text 10");
INSERT INTO tt_1 VALUES ("new text 10", 10, "new text 10");
COMMIT;
--source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
--echo #
--echo #8.e) "B N N T R" See 6.e and 9.e.
--echo #
--echo
--echo
--echo
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
--echo #9) "B N N T R" generates in binlog the "N N B T R" entries.
--echo #
BEGIN;
INSERT INTO nt_1 VALUES ("new text 11", 11, "new text 11");
INSERT INTO nt_2 VALUES ("new text 11", 11, "new text 11");
INSERT INTO tt_1 VALUES ("new text 11", 11, "new text 11");
ROLLBACK;
--source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
--echo #9.e) "B N N T R" with error in N generates in binlog the "N N B T R" entries.
--echo #
BEGIN;
INSERT INTO nt_1 VALUES ("new text -25", -25, "new text -25");
INSERT INTO nt_2 VALUES ("new text -25", -25, "new text -25");
--error ER_DUP_ENTRY
INSERT INTO nt_2 VALUES ("new text -26", -26, "new text -26"), ("new text -25", -25, "new text -25");
INSERT INTO tt_1 VALUES ("new text -27", -27, "new text -27");
ROLLBACK;
--source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
--echo #10) "B N N C" generates in binglog the "N N" entries.
--echo #
BEGIN;
INSERT INTO nt_1 VALUES ("new text 12", 12, "new text 12");
INSERT INTO nt_2 VALUES ("new text 12", 12, "new text 12");
COMMIT;
--source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
--echo #
--echo #10.e) "B N N C" See 6.e and 9.e.
--echo #
--echo
--echo
--echo
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
--echo #11) "B N N R" generates in binlog the "N N" entries.
--echo #
BEGIN;
INSERT INTO nt_1 VALUES ("new text 13", 13, "new text 13");
INSERT INTO nt_2 VALUES ("new text 13", 13, "new text 13");
ROLLBACK;
--source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
--echo #
--echo #11.e) "B N N R" See 6.e and 9.e.
--echo #
--echo
--echo
--echo
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
--echo #12) "B M T C" generates in the binlog the "B M T C" entries.
--echo #
DELETE FROM nt_1;
BEGIN;
INSERT INTO nt_1 SELECT * FROM tt_1;
INSERT INTO tt_2 VALUES ("new text 14", 14, "new text 14");
COMMIT;
DELETE FROM tt_1;
BEGIN;
INSERT INTO tt_1 SELECT * FROM nt_1;
INSERT INTO tt_2 VALUES ("new text 15", 15, "new text 15");
COMMIT;
BEGIN;
INSERT INTO tt_3 VALUES ("new text 700", 700, '');
INSERT INTO tt_1 VALUES ("new text 800", 800, '');
COMMIT;
BEGIN;
INSERT INTO tt_3 VALUES("new text 900", 900, f1());
INSERT INTO tt_1 VALUES ("new text 1000", 1000, '');
COMMIT;
BEGIN;
INSERT INTO tt_3 VALUES(1100, 1100, f2());
INSERT INTO tt_1 VALUES ("new text 1200", 1200, '');
COMMIT;
BEGIN;
INSERT INTO nt_4 VALUES ("new text 1300", 1300, '');
INSERT INTO tt_1 VALUES ("new text 1400", 1400, '');
COMMIT;
BEGIN;
INSERT INTO nt_4 VALUES("new text 1500", 1500, f1());
INSERT INTO tt_1 VALUES ("new text 1600", 1600, '');
COMMIT;
BEGIN;
INSERT INTO nt_4 VALUES("new text 1700", 1700, f2());
INSERT INTO tt_1 VALUES ("new text 1800", 1800, '');
COMMIT;
BEGIN;
CALL pc_i_tt_3(1900, "Testing...");
INSERT INTO tt_1 VALUES ("new text 2000", 2000, '');
COMMIT;
BEGIN;
UPDATE nt_3, nt_4, tt_3, tt_4 SET nt_3.a= "new text 5", nt_4.a= "new text 5", tt_3.a= "new text 5", tt_4.a= "new text 5" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
INSERT INTO tt_1 VALUES ("new text 2100", 2100, '');
COMMIT;
BEGIN;
UPDATE tt_3, tt_4, nt_3, nt_4 SET tt_3.a= "new text 6", tt_4.a= "new text 6", nt_3.a= "new text 6", nt_4.a = "new text 6" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
INSERT INTO tt_1 VALUES ("new text 2200", 2200, '');
COMMIT;
BEGIN;
UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 7", nt_3.a= "new text 7", nt_4.a= "new text 7", tt_4.a = "new text 7" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
INSERT INTO tt_1 VALUES ("new text 2300", 2300, '');
COMMIT;
BEGIN;
UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 8", nt_3.a= "new text 8", nt_4.a= "new text 8", tt_4.a = "new text 8" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
INSERT INTO tt_1 VALUES ("new text 2400", 2400, '');
COMMIT;
--source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
--echo #12.e) "B M T C" with error in M generates in the binlog the "B M T C" entries.
--echo #
--echo # There is a bug in the slave that needs to be fixed before enabling
--echo # this part of the test. A bug report will be filed referencing this
--echo # test case.
BEGIN;
INSERT INTO nt_3 VALUES ("new text -28", -28, '');
--error ER_DUP_ENTRY
INSERT INTO tt_3 VALUES ("new text -27", -27, ''), ("new text -28", -28, '');
INSERT INTO tt_1 VALUES ("new text -27", -27, '');
COMMIT;
BEGIN;
INSERT INTO tt_4 VALUES ("new text -28", -28, '');
--error ER_DUP_ENTRY
INSERT INTO nt_4 VALUES ("new text -27", -27, ''), ("new text -28", -28, '');
INSERT INTO tt_1 VALUES ("new text -28", -28, '');
COMMIT;
--source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
--echo #13) "B M T R" generates in the binlog the "B M T R" entries
--echo #
DELETE FROM nt_1;
BEGIN;
INSERT INTO nt_1 SELECT * FROM tt_1;
INSERT INTO tt_2 VALUES ("new text 17", 17, "new text 17");
ROLLBACK;
DELETE FROM tt_1;
BEGIN;
INSERT INTO tt_1 SELECT * FROM nt_1;
INSERT INTO tt_2 VALUES ("new text 18", 18, "new text 18");
ROLLBACK;
INSERT INTO tt_1 SELECT * FROM nt_1;
BEGIN;
INSERT INTO tt_3 VALUES ("new text 2500", 2500, '');
INSERT INTO tt_1 VALUES ("new text 2600", 2600, '');
ROLLBACK;
BEGIN;
INSERT INTO tt_3 VALUES("new text 2700", 2700, f1());
INSERT INTO tt_1 VALUES ("new text 2800", 2800, '');
ROLLBACK;
BEGIN;
INSERT INTO tt_3 VALUES(2900, 2900, f2());
INSERT INTO tt_1 VALUES ("new text 3000", 3000, '');
ROLLBACK;
BEGIN;
INSERT INTO nt_4 VALUES ("new text 3100", 3100, '');
INSERT INTO tt_1 VALUES ("new text 3200", 3200, '');
ROLLBACK;
BEGIN;
INSERT INTO nt_4 VALUES("new text 3300", 3300, f1());
INSERT INTO tt_1 VALUES ("new text 3400", 3400, '');
ROLLBACK;
BEGIN;
INSERT INTO nt_4 VALUES("new text 3500", 3500, f2());
INSERT INTO tt_1 VALUES ("new text 3600", 3600, '');
ROLLBACK;
BEGIN;
CALL pc_i_tt_3(3700, "Testing...");
INSERT INTO tt_1 VALUES ("new text 3700", 3700, '');
ROLLBACK;
BEGIN;
UPDATE nt_3, nt_4, tt_3, tt_4 SET nt_3.a= "new text 9", nt_4.a= "new text 9", tt_3.a= "new text 9", tt_4.a= "new text 9" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
INSERT INTO tt_1 VALUES ("new text 3800", 3800, '');
ROLLBACK;
BEGIN;
UPDATE tt_3, tt_4, nt_3, nt_4 SET tt_3.a= "new text 10", tt_4.a= "new text 10", nt_3.a= "new text 10", nt_4.a = "new text 10" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
INSERT INTO tt_1 VALUES ("new text 3900", 3900, '');
ROLLBACK;
BEGIN;
UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 11", nt_3.a= "new text 11", nt_4.a= "new text 11", tt_4.a = "new text 11" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
INSERT INTO tt_1 VALUES ("new text 4000", 4000, '');
ROLLBACK;
BEGIN;
UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 12", nt_3.a= "new text 12", nt_4.a= "new text 12", tt_4.a = "new text 12" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
INSERT INTO tt_1 VALUES ("new text 4100", 4100, '');
ROLLBACK;
--source include/show_binlog_events.inc
--echo
--echo
--echo
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
--echo #
--echo #13.e) "B M T R" with error in M generates in the binlog the "B M T R" entries.
--echo #
BEGIN;
INSERT INTO nt_3 VALUES ("new text -30", -30, '');
--error ER_DUP_ENTRY
INSERT INTO tt_3 VALUES ("new text -29", -29, ''), ("new text -30", -30, '');
INSERT INTO tt_1 VALUES ("new text -30", -30, '');
ROLLBACK;
BEGIN;
INSERT INTO tt_4 VALUES ("new text -30", -30, '');
--error ER_DUP_ENTRY
INSERT INTO nt_4 VALUES ("new text -29", -29, ''), ("new text -30", -30, '');
INSERT INTO tt_1 VALUES ("new text -31", -31, '');
ROLLBACK;
--source include/show_binlog_events.inc
connection master;
sync_slave_with_master;
--exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/test-master.sql
--exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/test-slave.sql
--diff_files $MYSQLTEST_VARDIR/tmp/test-master.sql $MYSQLTEST_VARDIR/tmp/test-slave.sql
--echo ###################################################################################
--echo # CLEAN
--echo ###################################################################################
connection master;
DROP TABLE tt_1;
DROP TABLE tt_2;
DROP TABLE tt_3;
DROP TABLE tt_4;
DROP TABLE nt_1;
DROP TABLE nt_2;
DROP TABLE nt_3;
DROP TABLE nt_4;
DROP PROCEDURE pc_i_tt_3;
DROP FUNCTION f1;
DROP FUNCTION f2;
sync_slave_with_master;

View File

@ -9,29 +9,27 @@
############################################################################# #############################################################################
# Begin clean up test section # Begin clean up test section
connection master;
--disable_warnings --disable_warnings
create database if not exists mysqltest1; DROP TABLE IF EXISTS t1;
DROP PROCEDURE IF EXISTS mysqltest1.p1; DROP TABLE IF EXISTS t2;
DROP PROCEDURE IF EXISTS mysqltest1.p2; DROP PROCEDURE IF EXISTS p1;
DROP TABLE IF EXISTS mysqltest1.t2; DROP PROCEDURE IF EXISTS p2;
DROP TABLE IF EXISTS mysqltest1.t1;
--enable_warnings --enable_warnings
# End of cleanup # End of cleanup
# Begin test section 1 # Begin test section 1
eval CREATE TABLE IF NOT EXISTS mysqltest1.t1(name CHAR(16), birth DATE,PRIMARY KEY(name))ENGINE=$engine_type; eval CREATE TABLE IF NOT EXISTS t1(name CHAR(16), birth DATE,PRIMARY KEY(name))ENGINE=$engine_type;
eval CREATE TABLE IF NOT EXISTS mysqltest1.t2(name CHAR(16), age INT ,PRIMARY KEY(name))ENGINE=$engine_type; eval CREATE TABLE IF NOT EXISTS t2(name CHAR(16), age INT ,PRIMARY KEY(name))ENGINE=$engine_type;
delimiter |; delimiter |;
CREATE PROCEDURE mysqltest1.p1() CREATE PROCEDURE p1()
BEGIN BEGIN
DECLARE done INT DEFAULT 0; DECLARE done INT DEFAULT 0;
DECLARE spa CHAR(16); DECLARE spa CHAR(16);
DECLARE spb INT; DECLARE spb INT;
DECLARE cur1 CURSOR FOR SELECT name, DECLARE cur1 CURSOR FOR SELECT name,
(YEAR(CURDATE())-YEAR(birth))-(RIGHT(CURDATE(),5)<RIGHT(birth,5)) (YEAR(CURDATE())-YEAR(birth))-(RIGHT(CURDATE(),5)<RIGHT(birth,5))
FROM mysqltest1.t1; FROM t1;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1; OPEN cur1;
@ -41,7 +39,7 @@ BEGIN
FETCH cur1 INTO spa, spb; FETCH cur1 INTO spa, spb;
IF NOT done THEN IF NOT done THEN
START TRANSACTION; START TRANSACTION;
INSERT INTO mysqltest1.t2 VALUES (spa,spb); INSERT INTO t2 VALUES (spa,spb);
COMMIT; COMMIT;
END IF; END IF;
UNTIL done END REPEAT; UNTIL done END REPEAT;
@ -49,30 +47,29 @@ BEGIN
SET AUTOCOMMIT=1; SET AUTOCOMMIT=1;
CLOSE cur1; CLOSE cur1;
END| END|
CREATE PROCEDURE mysqltest1.p2() CREATE PROCEDURE p2()
BEGIN BEGIN
INSERT INTO mysqltest1.t1 VALUES ('MySQL','1993-02-04'),('ROCKS', '1990-08-27'),('Texas', '1999-03-30'),('kyle','2005-1-1'); INSERT INTO t1 VALUES ('MySQL','1993-02-04'),('ROCKS', '1990-08-27'),('Texas', '1999-03-30'),('kyle','2005-1-1');
END| END|
delimiter ;| delimiter ;|
CALL mysqltest1.p2(); CALL p2();
sync_slave_with_master; sync_slave_with_master;
connection master; connection master;
CALL mysqltest1.p1(); CALL p1();
sync_slave_with_master; sync_slave_with_master;
connection master; connection master;
--exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info mysqltest1 > $MYSQLTEST_VARDIR/tmp/sp006_master.sql --exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/sp006_master.sql
--exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info mysqltest1 > $MYSQLTEST_VARDIR/tmp/sp006_slave.sql --exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/sp006_slave.sql
DROP PROCEDURE IF EXISTS mysqltest1.p1; DROP TABLE t1;
DROP PROCEDURE IF EXISTS mysqltest1.p2; DROP TABLE t2;
DROP TABLE IF EXISTS mysqltest1.t1; DROP PROCEDURE p1;
DROP TABLE IF EXISTS mysqltest1.t2; DROP PROCEDURE p2;
DROP DATABASE mysqltest1;
# Lets compare. Note: If they match test will pass, if they do not match # Lets compare. Note: If they match test will pass, if they do not match
# the test will show that the diff statement failed and not reject file # the test will show that the diff statement failed and not reject file

View File

@ -725,9 +725,9 @@ call p_verify_status_increment(4, 4, 4, 4);
alter table t3 add column (b int); alter table t3 add column (b int);
call p_verify_status_increment(2, 0, 2, 0); call p_verify_status_increment(2, 0, 2, 0);
alter table t3 rename t4; alter table t3 rename t4;
call p_verify_status_increment(1, 0, 1, 0); call p_verify_status_increment(2, 2, 2, 2);
rename table t4 to t3; rename table t4 to t3;
call p_verify_status_increment(1, 0, 1, 0); call p_verify_status_increment(2, 2, 2, 2);
truncate table t3; truncate table t3;
call p_verify_status_increment(4, 4, 4, 4); call p_verify_status_increment(4, 4, 4, 4);
create view v1 as select * from t2; create view v1 as select * from t2;

View File

@ -0,0 +1,7 @@
#
# Whether server supports dynamic loading.
#
--require r/have_dynamic_loading.require
disable_query_log;
show variables like 'have_dynamic_loading';
enable_query_log;

View File

@ -2,10 +2,7 @@
# Check if server has support for loading udf's # Check if server has support for loading udf's
# i.e it will support dlopen # i.e it will support dlopen
# #
--require r/have_dynamic_loading.require --source include/have_dynamic_loading.inc
disable_query_log;
show variables like 'have_dynamic_loading';
enable_query_log;
# #
# Check if the variable EXAMPLE_PLUGIN is set # Check if the variable EXAMPLE_PLUGIN is set

View File

@ -2,10 +2,7 @@
# Check if server has support for loading udf's # Check if server has support for loading udf's
# i.e it will support dlopen # i.e it will support dlopen
# #
--require r/have_dynamic_loading.require --source include/have_dynamic_loading.inc
disable_query_log;
show variables like 'have_dynamic_loading';
enable_query_log;
# #
# Check if the variable SIMPLE_PARSER is set # Check if the variable SIMPLE_PARSER is set

View File

@ -2,10 +2,7 @@
# Check if server has support for loading udf's # Check if server has support for loading udf's
# i.e it will support dlopen # i.e it will support dlopen
# #
--require r/have_dynamic_loading.require --source include/have_dynamic_loading.inc
disable_query_log;
show variables like 'have_dynamic_loading';
enable_query_log;
# #
# Check if the variable UDF_EXAMPLE_LIB is set # Check if the variable UDF_EXAMPLE_LIB is set

View File

@ -132,7 +132,7 @@ INSERT INTO global_suppressions VALUES
("Error in Log_event::read_log_event\\\(\\\): 'Sanity check failed', data_len: 258, event_type: 49"), ("Error in Log_event::read_log_event\\\(\\\): 'Sanity check failed', data_len: 258, event_type: 49"),
("Statement is not safe to log in statement format"), ("Statement may not be safe to log in statement format"),
/* test case for Bug#bug29807 copies a stray frm into database */ /* test case for Bug#bug29807 copies a stray frm into database */
("InnoDB: Error: table `test`.`bug29807` does not exist in the InnoDB internal"), ("InnoDB: Error: table `test`.`bug29807` does not exist in the InnoDB internal"),
@ -162,6 +162,8 @@ INSERT INTO global_suppressions VALUES
("Slave: Unknown column 'c7' in 't15' Error_code: 1054"), ("Slave: Unknown column 'c7' in 't15' Error_code: 1054"),
("Slave: Can't DROP 'c7'.* 1091"), ("Slave: Can't DROP 'c7'.* 1091"),
("Slave: Key column 'c6'.* 1072"), ("Slave: Key column 'c6'.* 1072"),
("The slave I.O thread stops because a fatal error is encountered when it try to get the value of SERVER_ID variable from master."),
(".SELECT UNIX_TIMESTAMP... failed on master, do not trust column Seconds_Behind_Master of SHOW SLAVE STATUS"),
/* Test case for Bug#31590 in order_by.test produces the following error */ /* Test case for Bug#31590 in order_by.test produces the following error */
("Out of sort memory; increase server sort buffer size"), ("Out of sort memory; increase server sort buffer size"),
@ -172,6 +174,17 @@ INSERT INTO global_suppressions VALUES
*/ */
("Can't find file: '.\\\\test\\\\\\?{8}.frm'"), ("Can't find file: '.\\\\test\\\\\\?{8}.frm'"),
/* Added 2009-08-XX after fixing Bug #42408 */
("Although a path was specified for the .* option, log tables are used"),
("Backup: Operation aborted"),
("Restore: Operation aborted"),
("Restore: The grant .* was skipped because the user does not exist"),
("The path specified for the variable .* is not a directory or cannot be written:"),
("Master server does not support or not configured semi-sync replication, fallback to asynchronous"),
(": The MySQL server is running with the --secure-backup-file-priv option so it cannot execute this statement"),
("Slave: Unknown table 't1' Error_code: 1051"),
("THE_LAST_SUPPRESSION")|| ("THE_LAST_SUPPRESSION")||

View File

@ -0,0 +1,69 @@
# Created for verifying bug#20577.
# expects TABLE t1 (... , a DATE, ...)
--sorted_result
SELECT * FROM t1 WHERE a < '1001-01-01';
--sorted_result
SELECT * FROM t1 WHERE a <= '1001-01-01';
--sorted_result
SELECT * FROM t1 WHERE a >= '1001-01-01';
--sorted_result
SELECT * FROM t1 WHERE a > '1001-01-01';
--sorted_result
SELECT * FROM t1 WHERE a = '1001-01-01';
--sorted_result
SELECT * FROM t1 WHERE a < '1001-00-00';
--sorted_result
SELECT * FROM t1 WHERE a <= '1001-00-00';
--sorted_result
SELECT * FROM t1 WHERE a >= '1001-00-00';
--sorted_result
SELECT * FROM t1 WHERE a > '1001-00-00';
--sorted_result
SELECT * FROM t1 WHERE a = '1001-00-00';
--echo # Disabling warnings for the invalid date
--disable_warnings
--sorted_result
SELECT * FROM t1 WHERE a < '1999-02-31';
--sorted_result
SELECT * FROM t1 WHERE a <= '1999-02-31';
--sorted_result
SELECT * FROM t1 WHERE a >= '1999-02-31';
--sorted_result
SELECT * FROM t1 WHERE a > '1999-02-31';
--sorted_result
SELECT * FROM t1 WHERE a = '1999-02-31';
--enable_warnings
--sorted_result
SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1002-00-00';
--sorted_result
SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1001-01-01';
--sorted_result
SELECT * FROM t1 WHERE a BETWEEN '0001-01-02' AND '1002-00-00';
--sorted_result
SELECT * FROM t1 WHERE a BETWEEN '0001-01-01' AND '1001-01-01';
if ($explain_partitions)
{
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < '1001-01-01';
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1001-01-01';
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1001-01-01';
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1001-01-01';
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = '1001-01-01';
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < '1001-00-00';
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1001-00-00';
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1001-00-00';
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1001-00-00';
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = '1001-00-00';
--echo # Disabling warnings for the invalid date
--disable_warnings
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < '1999-02-31';
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1999-02-31';
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1999-02-31';
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1999-02-31';
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = '1999-02-31';
--enable_warnings
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1002-00-00';
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1001-01-01';
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0001-01-02' AND '1002-00-00';
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0001-01-01' AND '1001-01-01';
}

View File

@ -204,8 +204,10 @@ my @mysqld_rules=
{ 'port' => \&fix_port }, { 'port' => \&fix_port },
{ 'socket' => \&fix_socket }, { 'socket' => \&fix_socket },
{ '#log-error' => \&fix_log_error }, { '#log-error' => \&fix_log_error },
{ 'log' => \&fix_log }, { 'general_log' => 1 },
{ 'log-slow-queries' => \&fix_log_slow_queries }, { 'general_log_file' => \&fix_log },
{ 'slow_query_log' => 1 },
{ 'slow_query_log_file' => \&fix_log_slow_queries },
{ '#user' => sub { return shift->{ARGS}->{user} || ""; } }, { '#user' => sub { return shift->{ARGS}->{user} || ""; } },
{ '#password' => sub { return shift->{ARGS}->{password} || ""; } }, { '#password' => sub { return shift->{ARGS}->{password} || ""; } },
{ 'server-id' => \&fix_server_id, }, { 'server-id' => \&fix_server_id, },

View File

@ -106,10 +106,13 @@ sub check_socket_path_length {
my ($path)= @_; my ($path)= @_;
return 0 if IS_WINDOWS; return 0 if IS_WINDOWS;
# This may not be true, but we can't test for it on AIX due to Perl bug
# See Bug #45771
return 0 if ($^O eq 'aix');
require IO::Socket::UNIX; require IO::Socket::UNIX;
my $truncated= 1; # Be negative my $truncated= undef;
# Create a tempfile name with same length as "path" # Create a tempfile name with same length as "path"
my $tmpdir = tempdir( CLEANUP => 0); my $tmpdir = tempdir( CLEANUP => 0);
@ -122,6 +125,7 @@ sub check_socket_path_length {
Local => $testfile, Local => $testfile,
Listen => 1, Listen => 1,
); );
$truncated= 1; # Be negatvie
die "Could not create UNIX domain socket: $!" die "Could not create UNIX domain socket: $!"
unless defined $sock; unless defined $sock;
@ -133,6 +137,9 @@ sub check_socket_path_length {
}; };
die "Unexpected failure when checking socket path length: $@"
if $@ and not defined $truncated;
$sock= undef; # Close socket $sock= undef; # Close socket
rmtree($tmpdir); # Remove the tempdir and any socket file created rmtree($tmpdir); # Remove the tempdir and any socket file created
return $truncated; return $truncated;

View File

@ -13,7 +13,8 @@
# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
safedir = $(prefix)/mysql-test/lib/My/SafeProcess testroot = $(prefix)
safedir = $(testroot)/mysql-test/lib/My/SafeProcess
#nobase_bin_PROGRAMS = ... #nobase_bin_PROGRAMS = ...
safe_PROGRAMS = my_safe_process safe_PROGRAMS = my_safe_process

View File

@ -163,6 +163,7 @@ int main(int argc, const char** argv )
HANDLE job_handle; HANDLE job_handle;
HANDLE wait_handles[NUM_HANDLES]= {0}; HANDLE wait_handles[NUM_HANDLES]= {0};
PROCESS_INFORMATION process_info= {0}; PROCESS_INFORMATION process_info= {0};
BOOL nocore= FALSE;
sprintf(safe_process_name, "safe_process[%d]", pid); sprintf(safe_process_name, "safe_process[%d]", pid);
@ -188,22 +189,33 @@ int main(int argc, const char** argv )
die("No real args -> nothing to do"); die("No real args -> nothing to do");
/* Copy the remaining args to child_arg */ /* Copy the remaining args to child_arg */
for (int j= i+1; j < argc; j++) { for (int j= i+1; j < argc; j++) {
to+= _snprintf(to, child_args + sizeof(child_args) - to, "%s ", argv[j]); if (strchr (argv[j], ' ')) {
/* Protect with "" if this arg contains a space */
to+= _snprintf(to, child_args + sizeof(child_args) - to,
"\"%s\" ", argv[j]);
} else {
to+= _snprintf(to, child_args + sizeof(child_args) - to,
"%s ", argv[j]);
}
} }
break; break;
} else { } else {
if ( strcmp(arg, "--verbose") == 0 ) if (strcmp(arg, "--verbose") == 0)
verbose++; verbose++;
else if ( strncmp(arg, "--parent-pid", 10) == 0 ) else if (strncmp(arg, "--parent-pid", 10) == 0)
{ {
/* Override parent_pid with a value provided by user */ /* Override parent_pid with a value provided by user */
const char* start; const char* start;
if ((start= strstr(arg, "=")) == NULL) if ((start= strstr(arg, "=")) == NULL)
die("Could not find start of option value in '%s'", arg); die("Could not find start of option value in '%s'", arg);
start++; /* Step past = */ start++; /* Step past = */
if ((parent_pid= atoi(start)) == 0) if ((parent_pid= atoi(start)) == 0)
die("Invalid value '%s' passed to --parent-id", start); die("Invalid value '%s' passed to --parent-id", start);
} }
else if (strcmp(arg, "--nocore") == 0)
{
nocore= TRUE;
}
else else
die("Unknown option: %s", arg); die("Unknown option: %s", arg);
} }
@ -241,6 +253,11 @@ int main(int argc, const char** argv )
&jeli, sizeof(jeli)) == 0) &jeli, sizeof(jeli)) == 0)
message("SetInformationJobObject failed, continue anyway..."); message("SetInformationJobObject failed, continue anyway...");
/* Avoid popup box */
if (nocore)
SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX
| SEM_NOOPENFILEERRORBOX);
#if 0 #if 0
/* Setup stdin, stdout and stderr redirect */ /* Setup stdin, stdout and stderr redirect */
si.dwFlags= STARTF_USESTDHANDLES; si.dwFlags= STARTF_USESTDHANDLES;

View File

@ -41,6 +41,7 @@ our $opt_with_ndbcluster_only;
our $defaults_file; our $defaults_file;
our $defaults_extra_file; our $defaults_extra_file;
our $reorder= 1; our $reorder= 1;
our $quick_collect;
sub collect_option { sub collect_option {
my ($opt, $value)= @_; my ($opt, $value)= @_;
@ -68,6 +69,9 @@ require "mtr_misc.pl";
my $do_test_reg; my $do_test_reg;
my $skip_test_reg; my $skip_test_reg;
# If "Quick collect", set to 1 once a test to run has been found.
my $some_test_found;
sub init_pattern { sub init_pattern {
my ($from, $what)= @_; my ($from, $what)= @_;
return undef unless defined $from; return undef unless defined $from;
@ -102,6 +106,7 @@ sub collect_test_cases ($$) {
foreach my $suite (split(",", $suites)) foreach my $suite (split(",", $suites))
{ {
push(@$cases, collect_one_suite($suite, $opt_cases)); push(@$cases, collect_one_suite($suite, $opt_cases));
last if $some_test_found;
} }
if ( @$opt_cases ) if ( @$opt_cases )
@ -139,7 +144,7 @@ sub collect_test_cases ($$) {
} }
} }
if ( $reorder ) if ( $reorder && !$quick_collect)
{ {
# Reorder the test cases in an order that will make them faster to run # Reorder the test cases in an order that will make them faster to run
my %sort_criteria; my %sort_criteria;
@ -386,7 +391,7 @@ sub collect_one_suite($)
# Read combinations for this suite and build testcases x combinations # Read combinations for this suite and build testcases x combinations
# if any combinations exists # if any combinations exists
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
if ( ! $skip_combinations ) if ( ! $skip_combinations && ! $quick_collect )
{ {
my @combinations; my @combinations;
my $combination_file= "$suitedir/combinations"; my $combination_file= "$suitedir/combinations";
@ -584,6 +589,12 @@ sub optimize_cases {
if ( $default_engine =~ /^innodb/i ); if ( $default_engine =~ /^innodb/i );
} }
} }
if ($quick_collect && ! $tinfo->{'skip'})
{
$some_test_found= 1;
return;
}
} }
} }
@ -848,14 +859,14 @@ sub collect_one_test_case {
if ( $tinfo->{'big_test'} and ! $::opt_big_test ) if ( $tinfo->{'big_test'} and ! $::opt_big_test )
{ {
$tinfo->{'skip'}= 1; $tinfo->{'skip'}= 1;
$tinfo->{'comment'}= "Test need 'big-test' option"; $tinfo->{'comment'}= "Test needs 'big-test' option";
return $tinfo return $tinfo
} }
if ( $tinfo->{'need_debug'} && ! $::debug_compiled_binaries ) if ( $tinfo->{'need_debug'} && ! $::debug_compiled_binaries )
{ {
$tinfo->{'skip'}= 1; $tinfo->{'skip'}= 1;
$tinfo->{'comment'}= "Test need debug binaries"; $tinfo->{'comment'}= "Test needs debug binaries";
return $tinfo return $tinfo
} }
@ -891,14 +902,14 @@ sub collect_one_test_case {
if ($tinfo->{'federated_test'}) if ($tinfo->{'federated_test'})
{ {
# This is a test that need federated, enable it # This is a test that needs federated, enable it
push(@{$tinfo->{'master_opt'}}, "--loose-federated"); push(@{$tinfo->{'master_opt'}}, "--loose-federated");
push(@{$tinfo->{'slave_opt'}}, "--loose-federated"); push(@{$tinfo->{'slave_opt'}}, "--loose-federated");
} }
if ( $tinfo->{'innodb_test'} ) if ( $tinfo->{'innodb_test'} )
{ {
# This is a test that need innodb # This is a test that needs innodb
if ( $::mysqld_variables{'innodb'} eq "OFF" || if ( $::mysqld_variables{'innodb'} eq "OFF" ||
! exists $::mysqld_variables{'innodb'} ) ! exists $::mysqld_variables{'innodb'} )
{ {
@ -919,7 +930,7 @@ sub collect_one_test_case {
if (grep(/^--skip-log-bin/, @::opt_extra_mysqld_opt) ) if (grep(/^--skip-log-bin/, @::opt_extra_mysqld_opt) )
{ {
$tinfo->{'skip'}= 1; $tinfo->{'skip'}= 1;
$tinfo->{'comment'}= "Test need binlog"; $tinfo->{'comment'}= "Test needs binlog";
return $tinfo; return $tinfo;
} }
} }

View File

@ -134,8 +134,8 @@ sub mtr_report_test ($) {
# an asterisk at the end, determine if the characters up to # an asterisk at the end, determine if the characters up to
# but excluding the asterisk are the same # but excluding the asterisk are the same
if ( $exp ne "" && substr($exp, -1, 1) eq "*" ) { if ( $exp ne "" && substr($exp, -1, 1) eq "*" ) {
$exp = substr($exp, 0, length($exp) - 1); my $nexp = substr($exp, 0, length($exp) - 1);
if ( substr($test_name, 0, length($exp)) ne $exp ) { if ( substr($test_name, 0, length($nexp)) ne $nexp ) {
# no match, try next entry # no match, try next entry
next; next;
} }

View File

@ -0,0 +1,6 @@
# This file lists tests that cannot run in MTR v1 for some reason.
# They will be skipped.
# Any text following white space after full test name is ignored
# Only exact test names can be used, no regexp.
main.fulltext_plugin # Refers to $SIMPLE_PARSER_OPT which is not set

View File

@ -32,6 +32,7 @@ sub mtr_options_from_test_file($$);
my $do_test; my $do_test;
my $skip_test; my $skip_test;
my %incompatible;
sub init_pattern { sub init_pattern {
my ($from, $what)= @_; my ($from, $what)= @_;
@ -47,6 +48,15 @@ sub init_pattern {
} }
sub collect_incomp_tests {
open (INCOMP, "lib/v1/incompatible.tests");
while (<INCOMP>)
{
next unless /^\w/;
s/\s.*\n//; # Ignore anything from first white space
$incompatible{$_}= 1;
}
}
############################################################################## ##############################################################################
# #
@ -58,6 +68,8 @@ sub collect_test_cases ($) {
$do_test= init_pattern($::opt_do_test, "--do-test"); $do_test= init_pattern($::opt_do_test, "--do-test");
$skip_test= init_pattern($::opt_skip_test, "--skip-test"); $skip_test= init_pattern($::opt_skip_test, "--skip-test");
collect_incomp_tests();
my $suites= shift; # Semicolon separated list of test suites my $suites= shift; # Semicolon separated list of test suites
my $cases = []; # Array of hash my $cases = []; # Array of hash
@ -528,6 +540,17 @@ sub collect_one_test_case($$$$$$$$$) {
$tinfo->{'component_id'} = $component_id; $tinfo->{'component_id'} = $component_id;
push(@$cases, $tinfo); push(@$cases, $tinfo);
# Remove "combinations" part of test name
my $test_base_name= $tinfo->{'name'};
$test_base_name=~ s/\s.*\n//;
if (exists ($incompatible{$test_base_name}))
{
$tinfo->{'skip'}= 1;
$tinfo->{'comment'}= "Test cannot run in mtr v1";
return;
}
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
# Skip some tests but include in list, just mark them to skip # Skip some tests but include in list, just mark them to skip
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
@ -841,7 +864,7 @@ sub collect_one_test_case($$$$$$$$$) {
if ( $tinfo->{'innodb_test'} ) if ( $tinfo->{'innodb_test'} )
{ {
# This is a test that need innodb # This is a test that need innodb
if ( $::mysqld_variables{'innodb'} ne "TRUE" ) if ( $::mysqld_variables{'innodb'} eq "OFF" )
{ {
# innodb is not supported, skip it # innodb is not supported, skip it
$tinfo->{'skip'}= 1; $tinfo->{'skip'}= 1;

View File

@ -209,6 +209,7 @@ sub check_timeout { return $opt_testcase_timeout * 6; };
my $opt_start; my $opt_start;
my $opt_start_dirty; my $opt_start_dirty;
my $start_only;
my $opt_wait_all; my $opt_wait_all;
my $opt_repeat= 1; my $opt_repeat= 1;
my $opt_retry= 3; my $opt_retry= 3;
@ -984,6 +985,9 @@ sub command_line_setup {
if ( $opt_experimental ) if ( $opt_experimental )
{ {
# $^O on Windows considered not generic enough
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 file specified on
# the command line # the command line
open(FILE, "<", $opt_experimental) or mtr_error("Can't read experimental file: $opt_experimental"); open(FILE, "<", $opt_experimental) or mtr_error("Can't read experimental file: $opt_experimental");
@ -994,6 +998,15 @@ sub command_line_setup {
# remove comments (# foo) at the beginning of the line, or after a # remove comments (# foo) at the beginning of the line, or after a
# blank at the end of the line # blank at the end of the line
s/( +|^)#.*$//; s/( +|^)#.*$//;
# If @ platform specifier given, use this entry only if it contains
# @<platform> or @!<xxx> where xxx != platform
if (/\@.*/)
{
next if (/\@!$plat/);
next unless (/\@$plat/ or /\@!/);
# Then remove @ and everything after it
s/\@.*$//;
}
# remove whitespace # remove whitespace
s/^ +//; s/^ +//;
s/ +$//; s/ +$//;
@ -1241,13 +1254,28 @@ sub command_line_setup {
{ {
mtr_error("Can't use --extern when using debugger"); mtr_error("Can't use --extern when using debugger");
} }
# Set one week timeout (check-testcase timeout will be 1/10th)
$opt_testcase_timeout= 7 * 24 * 60;
$opt_suite_timeout= 7 * 24 * 60;
# One day to shutdown
$opt_shutdown_timeout= 24 * 60;
# One day for PID file creation (this is given in seconds not minutes)
$opt_start_timeout= 24 * 60 * 60;
}
# --------------------------------------------------------------------------
# Modified behavior with --start options
# --------------------------------------------------------------------------
if ($opt_start or $opt_start_dirty) {
collect_option ('quick-collect', 1);
$start_only= 1;
} }
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
# Check use of wait-all # Check use of wait-all
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
if ($opt_wait_all && ! ($opt_start_dirty || $opt_start)) 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 or --start-dirty");
} }
@ -1506,6 +1534,10 @@ sub collect_mysqld_features_from_running_server ()
} }
} }
# "Convert" innodb flag
$mysqld_variables{'innodb'}= "ON"
if ($mysqld_variables{'have_innodb'} eq "YES");
# Parse version # Parse version
my $version_str= $mysqld_variables{'version'}; my $version_str= $mysqld_variables{'version'};
if ( $version_str =~ /^([0-9]*)\.([0-9]*)\.([0-9]*)/ ) if ( $version_str =~ /^([0-9]*)\.([0-9]*)\.([0-9]*)/ )
@ -1764,7 +1796,7 @@ sub environment_setup {
my $plugin_filename; my $plugin_filename;
if (IS_WINDOWS) if (IS_WINDOWS)
{ {
$plugin_filename = "ha_example.dll"; $plugin_filename = "ha_example.dll";
} }
else else
{ {
@ -1772,7 +1804,8 @@ sub environment_setup {
} }
my $lib_example_plugin= my $lib_example_plugin=
mtr_file_exists(vs_config_dirs('storage/example',$plugin_filename), mtr_file_exists(vs_config_dirs('storage/example',$plugin_filename),
"$basedir/storage/example/.libs/".$plugin_filename); "$basedir/storage/example/.libs/".$plugin_filename,
"$basedir/lib/mysql/plugin/".$plugin_filename);
$ENV{'EXAMPLE_PLUGIN'}= $ENV{'EXAMPLE_PLUGIN'}=
($lib_example_plugin ? basename($lib_example_plugin) : ""); ($lib_example_plugin ? basename($lib_example_plugin) : "");
$ENV{'EXAMPLE_PLUGIN_OPT'}= "--plugin-dir=". $ENV{'EXAMPLE_PLUGIN_OPT'}= "--plugin-dir=".
@ -1781,6 +1814,14 @@ sub environment_setup {
$ENV{'HA_EXAMPLE_SO'}="'".$plugin_filename."'"; $ENV{'HA_EXAMPLE_SO'}="'".$plugin_filename."'";
$ENV{'EXAMPLE_PLUGIN_LOAD'}="--plugin_load=;EXAMPLE=".$plugin_filename.";"; $ENV{'EXAMPLE_PLUGIN_LOAD'}="--plugin_load=;EXAMPLE=".$plugin_filename.";";
} }
else
{
# Some ".opt" files use some of these variables, so they must be defined
$ENV{'EXAMPLE_PLUGIN'}= "";
$ENV{'EXAMPLE_PLUGIN_OPT'}= "";
$ENV{'HA_EXAMPLE_SO'}= "";
$ENV{'EXAMPLE_PLUGIN_LOAD'}= "";
}
# ---------------------------------------------------- # ----------------------------------------------------
# Add the path where mysqld will find mypluglib.so # Add the path where mysqld will find mypluglib.so
@ -2811,7 +2852,7 @@ sub run_testcase_check_skip_test($)
if ( $tinfo->{'skip'} ) if ( $tinfo->{'skip'} )
{ {
mtr_report_test_skipped($tinfo); mtr_report_test_skipped($tinfo) unless $start_only;
return 1; return 1;
} }
@ -3298,9 +3339,16 @@ sub run_testcase ($) {
# server exits # server exits
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
if ( $opt_start or $opt_start_dirty ) if ( $start_only )
{ {
mtr_print("\nStarted", started(all_servers())); mtr_print("\nStarted", started(all_servers()));
mtr_print("Using config for test", $tinfo->{name});
mtr_print("Port and socket path for server(s):");
foreach my $mysqld ( mysqlds() )
{
mtr_print ($mysqld->name() . " " . $mysqld->value('port') .
" " . $mysqld->value('socket'));
}
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();
@ -3542,8 +3590,8 @@ sub run_testcase ($) {
# error log and write all lines that look # error log and write all lines that look
# suspicious into $error_log.warnings # suspicious into $error_log.warnings
# #
sub extract_warning_lines ($) { sub extract_warning_lines ($$) {
my ($error_log) = @_; my ($error_log, $tname) = @_;
# Open the servers .err log file and read all lines # Open the servers .err log file and read all lines
# belonging to current tets into @lines # belonging to current tets into @lines
@ -3551,14 +3599,27 @@ sub extract_warning_lines ($) {
or mtr_error("Could not open file '$error_log' for reading: $!"); or mtr_error("Could not open file '$error_log' for reading: $!");
my @lines; my @lines;
my $found_test= 0; # Set once we've found the log of this test
while ( my $line = <$Ferr> ) while ( my $line = <$Ferr> )
{ {
if ( $line =~ /^CURRENT_TEST:/ ) if ($found_test)
{ {
# Throw away lines from previous tests # If test wasn't last after all, discard what we found, test again.
@lines = (); if ( $line =~ /^CURRENT_TEST:/)
{
@lines= ();
$found_test= $line =~ /^CURRENT_TEST: $tname/;
}
else
{
push(@lines, $line);
}
}
else
{
# Search for beginning of test, until found
$found_test= 1 if ($line =~ /^CURRENT_TEST: $tname/);
} }
push(@lines, $line);
} }
$Ferr = undef; # Close error log file $Ferr = undef; # Close error log file
@ -3595,10 +3656,8 @@ sub extract_warning_lines ($) {
# and correcting them shows a few additional harmless warnings. # and correcting them shows a few additional harmless warnings.
# Thus those patterns are temporarily removed from the list # Thus those patterns are temporarily removed from the list
# of patterns. For more info see BUG#42408 # of patterns. For more info see BUG#42408
# qr/^Warning:|mysqld: Warning|\[Warning\]/, qr/^Warning:|mysqld: Warning|\[Warning\]/,
# qr/^Error:|\[ERROR\]/, qr/^Error:|\[ERROR\]/,
qr/^Warning:|mysqld: Warning/,
qr/^Error:/,
qr/^==.* at 0x/, qr/^==.* at 0x/,
qr/InnoDB: Warning|InnoDB: Error/, qr/InnoDB: Warning|InnoDB: Error/,
qr/^safe_mutex:|allocated at line/, qr/^safe_mutex:|allocated at line/,
@ -3638,7 +3697,7 @@ sub start_check_warnings ($$) {
my $log_error= $mysqld->value('#log-error'); my $log_error= $mysqld->value('#log-error');
# To be communicated to the test # To be communicated to the test
$ENV{MTR_LOG_ERROR}= $log_error; $ENV{MTR_LOG_ERROR}= $log_error;
extract_warning_lines($log_error); extract_warning_lines($log_error, $tinfo->{name});
my $args; my $args;
mtr_init_args(\$args); mtr_init_args(\$args);
@ -4078,8 +4137,8 @@ sub mysqld_arguments ($$$) {
if ( $mysql_version_id >= 50106 ) if ( $mysql_version_id >= 50106 )
{ {
# Turn on logging to both tables and file # Turn on logging to file
mtr_add_arg($args, "--log-output=table,file"); mtr_add_arg($args, "--log-output=file");
} }
# Check if "extra_opt" contains skip-log-bin # Check if "extra_opt" contains skip-log-bin
@ -5123,7 +5182,7 @@ Options to control what test suites or cases to run
skip-rpl Skip the replication test cases. skip-rpl Skip the replication test cases.
big-test Also run tests marked as "big" big-test Also run tests marked as "big"
enable-disabled Run also tests marked as disabled enable-disabled Run also tests marked as disabled
print_testcases Don't run the tests but print details about all the print-testcases Don't run the tests but print details about all the
selected tests, in the order they would be run. selected tests, in the order they would be run.
Options that specify ports Options that specify ports

View File

@ -1,3 +1,4 @@
call mtr.add_suppression("The table 't1' is full");
drop table if exists t1; drop table if exists t1;
set global myisam_data_pointer_size=2; set global myisam_data_pointer_size=2;
CREATE TABLE t1 (a int auto_increment primary key not null, b longtext) ENGINE=MyISAM; CREATE TABLE t1 (a int auto_increment primary key not null, b longtext) ENGINE=MyISAM;

View File

@ -28,9 +28,7 @@ test.t1.bool N Y 1 1 0 0 1.0000 NULL ENUM('N','Y') NOT NULL
test.t1.d 2002-03-03 2002-03-05 10 10 0 0 10.0000 NULL ENUM('2002-03-03','2002-03-04','2002-03-05') NOT NULL test.t1.d 2002-03-03 2002-03-05 10 10 0 0 10.0000 NULL ENUM('2002-03-03','2002-03-04','2002-03-05') NOT NULL
drop table t1,t2; drop table t1,t2;
EXPLAIN SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE(); EXPLAIN SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE();
id select_type table type possible_keys key key_len ref rows Extra ERROR HY000: Incorrect usage of PROCEDURE and subquery
1 PRIMARY <derived2> system NULL NULL NULL NULL 1
2 DERIVED NULL NULL NULL NULL NULL NULL NULL No tables used
create table t1 (a int not null); create table t1 (a int not null);
create table t2 select * from t1 where 0=1 procedure analyse(); create table t2 select * from t1 where 0=1 procedure analyse();
show create table t2; show create table t2;
@ -153,4 +151,9 @@ select f3 from t1 procedure analyse(1, 1);
Field_name Min_value Max_value Min_length Max_length Empties_or_zeros Nulls Avg_value_or_avg_length Std Optimal_fieldtype Field_name Min_value Max_value Min_length Max_length Empties_or_zeros Nulls Avg_value_or_avg_length Std Optimal_fieldtype
test.t1.f3 5.99999 9.55555 7 7 0 0 7.77777 1.77778 FLOAT(6,5) NOT NULL test.t1.f3 5.99999 9.55555 7 7 0 0 7.77777 1.77778 FLOAT(6,5) NOT NULL
drop table t1; drop table t1;
CREATE TABLE t1(a INT,b INT,c INT,d INT,e INT,f INT,g INT,h INT,i INT,j INT,k INT);
INSERT INTO t1 VALUES ();
SELECT * FROM (SELECT * FROM t1) d PROCEDURE ANALYSE();
ERROR HY000: Incorrect usage of PROCEDURE and subquery
DROP TABLE t1;
End of 4.1 tests End of 4.1 tests

View File

@ -12695,3 +12695,25 @@ a b
1 NULL 1 NULL
2 NULL 2 NULL
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1(a INT, b BLOB) ENGINE=archive;
SELECT DATA_LENGTH, AVG_ROW_LENGTH FROM
INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='t1' AND TABLE_SCHEMA='test';
DATA_LENGTH AVG_ROW_LENGTH
8666 15
INSERT INTO t1 VALUES(1, 'sampleblob1'),(2, 'sampleblob2');
SELECT DATA_LENGTH, AVG_ROW_LENGTH FROM
INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='t1' AND TABLE_SCHEMA='test';
DATA_LENGTH AVG_ROW_LENGTH
8700 4350
DROP TABLE t1;
SET @save_join_buffer_size= @@join_buffer_size;
SET @@join_buffer_size= 8228;
CREATE TABLE t1(a CHAR(255)) ENGINE=archive;
INSERT INTO t1 VALUES('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'),
('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'),
('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
SELECT COUNT(t1.a) FROM t1, t1 a, t1 b, t1 c, t1 d, t1 e;
COUNT(t1.a)
729
DROP TABLE t1;
SET @@join_buffer_size= @save_join_buffer_size;

View File

@ -362,12 +362,12 @@ select cast(19999999999999999999 as signed);
cast(19999999999999999999 as signed) cast(19999999999999999999 as signed)
9223372036854775807 9223372036854775807
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select cast(-19999999999999999999 as signed); select cast(-19999999999999999999 as signed);
cast(-19999999999999999999 as signed) cast(-19999999999999999999 as signed)
-9223372036854775808 -9223372036854775808
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select -9223372036854775808; select -9223372036854775808;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def -9223372036854775808 8 20 20 N 32897 0 63 def -9223372036854775808 8 20 20 N 32897 0 63

View File

@ -2,6 +2,8 @@
# Bug #46080: group_concat(... order by) crashes server when # Bug #46080: group_concat(... order by) crashes server when
# sort_buffer_size cannot allocate # sort_buffer_size cannot allocate
# #
call mtr.add_suppression("Out of memory at line .*, 'my_alloc.c'");
call mtr.add_suppression("needed .* byte .*k., memory in use: .* bytes .*k");
CREATE TABLE t1(a CHAR(255)); CREATE TABLE t1(a CHAR(255));
INSERT INTO t1 VALUES ('a'); INSERT INTO t1 VALUES ('a');
SET @@SESSION.sort_buffer_size=5*16*1000000; SET @@SESSION.sort_buffer_size=5*16*1000000;

View File

@ -380,7 +380,7 @@ select cast(s1 as decimal(7,2)) from t1;
cast(s1 as decimal(7,2)) cast(s1 as decimal(7,2))
99999.99 99999.99
Warnings: Warnings:
Error 1264 Out of range value for column 'cast(s1 as decimal(7,2))' at row 1 Warning 1264 Out of range value for column 'cast(s1 as decimal(7,2))' at row 1
drop table t1; drop table t1;
CREATE TABLE t1 (v varchar(10), tt tinytext, t text, CREATE TABLE t1 (v varchar(10), tt tinytext, t text,
mt mediumtext, lt longtext); mt mediumtext, lt longtext);

View File

@ -841,17 +841,17 @@ call p_verify_status_increment(2, 0, 2, 0);
SUCCESS SUCCESS
alter table t3 rename t4; alter table t3 rename t4;
call p_verify_status_increment(1, 0, 1, 0); call p_verify_status_increment(2, 2, 2, 2);
SUCCESS SUCCESS
rename table t4 to t3; rename table t4 to t3;
call p_verify_status_increment(1, 0, 1, 0); call p_verify_status_increment(2, 2, 2, 2);
SUCCESS SUCCESS
truncate table t3; truncate table t3;
call p_verify_status_increment(4, 4, 4, 4); call p_verify_status_increment(4, 4, 4, 4);
ERROR SUCCESS
Expected commit increment: 4 actual: 2
create view v1 as select * from t2; create view v1 as select * from t2;
call p_verify_status_increment(1, 0, 1, 0); call p_verify_status_increment(1, 0, 1, 0);
SUCCESS SUCCESS

View File

@ -1572,6 +1572,19 @@ CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY)
SELECT a FROM t1; SELECT a FROM t1;
ERROR 23000: Duplicate entry '1' for key 'PRIMARY' ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
DROP TABLE t1, t2; DROP TABLE t1, t2;
#
# BUG#46384 - mysqld segfault when trying to create table with same
# name as existing view
#
CREATE TABLE t1 (a INT);
CREATE TABLE t2 (a INT);
INSERT INTO t1 VALUES (1),(2),(3);
INSERT INTO t2 VALUES (1),(2),(3);
CREATE VIEW v1 AS SELECT t1.a FROM t1, t2;
CREATE TABLE v1 AS SELECT * FROM t1;
ERROR 42S01: Table 'v1' already exists
DROP VIEW v1;
DROP TABLE t1,t2;
End of 5.0 tests End of 5.0 tests
CREATE TABLE t1 (a int, b int); CREATE TABLE t1 (a int, b int);
insert into t1 values (1,1),(1,2); insert into t1 values (1,1),(1,2);

View File

@ -1,3 +1,4 @@
RESET MASTER;
SET NAMES gbk; SET NAMES gbk;
CREATE TABLE t1 ( CREATE TABLE t1 (
f1 BLOB f1 BLOB

View File

@ -1631,27 +1631,27 @@ select char(0xff,0x8f using utf8);
char(0xff,0x8f using utf8) char(0xff,0x8f using utf8)
NULL NULL
Warnings: Warnings:
Error 1300 Invalid utf8 character string: 'FF8F' Warning 1300 Invalid utf8 character string: 'FF8F'
select char(195 using utf8); select char(195 using utf8);
char(195 using utf8) char(195 using utf8)
NULL NULL
Warnings: Warnings:
Error 1300 Invalid utf8 character string: 'C3' Warning 1300 Invalid utf8 character string: 'C3'
select char(196 using utf8); select char(196 using utf8);
char(196 using utf8) char(196 using utf8)
NULL NULL
Warnings: Warnings:
Error 1300 Invalid utf8 character string: 'C4' Warning 1300 Invalid utf8 character string: 'C4'
select char(2557 using utf8); select char(2557 using utf8);
char(2557 using utf8) char(2557 using utf8)
NULL NULL
Warnings: Warnings:
Error 1300 Invalid utf8 character string: 'FD' Warning 1300 Invalid utf8 character string: 'FD'
select convert(char(0xff,0x8f) using utf8); select convert(char(0xff,0x8f) using utf8);
convert(char(0xff,0x8f) using utf8) convert(char(0xff,0x8f) using utf8)
NULL NULL
Warnings: Warnings:
Error 1300 Invalid utf8 character string: 'FF8F' Warning 1300 Invalid utf8 character string: 'FF8F'
select hex(convert(char(2557 using latin1) using utf8)); select hex(convert(char(2557 using latin1) using utf8));
hex(convert(char(2557 using latin1) using utf8)) hex(convert(char(2557 using latin1) using utf8))
09C3BD 09C3BD
@ -1815,12 +1815,12 @@ select hex(char(0xFF using utf8));
hex(char(0xFF using utf8)) hex(char(0xFF using utf8))
NULL NULL
Warnings: Warnings:
Error 1300 Invalid utf8 character string: 'FF' Warning 1300 Invalid utf8 character string: 'FF'
select hex(convert(0xFF using utf8)); select hex(convert(0xFF using utf8));
hex(convert(0xFF using utf8)) hex(convert(0xFF using utf8))
NULL NULL
Warnings: Warnings:
Error 1300 Invalid utf8 character string: 'FF' Warning 1300 Invalid utf8 character string: 'FF'
select hex(_utf8 0x616263FF); select hex(_utf8 0x616263FF);
ERROR HY000: Invalid utf8 character string: 'FF' ERROR HY000: Invalid utf8 character string: 'FF'
select hex(_utf8 X'616263FF'); select hex(_utf8 X'616263FF');

View File

@ -89,7 +89,7 @@ select STR_TO_DATE('2004.12.12 22.30.61','%Y.%m.%d %T');
STR_TO_DATE('2004.12.12 22.30.61','%Y.%m.%d %T') STR_TO_DATE('2004.12.12 22.30.61','%Y.%m.%d %T')
NULL NULL
Warnings: Warnings:
Error 1411 Incorrect time value: '22.30.61' for function str_to_date Warning 1411 Incorrect time value: '22.30.61' for function str_to_date
create table t1 (date char(30), format char(30) not null); create table t1 (date char(30), format char(30) not null);
insert into t1 values insert into t1 values
('2003-01-02 10:11:12', '%Y-%m-%d %H:%i:%S'), ('2003-01-02 10:11:12', '%Y-%m-%d %H:%i:%S'),
@ -361,21 +361,21 @@ Tuesday 52 2001 %W %u %x NULL
7 53 1998 %w %u %Y NULL 7 53 1998 %w %u %Y NULL
NULL %m.%d.%Y NULL NULL %m.%d.%Y NULL
Warnings: Warnings:
Error 1411 Incorrect datetime value: '2003-01-02 10:11:12 PM' for function str_to_date Warning 1411 Incorrect datetime value: '2003-01-02 10:11:12 PM' for function str_to_date
Error 1411 Incorrect datetime value: '2003-01-02 10:11:12.123456' for function str_to_date Warning 1411 Incorrect datetime value: '2003-01-02 10:11:12.123456' for function str_to_date
Error 1411 Incorrect datetime value: '2003-01-02 10:11:12AM' for function str_to_date Warning 1411 Incorrect datetime value: '2003-01-02 10:11:12AM' for function str_to_date
Error 1411 Incorrect datetime value: '2003-01-02 10:11:12AN' for function str_to_date Warning 1411 Incorrect datetime value: '2003-01-02 10:11:12AN' for function str_to_date
Error 1411 Incorrect datetime value: '2003-01-02 10:11:12 PM' for function str_to_date Warning 1411 Incorrect datetime value: '2003-01-02 10:11:12 PM' for function str_to_date
Error 1411 Incorrect datetime value: '10:20:10AM' for function str_to_date Warning 1411 Incorrect datetime value: '10:20:10AM' for function str_to_date
Error 1411 Incorrect datetime value: '15 Septembei 2001' for function str_to_date Warning 1411 Incorrect datetime value: '15 Septembei 2001' for function str_to_date
Error 1411 Incorrect datetime value: '15 Ju 2001' for function str_to_date Warning 1411 Incorrect datetime value: '15 Ju 2001' for function str_to_date
Error 1411 Incorrect datetime value: 'Sund 15 MA' for function str_to_date Warning 1411 Incorrect datetime value: 'Sund 15 MA' for function str_to_date
Error 1411 Incorrect datetime value: 'Thursdai 12 1998' for function str_to_date Warning 1411 Incorrect datetime value: 'Thursdai 12 1998' for function str_to_date
Error 1411 Incorrect datetime value: 'Sunday 01 2001' for function str_to_date Warning 1411 Incorrect datetime value: 'Sunday 01 2001' for function str_to_date
Error 1411 Incorrect datetime value: 'Tuesday 52 2001' for function str_to_date Warning 1411 Incorrect datetime value: 'Tuesday 52 2001' for function str_to_date
Error 1411 Incorrect datetime value: 'Tuesday 52 2001' for function str_to_date Warning 1411 Incorrect datetime value: 'Tuesday 52 2001' for function str_to_date
Error 1411 Incorrect datetime value: 'Tuesday 52 2001' for function str_to_date Warning 1411 Incorrect datetime value: 'Tuesday 52 2001' for function str_to_date
Error 1411 Incorrect datetime value: '7 53 1998' for function str_to_date Warning 1411 Incorrect datetime value: '7 53 1998' for function str_to_date
select date,format,concat(str_to_date(date, format),'') as con from t1; select date,format,concat(str_to_date(date, format),'') as con from t1;
date format con date format con
2003-01-02 10:11:12 PM %Y-%m-%d %H:%i:%S %p NULL 2003-01-02 10:11:12 PM %Y-%m-%d %H:%i:%S %p NULL
@ -395,21 +395,21 @@ Tuesday 52 2001 %W %u %x NULL
7 53 1998 %w %u %Y NULL 7 53 1998 %w %u %Y NULL
NULL %m.%d.%Y NULL NULL %m.%d.%Y NULL
Warnings: Warnings:
Error 1411 Incorrect datetime value: '2003-01-02 10:11:12 PM' for function str_to_date Warning 1411 Incorrect datetime value: '2003-01-02 10:11:12 PM' for function str_to_date
Error 1411 Incorrect datetime value: '2003-01-02 10:11:12.123456' for function str_to_date Warning 1411 Incorrect datetime value: '2003-01-02 10:11:12.123456' for function str_to_date
Error 1411 Incorrect datetime value: '2003-01-02 10:11:12AM' for function str_to_date Warning 1411 Incorrect datetime value: '2003-01-02 10:11:12AM' for function str_to_date
Error 1411 Incorrect datetime value: '2003-01-02 10:11:12AN' for function str_to_date Warning 1411 Incorrect datetime value: '2003-01-02 10:11:12AN' for function str_to_date
Error 1411 Incorrect datetime value: '2003-01-02 10:11:12 PM' for function str_to_date Warning 1411 Incorrect datetime value: '2003-01-02 10:11:12 PM' for function str_to_date
Error 1411 Incorrect datetime value: '10:20:10AM' for function str_to_date Warning 1411 Incorrect datetime value: '10:20:10AM' for function str_to_date
Error 1411 Incorrect datetime value: '15 Septembei 2001' for function str_to_date Warning 1411 Incorrect datetime value: '15 Septembei 2001' for function str_to_date
Error 1411 Incorrect datetime value: '15 Ju 2001' for function str_to_date Warning 1411 Incorrect datetime value: '15 Ju 2001' for function str_to_date
Error 1411 Incorrect datetime value: 'Sund 15 MA' for function str_to_date Warning 1411 Incorrect datetime value: 'Sund 15 MA' for function str_to_date
Error 1411 Incorrect datetime value: 'Thursdai 12 1998' for function str_to_date Warning 1411 Incorrect datetime value: 'Thursdai 12 1998' for function str_to_date
Error 1411 Incorrect datetime value: 'Sunday 01 2001' for function str_to_date Warning 1411 Incorrect datetime value: 'Sunday 01 2001' for function str_to_date
Error 1411 Incorrect datetime value: 'Tuesday 52 2001' for function str_to_date Warning 1411 Incorrect datetime value: 'Tuesday 52 2001' for function str_to_date
Error 1411 Incorrect datetime value: 'Tuesday 52 2001' for function str_to_date Warning 1411 Incorrect datetime value: 'Tuesday 52 2001' for function str_to_date
Error 1411 Incorrect datetime value: 'Tuesday 52 2001' for function str_to_date Warning 1411 Incorrect datetime value: 'Tuesday 52 2001' for function str_to_date
Error 1411 Incorrect datetime value: '7 53 1998' for function str_to_date Warning 1411 Incorrect datetime value: '7 53 1998' for function str_to_date
truncate table t1; truncate table t1;
insert into t1 values insert into t1 values
('10:20:10AM', '%h:%i:%s'), ('10:20:10AM', '%h:%i:%s'),
@ -449,7 +449,7 @@ select str_to_date('15-01-2001 12:59:59', GET_FORMAT(DATE,'USA'));
str_to_date('15-01-2001 12:59:59', GET_FORMAT(DATE,'USA')) str_to_date('15-01-2001 12:59:59', GET_FORMAT(DATE,'USA'))
NULL NULL
Warnings: Warnings:
Error 1411 Incorrect datetime value: '15-01-2001 12:59:59' for function str_to_date Warning 1411 Incorrect datetime value: '15-01-2001 12:59:59' for function str_to_date
explain extended select makedate(1997,1), addtime("31.12.97 11.59.59.999999 PM", "1 1.1.1.000002"),subtime("31.12.97 11.59.59.999999 PM", "1 1.1.1.000002"),timediff("01.01.97 11:59:59.000001 PM","31.12.95 11:59:59.000002 PM"),cast(str_to_date("15-01-2001 12:59:59", "%d-%m-%Y %H:%i:%S") as TIME), maketime(23,11,12),microsecond("1997-12-31 23:59:59.000001"); explain extended select makedate(1997,1), addtime("31.12.97 11.59.59.999999 PM", "1 1.1.1.000002"),subtime("31.12.97 11.59.59.999999 PM", "1 1.1.1.000002"),timediff("01.01.97 11:59:59.000001 PM","31.12.95 11:59:59.000002 PM"),cast(str_to_date("15-01-2001 12:59:59", "%d-%m-%Y %H:%i:%S") as TIME), maketime(23,11,12),microsecond("1997-12-31 23:59:59.000001");
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 No tables used 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used

View File

@ -763,4 +763,34 @@ a b d c
1 2 0 2 1 2 0 2
1 2 0 3 1 2 0 3
DROP TABLE t1; DROP TABLE t1;
#
# Bug #46159: simple query that never returns
#
SET @old_max_heap_table_size = @@max_heap_table_size;
SET @@max_heap_table_size = 16384;
SET @old_sort_buffer_size = @@sort_buffer_size;
SET @@sort_buffer_size = 32804;
CREATE TABLE t1(c1 int, c2 VARCHAR(20));
INSERT INTO t1 VALUES (1, '1'), (1, '1'), (2, '2'), (3, '1'), (3, '1'), (4, '4');
INSERT INTO t1 SELECT 5 + 10000 * RAND(), '5' FROM t1;
INSERT INTO t1 SELECT 5 + 10000 * RAND(), '5' FROM t1;
INSERT INTO t1 SELECT 5 + 10000 * RAND(), '5' FROM t1;
INSERT INTO t1 SELECT 5 + 10000 * RAND(), '5' FROM t1;
INSERT INTO t1 SELECT 5 + 10000 * RAND(), '5' FROM t1;
INSERT INTO t1 SELECT 5 + 10000 * RAND(), '5' FROM t1;
INSERT INTO t1 SELECT 5 + 10000 * RAND(), '5' FROM t1;
INSERT INTO t1 SELECT 5 + 10000 * RAND(), '5' FROM t1;
SELECT c1, c2, COUNT(*) FROM t1 GROUP BY c1 LIMIT 4;
c1 c2 COUNT(*)
1 1 2
2 2 1
3 1 2
4 4 1
SELECT DISTINCT c2 FROM t1 GROUP BY c1 HAVING COUNT(*) > 1;
c2
1
5
DROP TABLE t1;
SET @@sort_buffer_size = @old_sort_buffer_size;
SET @@max_heap_table_size = @old_max_heap_table_size;
End of 5.1 tests End of 5.1 tests

View File

@ -159,6 +159,14 @@ CREATE TABLE t1 (a INT PRIMARY KEY);
EXPLAIN EXTENDED SELECT COUNT(a) FROM t1 USE KEY(a); EXPLAIN EXTENDED SELECT COUNT(a) FROM t1 USE KEY(a);
ERROR 42000: Key 'a' doesn't exist in table 't1' ERROR 42000: Key 'a' doesn't exist in table 't1'
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1(a LONGTEXT);
INSERT INTO t1 VALUES (repeat('a',@@global.max_allowed_packet));
INSERT INTO t1 VALUES (repeat('b',@@global.max_allowed_packet));
EXPLAIN SELECT DISTINCT 1 FROM t1,
(SELECT DISTINCTROW a AS away FROM t1 GROUP BY a WITH ROLLUP) as d1
WHERE t1.a = d1.a;
ERROR 42S22: Unknown column 'd1.a' in 'where clause'
DROP TABLE t1;
# #
# Bug#37870: Usage of uninitialized value caused failed assertion. # Bug#37870: Usage of uninitialized value caused failed assertion.
# #

View File

@ -65,8 +65,8 @@ NULL
50000 50000
NULL NULL
Warnings: Warnings:
Error 1259 ZLIB: Input data corrupted Warning 1259 ZLIB: Input data corrupted
Error 1256 Uncompressed data size too large; the maximum size is 1048576 (probably, length of uncompressed data was corrupted) Warning 1256 Uncompressed data size too large; the maximum size is 1048576 (probably, length of uncompressed data was corrupted)
drop table t1; drop table t1;
set @@global.max_allowed_packet=1048576*100; set @@global.max_allowed_packet=1048576*100;
select compress(repeat('aaaaaaaaaa', IF(XXX, 10, 10000000))) is null; select compress(repeat('aaaaaaaaaa', IF(XXX, 10, 10000000))) is null;
@ -96,12 +96,12 @@ explain select * from t1 where uncompress(a) is null;
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 system NULL NULL NULL NULL 1 1 SIMPLE t1 system NULL NULL NULL NULL 1
Warnings: Warnings:
Error 1259 ZLIB: Input data corrupted Warning 1259 ZLIB: Input data corrupted
select * from t1 where uncompress(a) is null; select * from t1 where uncompress(a) is null;
a a
foo foo
Warnings: Warnings:
Error 1259 ZLIB: Input data corrupted Warning 1259 ZLIB: Input data corrupted
explain select *, uncompress(a) from t1; explain select *, uncompress(a) from t1;
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 system NULL NULL NULL NULL 1 1 SIMPLE t1 system NULL NULL NULL NULL 1
@ -109,13 +109,13 @@ select *, uncompress(a) from t1;
a uncompress(a) a uncompress(a)
foo NULL foo NULL
Warnings: Warnings:
Error 1259 ZLIB: Input data corrupted Warning 1259 ZLIB: Input data corrupted
select *, uncompress(a), uncompress(a) is null from t1; select *, uncompress(a), uncompress(a) is null from t1;
a uncompress(a) uncompress(a) is null a uncompress(a) uncompress(a) is null
foo NULL 1 foo NULL 1
Warnings: Warnings:
Error 1259 ZLIB: Input data corrupted Warning 1259 ZLIB: Input data corrupted
Error 1259 ZLIB: Input data corrupted Warning 1259 ZLIB: Input data corrupted
drop table t1; drop table t1;
CREATE TABLE t1 (c1 INT); CREATE TABLE t1 (c1 INT);
INSERT INTO t1 VALUES (1), (1111), (11111); INSERT INTO t1 VALUES (1), (1111), (11111);

View File

@ -124,7 +124,7 @@ select des_encrypt("hello",10);
des_encrypt("hello",10) des_encrypt("hello",10)
NULL NULL
Warnings: Warnings:
Error 1108 Incorrect parameters to procedure 'des_encrypt' Warning 1108 Incorrect parameters to procedure 'des_encrypt'
select des_encrypt(NULL); select des_encrypt(NULL);
des_encrypt(NULL) des_encrypt(NULL)
NULL NULL
@ -138,12 +138,12 @@ select des_encrypt(10, NULL);
des_encrypt(10, NULL) des_encrypt(10, NULL)
NULL NULL
Warnings: Warnings:
Error 1108 Incorrect parameters to procedure 'des_encrypt' Warning 1108 Incorrect parameters to procedure 'des_encrypt'
select des_encrypt("hello", NULL); select des_encrypt("hello", NULL);
des_encrypt("hello", NULL) des_encrypt("hello", NULL)
NULL NULL
Warnings: Warnings:
Error 1108 Incorrect parameters to procedure 'des_encrypt' Warning 1108 Incorrect parameters to procedure 'des_encrypt'
select des_decrypt("hello",10); select des_decrypt("hello",10);
des_decrypt("hello",10) des_decrypt("hello",10)
hello hello
@ -177,7 +177,7 @@ select hex(des_decrypt(des_encrypt("hello","hidden")));
hex(des_decrypt(des_encrypt("hello","hidden"))) hex(des_decrypt(des_encrypt("hello","hidden")))
NULL NULL
Warnings: Warnings:
Error 1108 Incorrect parameters to procedure 'des_decrypt' Warning 1108 Incorrect parameters to procedure 'des_decrypt'
explain extended select des_decrypt(des_encrypt("hello",4),'password2'), des_decrypt(des_encrypt("hello","hidden")); explain extended select des_decrypt(des_encrypt("hello",4),'password2'), des_decrypt(des_encrypt("hello","hidden"));
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 No tables used 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used

View File

@ -2,83 +2,83 @@ select des_encrypt("test", 'akeystr');
des_encrypt("test", 'akeystr') des_encrypt("test", 'akeystr')
NULL NULL
Warnings: Warnings:
Error 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working Warning 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
select des_encrypt("test", 1); select des_encrypt("test", 1);
des_encrypt("test", 1) des_encrypt("test", 1)
NULL NULL
Warnings: Warnings:
Error 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working Warning 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
select des_encrypt("test", 9); select des_encrypt("test", 9);
des_encrypt("test", 9) des_encrypt("test", 9)
NULL NULL
Warnings: Warnings:
Error 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working Warning 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
select des_encrypt("test", 100); select des_encrypt("test", 100);
des_encrypt("test", 100) des_encrypt("test", 100)
NULL NULL
Warnings: Warnings:
Error 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working Warning 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
select des_encrypt("test", NULL); select des_encrypt("test", NULL);
des_encrypt("test", NULL) des_encrypt("test", NULL)
NULL NULL
Warnings: Warnings:
Error 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working Warning 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
select des_encrypt(NULL, NULL); select des_encrypt(NULL, NULL);
des_encrypt(NULL, NULL) des_encrypt(NULL, NULL)
NULL NULL
Warnings: Warnings:
Error 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working Warning 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
select des_decrypt("test", 'anotherkeystr'); select des_decrypt("test", 'anotherkeystr');
des_decrypt("test", 'anotherkeystr') des_decrypt("test", 'anotherkeystr')
NULL NULL
Warnings: Warnings:
Error 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working Warning 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
select des_decrypt(1, 1); select des_decrypt(1, 1);
des_decrypt(1, 1) des_decrypt(1, 1)
NULL NULL
Warnings: Warnings:
Error 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working Warning 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
select des_decrypt(des_encrypt("test", 'thekey')); select des_decrypt(des_encrypt("test", 'thekey'));
des_decrypt(des_encrypt("test", 'thekey')) des_decrypt(des_encrypt("test", 'thekey'))
NULL NULL
Warnings: Warnings:
Error 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working Warning 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
select hex(des_encrypt("hello")),des_decrypt(des_encrypt("hello")); select hex(des_encrypt("hello")),des_decrypt(des_encrypt("hello"));
hex(des_encrypt("hello")) des_decrypt(des_encrypt("hello")) hex(des_encrypt("hello")) des_decrypt(des_encrypt("hello"))
NULL NULL NULL NULL
Warnings: Warnings:
Error 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working Warning 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
Error 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working Warning 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
select des_decrypt(des_encrypt("hello",4)); select des_decrypt(des_encrypt("hello",4));
des_decrypt(des_encrypt("hello",4)) des_decrypt(des_encrypt("hello",4))
NULL NULL
Warnings: Warnings:
Error 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working Warning 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
select des_decrypt(des_encrypt("hello",'test'),'test'); select des_decrypt(des_encrypt("hello",'test'),'test');
des_decrypt(des_encrypt("hello",'test'),'test') des_decrypt(des_encrypt("hello",'test'),'test')
NULL NULL
Warnings: Warnings:
Error 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working Warning 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
select hex(des_encrypt("hello")),hex(des_encrypt("hello",5)),hex(des_encrypt("hello",'default_password')); select hex(des_encrypt("hello")),hex(des_encrypt("hello",5)),hex(des_encrypt("hello",'default_password'));
hex(des_encrypt("hello")) hex(des_encrypt("hello",5)) hex(des_encrypt("hello",'default_password')) hex(des_encrypt("hello")) hex(des_encrypt("hello",5)) hex(des_encrypt("hello",'default_password'))
NULL NULL NULL NULL NULL NULL
Warnings: Warnings:
Error 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working Warning 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
Error 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working Warning 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
Error 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working Warning 1289 The 'des_encrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
select des_decrypt(des_encrypt("hello"),'default_password'); select des_decrypt(des_encrypt("hello"),'default_password');
des_decrypt(des_encrypt("hello"),'default_password') des_decrypt(des_encrypt("hello"),'default_password')
NULL NULL
Warnings: Warnings:
Error 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working Warning 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
select des_decrypt(des_encrypt("hello",4),'password4'); select des_decrypt(des_encrypt("hello",4),'password4');
des_decrypt(des_encrypt("hello",4),'password4') des_decrypt(des_encrypt("hello",4),'password4')
NULL NULL
Warnings: Warnings:
Error 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working Warning 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
SET @a=des_decrypt(des_encrypt("hello")); SET @a=des_decrypt(des_encrypt("hello"));
Warnings: Warnings:
Error 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working Warning 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
flush des_key_file; flush des_key_file;
select @a = des_decrypt(des_encrypt("hello")); select @a = des_decrypt(des_encrypt("hello"));
@a = des_decrypt(des_encrypt("hello")) @a = des_decrypt(des_encrypt("hello"))
@ -90,9 +90,9 @@ select hex(des_decrypt(des_encrypt("hello",4),'password2'));
hex(des_decrypt(des_encrypt("hello",4),'password2')) hex(des_decrypt(des_encrypt("hello",4),'password2'))
NULL NULL
Warnings: Warnings:
Error 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working Warning 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working
select hex(des_decrypt(des_encrypt("hello","hidden"))); select hex(des_decrypt(des_encrypt("hello","hidden")));
hex(des_decrypt(des_encrypt("hello","hidden"))) hex(des_decrypt(des_encrypt("hello","hidden")))
NULL NULL
Warnings: Warnings:
Error 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working Warning 1289 The 'des_decrypt' feature is disabled; you need MySQL built with '--with-openssl' to have it working

View File

@ -153,10 +153,10 @@ grp group_concat(c)
4 4
5 NULL 5 NULL
Warnings: Warnings:
Warning 1260 1 line(s) were cut by GROUP_CONCAT() Warning 1260 Row 4 was cut by GROUP_CONCAT()
show warnings; show warnings;
Level Code Message Level Code Message
Warning 1260 1 line(s) were cut by GROUP_CONCAT() Warning 1260 Row 4 was cut by GROUP_CONCAT()
set group_concat_max_len = 1024; set group_concat_max_len = 1024;
select group_concat(sum(c)) from t1 group by grp; select group_concat(sum(c)) from t1 group by grp;
ERROR HY000: Invalid use of group function ERROR HY000: Invalid use of group function
@ -380,25 +380,29 @@ group_concat(b)
bb,c bb,c
BB,C BB,C
Warnings: Warnings:
Warning 1260 2 line(s) were cut by GROUP_CONCAT() Warning 1260 Row 2 was cut by GROUP_CONCAT()
Warning 1260 Row 4 was cut by GROUP_CONCAT()
select group_concat(distinct b) from t1 group by a; select group_concat(distinct b) from t1 group by a;
group_concat(distinct b) group_concat(distinct b)
bb,c bb,c
BB,C BB,C
Warnings: Warnings:
Warning 1260 2 line(s) were cut by GROUP_CONCAT() Warning 1260 Row 2 was cut by GROUP_CONCAT()
Warning 1260 Row 4 was cut by GROUP_CONCAT()
select group_concat(b order by b) from t1 group by a; select group_concat(b order by b) from t1 group by a;
group_concat(b order by b) group_concat(b order by b)
a,bb a,bb
A,BB A,BB
Warnings: Warnings:
Warning 1260 2 line(s) were cut by GROUP_CONCAT() Warning 1260 Row 3 was cut by GROUP_CONCAT()
Warning 1260 Row 6 was cut by GROUP_CONCAT()
select group_concat(distinct b order by b) from t1 group by a; select group_concat(distinct b order by b) from t1 group by a;
group_concat(distinct b order by b) group_concat(distinct b order by b)
a,bb a,bb
A,BB A,BB
Warnings: Warnings:
Warning 1260 2 line(s) were cut by GROUP_CONCAT() Warning 1260 Row 3 was cut by GROUP_CONCAT()
Warning 1260 Row 6 was cut by GROUP_CONCAT()
insert into t1 values (1, concat(repeat('1', 300), '2')), insert into t1 values (1, concat(repeat('1', 300), '2')),
(1, concat(repeat('1', 300), '2')), (1, concat(repeat('0', 300), '1')), (1, concat(repeat('1', 300), '2')), (1, concat(repeat('0', 300), '1')),
(2, concat(repeat('1', 300), '2')), (2, concat(repeat('1', 300), '2')), (2, concat(repeat('1', 300), '2')), (2, concat(repeat('1', 300), '2')),
@ -426,25 +430,29 @@ group_concat(b)
bb,ccc,a,bb,ccc,1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112,1111111111111111111111111111111111111111111111111111111111111111111111111111111111 bb,ccc,a,bb,ccc,1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112,1111111111111111111111111111111111111111111111111111111111111111111111111111111111
BB,CCC,A,BB,CCC,1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112,1111111111111111111111111111111111111111111111111111111111111111111111111111111111 BB,CCC,A,BB,CCC,1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112,1111111111111111111111111111111111111111111111111111111111111111111111111111111111
Warnings: Warnings:
Warning 1260 2 line(s) were cut by GROUP_CONCAT() Warning 1260 Row 7 was cut by GROUP_CONCAT()
Warning 1260 Row 14 was cut by GROUP_CONCAT()
select group_concat(distinct b) from t1 group by a; select group_concat(distinct b) from t1 group by a;
group_concat(distinct b) group_concat(distinct b)
bb,ccc,a,1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 bb,ccc,a,1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
BB,CCC,A,1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 BB,CCC,A,1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Warnings: Warnings:
Warning 1260 2 line(s) were cut by GROUP_CONCAT() Warning 1260 Row 5 was cut by GROUP_CONCAT()
Warning 1260 Row 10 was cut by GROUP_CONCAT()
select group_concat(b order by b) from t1 group by a; select group_concat(b order by b) from t1 group by a;
group_concat(b order by b) group_concat(b order by b)
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001,11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001,11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001,11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001,11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
Warnings: Warnings:
Warning 1260 2 line(s) were cut by GROUP_CONCAT() Warning 1260 Row 2 was cut by GROUP_CONCAT()
Warning 1260 Row 4 was cut by GROUP_CONCAT()
select group_concat(distinct b order by b) from t1 group by a; select group_concat(distinct b order by b) from t1 group by a;
group_concat(distinct b order by b) group_concat(distinct b order by b)
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001,11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001,11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001,11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001,11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
Warnings: Warnings:
Warning 1260 2 line(s) were cut by GROUP_CONCAT() Warning 1260 Row 2 was cut by GROUP_CONCAT()
Warning 1260 Row 4 was cut by GROUP_CONCAT()
drop table t1; drop table t1;
create table t1 (a varchar(255) character set cp1250 collate cp1250_general_ci, create table t1 (a varchar(255) character set cp1250 collate cp1250_general_ci,
b varchar(255) character set koi8r); b varchar(255) character set koi8r);
@ -751,22 +759,22 @@ SELECT GROUP_CONCAT( a ) FROM t1;
GROUP_CONCAT( a ) GROUP_CONCAT( a )
aaaaaaaaaa,bbbbbbbbb aaaaaaaaaa,bbbbbbbbb
Warnings: Warnings:
Warning 1260 1 line(s) were cut by GROUP_CONCAT() Warning 1260 Row 2 was cut by GROUP_CONCAT()
SELECT GROUP_CONCAT( DISTINCT a ) FROM t1; SELECT GROUP_CONCAT( DISTINCT a ) FROM t1;
GROUP_CONCAT( DISTINCT a ) GROUP_CONCAT( DISTINCT a )
aaaaaaaaaa,bbbbbbbbb aaaaaaaaaa,bbbbbbbbb
Warnings: Warnings:
Warning 1260 1 line(s) were cut by GROUP_CONCAT() Warning 1260 Row 2 was cut by GROUP_CONCAT()
SELECT GROUP_CONCAT( a ORDER BY b ) FROM t1; SELECT GROUP_CONCAT( a ORDER BY b ) FROM t1;
GROUP_CONCAT( a ORDER BY b ) GROUP_CONCAT( a ORDER BY b )
aaaaaaaaaa,bbbbbbbbb aaaaaaaaaa,bbbbbbbbb
Warnings: Warnings:
Warning 1260 1 line(s) were cut by GROUP_CONCAT() Warning 1260 Row 2 was cut by GROUP_CONCAT()
SELECT GROUP_CONCAT( DISTINCT a ORDER BY b ) FROM t1; SELECT GROUP_CONCAT( DISTINCT a ORDER BY b ) FROM t1;
GROUP_CONCAT( DISTINCT a ORDER BY b ) GROUP_CONCAT( DISTINCT a ORDER BY b )
aaaaaaaaaa,bbbbbbbbb aaaaaaaaaa,bbbbbbbbb
Warnings: Warnings:
Warning 1260 1 line(s) were cut by GROUP_CONCAT() Warning 1260 Row 2 was cut by GROUP_CONCAT()
SET group_concat_max_len = DEFAULT; SET group_concat_max_len = DEFAULT;
DROP TABLE t1; DROP TABLE t1;
SET group_concat_max_len= 65535; SET group_concat_max_len= 65535;
@ -979,3 +987,31 @@ GROUP BY t1.a
1 1
DROP TABLE t1, t2; DROP TABLE t1, t2;
End of 5.0 tests End of 5.0 tests
DROP TABLE IF EXISTS t1, t2;
CREATE TABLE t1 (a VARCHAR(6), b INT);
CREATE TABLE t2 (a VARCHAR(6), b INT);
INSERT INTO t1 VALUES ('111111', 1);
INSERT INTO t1 VALUES ('222222', 2);
INSERT INTO t1 VALUES ('333333', 3);
INSERT INTO t1 VALUES ('444444', 4);
INSERT INTO t1 VALUES ('555555', 5);
SET group_concat_max_len = 5;
SET @old_sql_mode = @@sql_mode, @@sql_mode = 'traditional';
SELECT GROUP_CONCAT(a), b FROM t1 GROUP BY b LIMIT 3;
GROUP_CONCAT(a) b
11111 1
22222 2
33333 3
Warnings:
Warning 1260 Row 1 was cut by GROUP_CONCAT()
Warning 1260 Row 2 was cut by GROUP_CONCAT()
Warning 1260 Row 3 was cut by GROUP_CONCAT()
INSERT INTO t2 SELECT GROUP_CONCAT(a), b FROM t1 GROUP BY b;
ERROR HY000: Row 1 was cut by GROUP_CONCAT()
UPDATE t1 SET a = '11111' WHERE b = 1;
UPDATE t1 SET a = '22222' WHERE b = 2;
INSERT INTO t2 SELECT GROUP_CONCAT(a), b FROM t1 GROUP BY b;
ERROR HY000: Row 3 was cut by GROUP_CONCAT()
SET group_concat_max_len = DEFAULT;
SET @@sql_mode = @old_sql_mode;
DROP TABLE t1, t2;

View File

@ -225,27 +225,27 @@ select ln(-1);
ln(-1) ln(-1)
NULL NULL
Warnings: Warnings:
Error 1365 Division by 0 Warning 1365 Division by 0
select log10(-1); select log10(-1);
log10(-1) log10(-1)
NULL NULL
Warnings: Warnings:
Error 1365 Division by 0 Warning 1365 Division by 0
select log2(-1); select log2(-1);
log2(-1) log2(-1)
NULL NULL
Warnings: Warnings:
Error 1365 Division by 0 Warning 1365 Division by 0
select log(2,-1); select log(2,-1);
log(2,-1) log(2,-1)
NULL NULL
Warnings: Warnings:
Error 1365 Division by 0 Warning 1365 Division by 0
select log(-2,1); select log(-2,1);
log(-2,1) log(-2,1)
NULL NULL
Warnings: Warnings:
Error 1365 Division by 0 Warning 1365 Division by 0
set sql_mode=''; set sql_mode='';
select round(111,-10); select round(111,-10);
round(111,-10) round(111,-10)

View File

@ -1433,7 +1433,7 @@ select benchmark(-1, 1);
benchmark(-1, 1) benchmark(-1, 1)
NULL NULL
Warnings: Warnings:
Error 1411 Incorrect count value: '-1' for function benchmark Warning 1411 Incorrect count value: '-1' for function benchmark
set @password="password"; set @password="password";
set @my_data="clear text to encode"; set @my_data="clear text to encode";
select md5(encode(@my_data, "password")); select md5(encode(@my_data, "password"));
@ -1533,7 +1533,7 @@ select locate('lo','hello',-18446744073709551615);
locate('lo','hello',-18446744073709551615) locate('lo','hello',-18446744073709551615)
0 0
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select locate('lo','hello',18446744073709551615); select locate('lo','hello',18446744073709551615);
locate('lo','hello',18446744073709551615) locate('lo','hello',18446744073709551615)
0 0
@ -1541,22 +1541,22 @@ select locate('lo','hello',-18446744073709551616);
locate('lo','hello',-18446744073709551616) locate('lo','hello',-18446744073709551616)
0 0
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select locate('lo','hello',18446744073709551616); select locate('lo','hello',18446744073709551616);
locate('lo','hello',18446744073709551616) locate('lo','hello',18446744073709551616)
0 0
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select locate('lo','hello',-18446744073709551617); select locate('lo','hello',-18446744073709551617);
locate('lo','hello',-18446744073709551617) locate('lo','hello',-18446744073709551617)
0 0
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select locate('lo','hello',18446744073709551617); select locate('lo','hello',18446744073709551617);
locate('lo','hello',18446744073709551617) locate('lo','hello',18446744073709551617)
0 0
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select left('hello', 10); select left('hello', 10);
left('hello', 10) left('hello', 10)
hello hello
@ -1588,8 +1588,8 @@ select left('hello', -18446744073709551615);
left('hello', -18446744073709551615) left('hello', -18446744073709551615)
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select left('hello', 18446744073709551615); select left('hello', 18446744073709551615);
left('hello', 18446744073709551615) left('hello', 18446744073709551615)
hello hello
@ -1597,26 +1597,26 @@ select left('hello', -18446744073709551616);
left('hello', -18446744073709551616) left('hello', -18446744073709551616)
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select left('hello', 18446744073709551616); select left('hello', 18446744073709551616);
left('hello', 18446744073709551616) left('hello', 18446744073709551616)
hello hello
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select left('hello', -18446744073709551617); select left('hello', -18446744073709551617);
left('hello', -18446744073709551617) left('hello', -18446744073709551617)
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select left('hello', 18446744073709551617); select left('hello', 18446744073709551617);
left('hello', 18446744073709551617) left('hello', 18446744073709551617)
hello hello
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select right('hello', 10); select right('hello', 10);
right('hello', 10) right('hello', 10)
hello hello
@ -1648,8 +1648,8 @@ select right('hello', -18446744073709551615);
right('hello', -18446744073709551615) right('hello', -18446744073709551615)
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select right('hello', 18446744073709551615); select right('hello', 18446744073709551615);
right('hello', 18446744073709551615) right('hello', 18446744073709551615)
hello hello
@ -1657,26 +1657,26 @@ select right('hello', -18446744073709551616);
right('hello', -18446744073709551616) right('hello', -18446744073709551616)
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select right('hello', 18446744073709551616); select right('hello', 18446744073709551616);
right('hello', 18446744073709551616) right('hello', 18446744073709551616)
hello hello
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select right('hello', -18446744073709551617); select right('hello', -18446744073709551617);
right('hello', -18446744073709551617) right('hello', -18446744073709551617)
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select right('hello', 18446744073709551617); select right('hello', 18446744073709551617);
right('hello', 18446744073709551617) right('hello', 18446744073709551617)
hello hello
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select substring('hello', 2, -1); select substring('hello', 2, -1);
substring('hello', 2, -1) substring('hello', 2, -1)
@ -1708,8 +1708,8 @@ select substring('hello', -18446744073709551615, 1);
substring('hello', -18446744073709551615, 1) substring('hello', -18446744073709551615, 1)
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select substring('hello', 18446744073709551615, 1); select substring('hello', 18446744073709551615, 1);
substring('hello', 18446744073709551615, 1) substring('hello', 18446744073709551615, 1)
@ -1717,26 +1717,26 @@ select substring('hello', -18446744073709551616, 1);
substring('hello', -18446744073709551616, 1) substring('hello', -18446744073709551616, 1)
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select substring('hello', 18446744073709551616, 1); select substring('hello', 18446744073709551616, 1);
substring('hello', 18446744073709551616, 1) substring('hello', 18446744073709551616, 1)
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select substring('hello', -18446744073709551617, 1); select substring('hello', -18446744073709551617, 1);
substring('hello', -18446744073709551617, 1) substring('hello', -18446744073709551617, 1)
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select substring('hello', 18446744073709551617, 1); select substring('hello', 18446744073709551617, 1);
substring('hello', 18446744073709551617, 1) substring('hello', 18446744073709551617, 1)
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select substring('hello', 1, -1); select substring('hello', 1, -1);
substring('hello', 1, -1) substring('hello', 1, -1)
@ -1762,8 +1762,8 @@ select substring('hello', 1, -18446744073709551615);
substring('hello', 1, -18446744073709551615) substring('hello', 1, -18446744073709551615)
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select substring('hello', 1, 18446744073709551615); select substring('hello', 1, 18446744073709551615);
substring('hello', 1, 18446744073709551615) substring('hello', 1, 18446744073709551615)
hello hello
@ -1771,26 +1771,26 @@ select substring('hello', 1, -18446744073709551616);
substring('hello', 1, -18446744073709551616) substring('hello', 1, -18446744073709551616)
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select substring('hello', 1, 18446744073709551616); select substring('hello', 1, 18446744073709551616);
substring('hello', 1, 18446744073709551616) substring('hello', 1, 18446744073709551616)
hello hello
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select substring('hello', 1, -18446744073709551617); select substring('hello', 1, -18446744073709551617);
substring('hello', 1, -18446744073709551617) substring('hello', 1, -18446744073709551617)
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select substring('hello', 1, 18446744073709551617); select substring('hello', 1, 18446744073709551617);
substring('hello', 1, 18446744073709551617) substring('hello', 1, 18446744073709551617)
hello hello
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select substring('hello', -1, -1); select substring('hello', -1, -1);
substring('hello', -1, -1) substring('hello', -1, -1)
@ -1816,10 +1816,10 @@ select substring('hello', -18446744073709551615, -18446744073709551615);
substring('hello', -18446744073709551615, -18446744073709551615) substring('hello', -18446744073709551615, -18446744073709551615)
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select substring('hello', 18446744073709551615, 18446744073709551615); select substring('hello', 18446744073709551615, 18446744073709551615);
substring('hello', 18446744073709551615, 18446744073709551615) substring('hello', 18446744073709551615, 18446744073709551615)
@ -1827,34 +1827,34 @@ select substring('hello', -18446744073709551616, -18446744073709551616);
substring('hello', -18446744073709551616, -18446744073709551616) substring('hello', -18446744073709551616, -18446744073709551616)
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select substring('hello', 18446744073709551616, 18446744073709551616); select substring('hello', 18446744073709551616, 18446744073709551616);
substring('hello', 18446744073709551616, 18446744073709551616) substring('hello', 18446744073709551616, 18446744073709551616)
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select substring('hello', -18446744073709551617, -18446744073709551617); select substring('hello', -18446744073709551617, -18446744073709551617);
substring('hello', -18446744073709551617, -18446744073709551617) substring('hello', -18446744073709551617, -18446744073709551617)
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select substring('hello', 18446744073709551617, 18446744073709551617); select substring('hello', 18446744073709551617, 18446744073709551617);
substring('hello', 18446744073709551617, 18446744073709551617) substring('hello', 18446744073709551617, 18446744073709551617)
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select insert('hello', -1, 1, 'hi'); select insert('hello', -1, 1, 'hi');
insert('hello', -1, 1, 'hi') insert('hello', -1, 1, 'hi')
hello hello
@ -1880,7 +1880,7 @@ select insert('hello', -18446744073709551615, 1, 'hi');
insert('hello', -18446744073709551615, 1, 'hi') insert('hello', -18446744073709551615, 1, 'hi')
hello hello
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select insert('hello', 18446744073709551615, 1, 'hi'); select insert('hello', 18446744073709551615, 1, 'hi');
insert('hello', 18446744073709551615, 1, 'hi') insert('hello', 18446744073709551615, 1, 'hi')
hello hello
@ -1888,22 +1888,22 @@ select insert('hello', -18446744073709551616, 1, 'hi');
insert('hello', -18446744073709551616, 1, 'hi') insert('hello', -18446744073709551616, 1, 'hi')
hello hello
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select insert('hello', 18446744073709551616, 1, 'hi'); select insert('hello', 18446744073709551616, 1, 'hi');
insert('hello', 18446744073709551616, 1, 'hi') insert('hello', 18446744073709551616, 1, 'hi')
hello hello
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select insert('hello', -18446744073709551617, 1, 'hi'); select insert('hello', -18446744073709551617, 1, 'hi');
insert('hello', -18446744073709551617, 1, 'hi') insert('hello', -18446744073709551617, 1, 'hi')
hello hello
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select insert('hello', 18446744073709551617, 1, 'hi'); select insert('hello', 18446744073709551617, 1, 'hi');
insert('hello', 18446744073709551617, 1, 'hi') insert('hello', 18446744073709551617, 1, 'hi')
hello hello
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select insert('hello', 1, -1, 'hi'); select insert('hello', 1, -1, 'hi');
insert('hello', 1, -1, 'hi') insert('hello', 1, -1, 'hi')
hi hi
@ -1929,7 +1929,7 @@ select insert('hello', 1, -18446744073709551615, 'hi');
insert('hello', 1, -18446744073709551615, 'hi') insert('hello', 1, -18446744073709551615, 'hi')
hi hi
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select insert('hello', 1, 18446744073709551615, 'hi'); select insert('hello', 1, 18446744073709551615, 'hi');
insert('hello', 1, 18446744073709551615, 'hi') insert('hello', 1, 18446744073709551615, 'hi')
hi hi
@ -1937,22 +1937,22 @@ select insert('hello', 1, -18446744073709551616, 'hi');
insert('hello', 1, -18446744073709551616, 'hi') insert('hello', 1, -18446744073709551616, 'hi')
hi hi
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select insert('hello', 1, 18446744073709551616, 'hi'); select insert('hello', 1, 18446744073709551616, 'hi');
insert('hello', 1, 18446744073709551616, 'hi') insert('hello', 1, 18446744073709551616, 'hi')
hi hi
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select insert('hello', 1, -18446744073709551617, 'hi'); select insert('hello', 1, -18446744073709551617, 'hi');
insert('hello', 1, -18446744073709551617, 'hi') insert('hello', 1, -18446744073709551617, 'hi')
hi hi
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select insert('hello', 1, 18446744073709551617, 'hi'); select insert('hello', 1, 18446744073709551617, 'hi');
insert('hello', 1, 18446744073709551617, 'hi') insert('hello', 1, 18446744073709551617, 'hi')
hi hi
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select insert('hello', -1, -1, 'hi'); select insert('hello', -1, -1, 'hi');
insert('hello', -1, -1, 'hi') insert('hello', -1, -1, 'hi')
hello hello
@ -1978,8 +1978,8 @@ select insert('hello', -18446744073709551615, -18446744073709551615, 'hi');
insert('hello', -18446744073709551615, -18446744073709551615, 'hi') insert('hello', -18446744073709551615, -18446744073709551615, 'hi')
hello hello
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select insert('hello', 18446744073709551615, 18446744073709551615, 'hi'); select insert('hello', 18446744073709551615, 18446744073709551615, 'hi');
insert('hello', 18446744073709551615, 18446744073709551615, 'hi') insert('hello', 18446744073709551615, 18446744073709551615, 'hi')
hello hello
@ -1987,26 +1987,26 @@ select insert('hello', -18446744073709551616, -18446744073709551616, 'hi');
insert('hello', -18446744073709551616, -18446744073709551616, 'hi') insert('hello', -18446744073709551616, -18446744073709551616, 'hi')
hello hello
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select insert('hello', 18446744073709551616, 18446744073709551616, 'hi'); select insert('hello', 18446744073709551616, 18446744073709551616, 'hi');
insert('hello', 18446744073709551616, 18446744073709551616, 'hi') insert('hello', 18446744073709551616, 18446744073709551616, 'hi')
hello hello
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select insert('hello', -18446744073709551617, -18446744073709551617, 'hi'); select insert('hello', -18446744073709551617, -18446744073709551617, 'hi');
insert('hello', -18446744073709551617, -18446744073709551617, 'hi') insert('hello', -18446744073709551617, -18446744073709551617, 'hi')
hello hello
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select insert('hello', 18446744073709551617, 18446744073709551617, 'hi'); select insert('hello', 18446744073709551617, 18446744073709551617, 'hi');
insert('hello', 18446744073709551617, 18446744073709551617, 'hi') insert('hello', 18446744073709551617, 18446744073709551617, 'hi')
hello hello
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select repeat('hello', -1); select repeat('hello', -1);
repeat('hello', -1) repeat('hello', -1)
@ -2038,8 +2038,8 @@ select repeat('hello', -18446744073709551615);
repeat('hello', -18446744073709551615) repeat('hello', -18446744073709551615)
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select repeat('hello', 18446744073709551615); select repeat('hello', 18446744073709551615);
repeat('hello', 18446744073709551615) repeat('hello', 18446744073709551615)
NULL NULL
@ -2049,27 +2049,27 @@ select repeat('hello', -18446744073709551616);
repeat('hello', -18446744073709551616) repeat('hello', -18446744073709551616)
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select repeat('hello', 18446744073709551616); select repeat('hello', 18446744073709551616);
repeat('hello', 18446744073709551616) repeat('hello', 18446744073709551616)
NULL NULL
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Warning 1301 Result of repeat() was larger than max_allowed_packet (1048576) - truncated Warning 1301 Result of repeat() was larger than max_allowed_packet (1048576) - truncated
select repeat('hello', -18446744073709551617); select repeat('hello', -18446744073709551617);
repeat('hello', -18446744073709551617) repeat('hello', -18446744073709551617)
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select repeat('hello', 18446744073709551617); select repeat('hello', 18446744073709551617);
repeat('hello', 18446744073709551617) repeat('hello', 18446744073709551617)
NULL NULL
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Warning 1301 Result of repeat() was larger than max_allowed_packet (1048576) - truncated Warning 1301 Result of repeat() was larger than max_allowed_packet (1048576) - truncated
select space(-1); select space(-1);
space(-1) space(-1)
@ -2102,8 +2102,8 @@ select space(-18446744073709551615);
space(-18446744073709551615) space(-18446744073709551615)
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select space(18446744073709551615); select space(18446744073709551615);
space(18446744073709551615) space(18446744073709551615)
NULL NULL
@ -2113,27 +2113,27 @@ select space(-18446744073709551616);
space(-18446744073709551616) space(-18446744073709551616)
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select space(18446744073709551616); select space(18446744073709551616);
space(18446744073709551616) space(18446744073709551616)
NULL NULL
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Warning 1301 Result of repeat() was larger than max_allowed_packet (1048576) - truncated Warning 1301 Result of repeat() was larger than max_allowed_packet (1048576) - truncated
select space(-18446744073709551617); select space(-18446744073709551617);
space(-18446744073709551617) space(-18446744073709551617)
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select space(18446744073709551617); select space(18446744073709551617);
space(18446744073709551617) space(18446744073709551617)
NULL NULL
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Warning 1301 Result of repeat() was larger than max_allowed_packet (1048576) - truncated Warning 1301 Result of repeat() was larger than max_allowed_packet (1048576) - truncated
select rpad('hello', -1, '1'); select rpad('hello', -1, '1');
rpad('hello', -1, '1') rpad('hello', -1, '1')
@ -2166,8 +2166,8 @@ select rpad('hello', -18446744073709551615, '1');
rpad('hello', -18446744073709551615, '1') rpad('hello', -18446744073709551615, '1')
NULL NULL
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select rpad('hello', 18446744073709551615, '1'); select rpad('hello', 18446744073709551615, '1');
rpad('hello', 18446744073709551615, '1') rpad('hello', 18446744073709551615, '1')
NULL NULL
@ -2177,27 +2177,27 @@ select rpad('hello', -18446744073709551616, '1');
rpad('hello', -18446744073709551616, '1') rpad('hello', -18446744073709551616, '1')
NULL NULL
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select rpad('hello', 18446744073709551616, '1'); select rpad('hello', 18446744073709551616, '1');
rpad('hello', 18446744073709551616, '1') rpad('hello', 18446744073709551616, '1')
NULL NULL
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Warning 1301 Result of rpad() was larger than max_allowed_packet (1048576) - truncated Warning 1301 Result of rpad() was larger than max_allowed_packet (1048576) - truncated
select rpad('hello', -18446744073709551617, '1'); select rpad('hello', -18446744073709551617, '1');
rpad('hello', -18446744073709551617, '1') rpad('hello', -18446744073709551617, '1')
NULL NULL
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select rpad('hello', 18446744073709551617, '1'); select rpad('hello', 18446744073709551617, '1');
rpad('hello', 18446744073709551617, '1') rpad('hello', 18446744073709551617, '1')
NULL NULL
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Warning 1301 Result of rpad() was larger than max_allowed_packet (1048576) - truncated Warning 1301 Result of rpad() was larger than max_allowed_packet (1048576) - truncated
select lpad('hello', -1, '1'); select lpad('hello', -1, '1');
lpad('hello', -1, '1') lpad('hello', -1, '1')
@ -2230,8 +2230,8 @@ select lpad('hello', -18446744073709551615, '1');
lpad('hello', -18446744073709551615, '1') lpad('hello', -18446744073709551615, '1')
NULL NULL
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select lpad('hello', 18446744073709551615, '1'); select lpad('hello', 18446744073709551615, '1');
lpad('hello', 18446744073709551615, '1') lpad('hello', 18446744073709551615, '1')
NULL NULL
@ -2241,27 +2241,27 @@ select lpad('hello', -18446744073709551616, '1');
lpad('hello', -18446744073709551616, '1') lpad('hello', -18446744073709551616, '1')
NULL NULL
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select lpad('hello', 18446744073709551616, '1'); select lpad('hello', 18446744073709551616, '1');
lpad('hello', 18446744073709551616, '1') lpad('hello', 18446744073709551616, '1')
NULL NULL
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Warning 1301 Result of lpad() was larger than max_allowed_packet (1048576) - truncated Warning 1301 Result of lpad() was larger than max_allowed_packet (1048576) - truncated
select lpad('hello', -18446744073709551617, '1'); select lpad('hello', -18446744073709551617, '1');
lpad('hello', -18446744073709551617, '1') lpad('hello', -18446744073709551617, '1')
NULL NULL
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
select lpad('hello', 18446744073709551617, '1'); select lpad('hello', 18446744073709551617, '1');
lpad('hello', 18446744073709551617, '1') lpad('hello', 18446744073709551617, '1')
NULL NULL
Warnings: Warnings:
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Warning 1301 Result of lpad() was larger than max_allowed_packet (1048576) - truncated Warning 1301 Result of lpad() was larger than max_allowed_packet (1048576) - truncated
SET @orig_sql_mode = @@SQL_MODE; SET @orig_sql_mode = @@SQL_MODE;
SET SQL_MODE=traditional; SET SQL_MODE=traditional;
@ -2269,12 +2269,12 @@ SELECT CHAR(0xff,0x8f USING utf8);
CHAR(0xff,0x8f USING utf8) CHAR(0xff,0x8f USING utf8)
NULL NULL
Warnings: Warnings:
Error 1300 Invalid utf8 character string: 'FF8F' Warning 1300 Invalid utf8 character string: 'FF8F'
SELECT CHAR(0xff,0x8f USING utf8) IS NULL; SELECT CHAR(0xff,0x8f USING utf8) IS NULL;
CHAR(0xff,0x8f USING utf8) IS NULL CHAR(0xff,0x8f USING utf8) IS NULL
1 1
Warnings: Warnings:
Error 1300 Invalid utf8 character string: 'FF8F' Warning 1300 Invalid utf8 character string: 'FF8F'
SET SQL_MODE=@orig_sql_mode; SET SQL_MODE=@orig_sql_mode;
select substring('abc', cast(2 as unsigned int)); select substring('abc', cast(2 as unsigned int));
substring('abc', cast(2 as unsigned int)) substring('abc', cast(2 as unsigned int))
@ -2534,6 +2534,15 @@ SELECT LOAD_FILE(a) FROM t1;
LOAD_FILE(a) LOAD_FILE(a)
NULL NULL
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1 (f2 VARCHAR(20));
CREATE TABLE t2 (f2 VARCHAR(20));
INSERT INTO t1 VALUES ('MIN'),('MAX');
INSERT INTO t2 VALUES ('LOAD');
SELECT CONCAT_WS('_', (SELECT t2.f2 FROM t2), t1.f2) AS concat_name FROM t1;
concat_name
LOAD_MIN
LOAD_MAX
DROP TABLE t1, t2;
End of 5.0 tests End of 5.0 tests
drop table if exists t1; drop table if exists t1;
create table t1(f1 tinyint default null)engine=myisam; create table t1(f1 tinyint default null)engine=myisam;

View File

@ -2502,3 +2502,15 @@ a MAX(b)
2 1 2 1
DROP TABLE t; DROP TABLE t;
End of 5.0 tests End of 5.0 tests
#
# Bug #46607: Assertion failed: (cond_type == Item::FUNC_ITEM) results in
# server crash
#
CREATE TABLE t (a INT, b INT, INDEX (a,b));
INSERT INTO t VALUES (2,0), (2,0), (2,1), (2,1);
INSERT INTO t SELECT * FROM t;
SELECT a, MAX(b) FROM t WHERE b GROUP BY a;
a MAX(b)
2 1
DROP TABLE t;
End of 5.1 tests

View File

@ -841,6 +841,7 @@ SET max_heap_table_size = 16384;
SET @old_myisam_data_pointer_size = @@myisam_data_pointer_size; SET @old_myisam_data_pointer_size = @@myisam_data_pointer_size;
SET GLOBAL myisam_data_pointer_size = 2; SET GLOBAL myisam_data_pointer_size = 2;
INSERT INTO t1 VALUES (1), (2), (3), (4), (5); INSERT INTO t1 VALUES (1), (2), (3), (4), (5);
call mtr.add_suppression("mysqld: The table '.*#sql.*' is full");
INSERT IGNORE INTO t1 SELECT t1.a FROM t1,t1 t2,t1 t3,t1 t4,t1 t5,t1 t6,t1 t7; INSERT IGNORE INTO t1 SELECT t1.a FROM t1,t1 t2,t1 t3,t1 t4,t1 t5,t1 t6,t1 t7;
Got one of the listed errors Got one of the listed errors
SET GLOBAL myisam_data_pointer_size = @old_myisam_data_pointer_size; SET GLOBAL myisam_data_pointer_size = @old_myisam_data_pointer_size;

View File

@ -942,25 +942,29 @@ group_concat(t1.b,t2.c)
aaaaa aaaaa
bbbbb bbbbb
Warnings: Warnings:
Warning 1260 2 line(s) were cut by GROUP_CONCAT() Warning 1260 Row 1 was cut by GROUP_CONCAT()
Warning 1260 Row 2 was cut by GROUP_CONCAT()
select group_concat(t1.b,t2.c) from t1 inner join t2 using(a) group by t1.a; select group_concat(t1.b,t2.c) from t1 inner join t2 using(a) group by t1.a;
group_concat(t1.b,t2.c) group_concat(t1.b,t2.c)
aaaaa aaaaa
bbbbb bbbbb
Warnings: Warnings:
Warning 1260 2 line(s) were cut by GROUP_CONCAT() Warning 1260 Row 1 was cut by GROUP_CONCAT()
Warning 1260 Row 2 was cut by GROUP_CONCAT()
select group_concat(t1.b,t2.c) from t1 left join t2 using(a) group by a; select group_concat(t1.b,t2.c) from t1 left join t2 using(a) group by a;
group_concat(t1.b,t2.c) group_concat(t1.b,t2.c)
aaaaa aaaaa
bbbbb bbbbb
Warnings: Warnings:
Warning 1260 2 line(s) were cut by GROUP_CONCAT() Warning 1260 Row 1 was cut by GROUP_CONCAT()
Warning 1260 Row 2 was cut by GROUP_CONCAT()
select group_concat(t1.b,t2.c) from t1 inner join t2 using(a) group by a; select group_concat(t1.b,t2.c) from t1 inner join t2 using(a) group by a;
group_concat(t1.b,t2.c) group_concat(t1.b,t2.c)
aaaaa aaaaa
bbbbb bbbbb
Warnings: Warnings:
Warning 1260 2 line(s) were cut by GROUP_CONCAT() Warning 1260 Row 1 was cut by GROUP_CONCAT()
Warning 1260 Row 2 was cut by GROUP_CONCAT()
drop table t1, t2; drop table t1, t2;
set group_concat_max_len=default; set group_concat_max_len=default;
create table t1 (gid smallint(5) unsigned not null, x int(11) not null, y int(11) not null, art int(11) not null, primary key (gid,x,y)); create table t1 (gid smallint(5) unsigned not null, x int(11) not null, y int(11) not null, art int(11) not null, primary key (gid,x,y));

View File

@ -1,3 +1,5 @@
SET @odl_sync_frm = @@global.sync_frm;
SET @@global.sync_frm = OFF;
DROP TABLE IF EXISTS t1; DROP TABLE IF EXISTS t1;
CREATE TABLE t1( a INT, b INT ); CREATE TABLE t1( a INT, b INT );
INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3), (4, 4); INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3), (4, 4);
@ -17,3 +19,4 @@ ALTER TABLE t1 ADD COLUMN a INT;
# 2.2.1. normal mode # 2.2.1. normal mode
# 2.2.2. PS mode # 2.2.2. PS mode
DROP TABLE t1; DROP TABLE t1;
SET @@global.sync_frm = @odl_sync_frm;

View File

@ -1,3 +1,5 @@
SET @odl_sync_frm = @@global.sync_frm;
SET @@global.sync_frm = OFF;
DROP TABLE IF EXISTS t1,t2,t3; DROP TABLE IF EXISTS t1,t2,t3;
CREATE TABLE t1 ( CREATE TABLE t1 (
a int(11) unsigned default NULL, a int(11) unsigned default NULL,
@ -15,3 +17,4 @@ CREATE TABLE t3 SELECT * FROM t1;
# normal mode # normal mode
# PS mode # PS mode
DROP TABLE t1, t2, t3; DROP TABLE t1, t2, t3;
SET @@global.sync_frm = @odl_sync_frm;

View File

@ -0,0 +1,6 @@
drop table if exists t1;
create table t1 (id int) engine=InnoDB;
insert into t1 values (1);
create temporary table t2 engine=InnoDB select * from t1;
drop temporary table t2;
drop table t1;

View File

@ -1,4 +1,4 @@
call mtr.add_suppression("Cannot find or open table test/BUG29839 from .*"); call mtr.add_suppression("Cannot find or open table test/BUG29839 from");
DROP TABLE IF EXISTS t1,T1; DROP TABLE IF EXISTS t1,T1;
CREATE TABLE t1 (a INT); CREATE TABLE t1 (a INT);
SELECT * FROM T1; SELECT * FROM T1;

View File

@ -914,7 +914,7 @@ SELECT * FROM tm1;
ERROR HY000: Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist ERROR HY000: Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist
CHECK TABLE tm1; CHECK TABLE tm1;
Table Op Msg_type Msg_text Table Op Msg_type Msg_text
test.tm1 check Error Table 'test.t2' is differently defined or of non-MyISAM type or doesn't exist test.tm1 check Warning Table 'test.t2' is differently defined or of non-MyISAM type or doesn't exist
test.tm1 check Error Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist test.tm1 check Error Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist
test.tm1 check error Corrupt test.tm1 check error Corrupt
ALTER TABLE t2 MODIFY a INT; ALTER TABLE t2 MODIFY a INT;

View File

@ -2,7 +2,7 @@ drop table if exists t1,t2;
create table t1 (a int) engine=myisam; create table t1 (a int) engine=myisam;
drop table if exists t1; drop table if exists t1;
Warnings: Warnings:
Error 2 Can't find file: 't1' (errno: 2) Warning 2 Can't find file: 't1' (errno: 2)
create table t1 (a int) engine=myisam; create table t1 (a int) engine=myisam;
drop table t1; drop table t1;
Got one of the listed errors Got one of the listed errors

View File

@ -1,4 +1,4 @@
flush logs; RESET MASTER;
create table t3 (f text character set utf8); create table t3 (f text character set utf8);
create table t4 (f text character set cp932); create table t4 (f text character set cp932);
flush logs; flush logs;

View File

@ -215,7 +215,7 @@ COMMIT/*!*/;
# at # # at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0 #010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/; SET TIMESTAMP=1000000000/*!*/;
TRUNCATE TABLE t1 BEGIN
/*!*/; /*!*/;
# at # # at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0 #010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
@ -223,6 +223,22 @@ SET TIMESTAMP=1000000000/*!*/;
TRUNCATE TABLE t1 TRUNCATE TABLE t1
/*!*/; /*!*/;
# at # # at #
#010909 4:46:40 server id 1 end_log_pos # Xid = #
COMMIT/*!*/;
# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/;
TRUNCATE TABLE t1
/*!*/;
# at #
#010909 4:46:40 server id 1 end_log_pos # Xid = #
COMMIT/*!*/;
# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0 #010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/; SET TIMESTAMP=1000000000/*!*/;
BEGIN BEGIN
@ -331,9 +347,17 @@ COMMIT/*!*/;
# at # # at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0 #010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/; SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/;
TRUNCATE TABLE t1 TRUNCATE TABLE t1
/*!*/; /*!*/;
# at # # at #
#010909 4:46:40 server id 1 end_log_pos # Xid = #
COMMIT/*!*/;
# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0 #010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/; SET TIMESTAMP=1000000000/*!*/;
TRUNCATE TABLE t2 TRUNCATE TABLE t2
@ -449,9 +473,17 @@ ROLLBACK
# at # # at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0 #010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/; SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/;
TRUNCATE TABLE t1 TRUNCATE TABLE t1
/*!*/; /*!*/;
# at # # at #
#010909 4:46:40 server id 1 end_log_pos # Xid = #
COMMIT/*!*/;
# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0 #010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/; SET TIMESTAMP=1000000000/*!*/;
TRUNCATE TABLE t2 TRUNCATE TABLE t2

View File

@ -314,21 +314,10 @@ here is the sourced script
1 = outer loop variable before dec 1 = outer loop variable before dec
0 = outer loop variable after dec 0 = outer loop variable after dec
outer=2 ifval=0
2 = outer loop variable after while outer=1 ifval=1
here is the sourced script here is the sourced script
2 = outer loop variable before dec
1 = outer loop variable after dec
1 = outer loop variable after while
here is the sourced script
1 = outer loop variable before dec
0 = outer loop variable after dec
In loop In loop
here is the sourced script here is the sourced script
@ -538,6 +527,10 @@ mysqltest: At line 1: Missing required argument 'filename' to command 'write_fil
mysqltest: At line 1: End of file encountered before 'EOF' delimiter was found mysqltest: At line 1: End of file encountered before 'EOF' delimiter was found
Content for test_file1 Content for test_file1
mysqltest: At line 1: File already exist: 'MYSQLTEST_VARDIR/tmp/test_file1.tmp' mysqltest: At line 1: File already exist: 'MYSQLTEST_VARDIR/tmp/test_file1.tmp'
These lines should be repeated,
if things work as expected
These lines should be repeated,
if things work as expected
Some data Some data
for cat_file command for cat_file command
of mysqltest of mysqltest

View File

@ -1226,7 +1226,6 @@ COMMIT;
END| END|
CALL test.p1(12); CALL test.p1(12);
Warnings: Warnings:
Note 1051 Unknown table 't1'
Warning 1196 Some non-transactional changed tables couldn't be rolled back Warning 1196 Some non-transactional changed tables couldn't be rolled back
CALL test.p1(13); CALL test.p1(13);
Warnings: Warnings:

View File

@ -1,3 +1,4 @@
call mtr.add_suppression("Failed to write to mysql.general_log");
drop table if exists t1; drop table if exists t1;
create table t1 (a int) create table t1 (a int)
engine = csv engine = csv

View File

@ -1,4 +1,18 @@
drop table if exists t1; drop table if exists t1;
create table t1 (a int not null,
b datetime not null,
primary key (a,b))
engine=innodb
partition by range (to_days(b))
subpartition by hash (a)
subpartitions 2
( partition p0 values less than (to_days('2009-01-01')),
partition p1 values less than (to_days('2009-02-01')),
partition p2 values less than (to_days('2009-03-01')),
partition p3 values less than maxvalue);
alter table t1 reorganize partition p1,p2 into
( partition p2 values less than (to_days('2009-03-01')));
drop table t1;
CREATE TABLE t1 (id INT PRIMARY KEY, data INT) ENGINE = InnoDB CREATE TABLE t1 (id INT PRIMARY KEY, data INT) ENGINE = InnoDB
PARTITION BY RANGE(id) ( PARTITION BY RANGE(id) (
PARTITION p0 VALUES LESS THAN (5), PARTITION p0 VALUES LESS THAN (5),
@ -250,3 +264,7 @@ SUBPARTITION BY KEY (char_column)
SUBPARTITIONS 2 SUBPARTITIONS 2
(PARTITION p1 VALUES LESS THAN (5) ENGINE = MyISAM) */ (PARTITION p1 VALUES LESS THAN (5) ENGINE = MyISAM) */
drop table t1; drop table t1;
CREATE TABLE t1 (a INT) ENGINE=InnoDB
PARTITION BY list(a) (PARTITION p1 VALUES IN (1));
CREATE INDEX i1 ON t1 (a);
DROP TABLE t1;

File diff suppressed because it is too large Load Diff

View File

@ -745,7 +745,7 @@ a
EXPLAIN PARTITIONS SELECT * FROM t1 EXPLAIN PARTITIONS SELECT * FROM t1
WHERE a >= '2004-07-01' AND a <= '2004-09-30'; WHERE a >= '2004-07-01' AND a <= '2004-09-30';
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 p407,p408,p409 ALL NULL NULL NULL NULL 9 Using where 1 SIMPLE t1 p3xx,p407,p408,p409 ALL NULL NULL NULL NULL 18 Using where
SELECT * from t1 SELECT * from t1
WHERE (a >= '2004-07-01' AND a <= '2004-09-30') OR WHERE (a >= '2004-07-01' AND a <= '2004-09-30') OR
(a >= '2005-07-01' AND a <= '2005-09-30'); (a >= '2005-07-01' AND a <= '2005-09-30');
@ -772,7 +772,7 @@ EXPLAIN PARTITIONS SELECT * from t1
WHERE (a >= '2004-07-01' AND a <= '2004-09-30') OR WHERE (a >= '2004-07-01' AND a <= '2004-09-30') OR
(a >= '2005-07-01' AND a <= '2005-09-30'); (a >= '2005-07-01' AND a <= '2005-09-30');
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 p407,p408,p409,p507,p508,p509 ALL NULL NULL NULL NULL 18 Using where 1 SIMPLE t1 p3xx,p407,p408,p409,p507,p508,p509 ALL NULL NULL NULL NULL 27 Using where
DROP TABLE t1; DROP TABLE t1;
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);

View File

@ -2748,17 +2748,21 @@ Warnings:
Note 1051 Unknown table 't1' Note 1051 Unknown table 't1'
call proc_1(); call proc_1();
Level Code Message Level Code Message
Note 1051 Unknown table 't1'
drop table if exists t2; drop table if exists t2;
Warnings: Warnings:
Note 1051 Unknown table 't2' Note 1051 Unknown table 't2'
call proc_1(); call proc_1();
Level Code Message Level Code Message
Note 1051 Unknown table 't2'
drop table if exists t1, t2; drop table if exists t1, t2;
Warnings: Warnings:
Note 1051 Unknown table 't1' Note 1051 Unknown table 't1'
Note 1051 Unknown table 't2' Note 1051 Unknown table 't2'
call proc_1(); call proc_1();
Level Code Message Level Code Message
Note 1051 Unknown table 't1'
Note 1051 Unknown table 't2'
drop procedure proc_1; drop procedure proc_1;
create function func_1() returns int begin show warnings; return 1; end| create function func_1() returns int begin show warnings; return 1; end|
ERROR 0A000: Not allowed to return a result set from a function ERROR 0A000: Not allowed to return a result set from a function

View File

@ -889,7 +889,7 @@ select group_concat(a) FROM t1 group by b;
group_concat(a) group_concat(a)
1234567890 1234567890
Warnings: Warnings:
Warning 1260 1 line(s) were cut by GROUP_CONCAT() Warning 1260 Row 1 was cut by GROUP_CONCAT()
set group_concat_max_len=1024; set group_concat_max_len=1024;
select group_concat(a) FROM t1 group by b; select group_concat(a) FROM t1 group by b;
group_concat(a) group_concat(a)
@ -992,19 +992,19 @@ COUNT(*)
0 0
Warnings: Warnings:
Warning 1292 Incorrect datetime value: '20050327 invalid' for column 'date' at row 1 Warning 1292 Incorrect datetime value: '20050327 invalid' for column 'date' at row 1
Warning 1292 Incorrect datetime value: '20050327 invalid' for column 'date' at row 0 Warning 1292 Incorrect datetime value: '20050327 invalid' for column 'date' at row 1
SELECT COUNT(*) FROM t1 WHERE date BETWEEN '20050326' AND '20050328 invalid'; SELECT COUNT(*) FROM t1 WHERE date BETWEEN '20050326' AND '20050328 invalid';
COUNT(*) COUNT(*)
0 0
Warnings: Warnings:
Warning 1292 Incorrect datetime value: '20050328 invalid' for column 'date' at row 1 Warning 1292 Incorrect datetime value: '20050328 invalid' for column 'date' at row 1
Warning 1292 Incorrect datetime value: '20050328 invalid' for column 'date' at row 0 Warning 1292 Incorrect datetime value: '20050328 invalid' for column 'date' at row 1
SELECT COUNT(*) FROM t1 WHERE date BETWEEN '20050326' AND '20050327 invalid'; SELECT COUNT(*) FROM t1 WHERE date BETWEEN '20050326' AND '20050327 invalid';
COUNT(*) COUNT(*)
0 0
Warnings: Warnings:
Warning 1292 Incorrect datetime value: '20050327 invalid' for column 'date' at row 1 Warning 1292 Incorrect datetime value: '20050327 invalid' for column 'date' at row 1
Warning 1292 Incorrect datetime value: '20050327 invalid' for column 'date' at row 0 Warning 1292 Incorrect datetime value: '20050327 invalid' for column 'date' at row 1
show status like "Qcache_queries_in_cache"; show status like "Qcache_queries_in_cache";
Variable_name Value Variable_name Value
Qcache_queries_in_cache 0 Qcache_queries_in_cache 0

2362
mysql-test/r/signal.result Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,35 @@
use test;
drop procedure if exists signal_proc;
drop function if exists signal_func;
create procedure signal_proc()
begin
DECLARE foo CONDITION FOR SQLSTATE '12345';
SIGNAL foo;
SIGNAL foo SET MESSAGE_TEXT = "This is an error message";
RESIGNAL foo;
RESIGNAL foo SET MESSAGE_TEXT = "This is an error message";
end $$
create function signal_func() returns int
begin
DECLARE foo CONDITION FOR SQLSTATE '12345';
SIGNAL foo;
SIGNAL foo SET MESSAGE_TEXT = "This is an error message";
RESIGNAL foo;
RESIGNAL foo SET MESSAGE_TEXT = "This is an error message";
return 0;
end $$
show procedure code signal_proc;
Pos Instruction
0 stmt 136 "SIGNAL foo"
1 stmt 136 "SIGNAL foo SET MESSAGE_TEXT = "This i..."
2 stmt 137 "RESIGNAL foo"
3 stmt 137 "RESIGNAL foo SET MESSAGE_TEXT = "This..."
drop procedure signal_proc;
show function code signal_func;
Pos Instruction
0 stmt 136 "SIGNAL foo"
1 stmt 136 "SIGNAL foo SET MESSAGE_TEXT = "This i..."
2 stmt 137 "RESIGNAL foo"
3 stmt 137 "RESIGNAL foo SET MESSAGE_TEXT = "This..."
4 freturn 3 0
drop function signal_func;

View File

@ -0,0 +1,270 @@
drop database if exists demo;
create database demo;
use demo;
create table ab_physical_person (
person_id integer,
first_name VARCHAR(50),
middle_initial CHAR,
last_name VARCHAR(50),
primary key (person_id));
create table ab_moral_person (
company_id integer,
name VARCHAR(100),
primary key (company_id));
create table in_inventory (
item_id integer,
descr VARCHAR(50),
stock integer,
primary key (item_id));
create table po_order (
po_id integer auto_increment,
cust_type char, /* arc relationship, see cust_id */
cust_id integer, /* FK to ab_physical_person *OR* ab_moral_person */
primary key (po_id));
create table po_order_line (
po_id integer, /* FK to po_order.po_id */
line_no integer,
item_id integer, /* FK to in_inventory.item_id */
qty integer);
#
# Schema integrity enforcement
#
create procedure check_pk_person(in person_type char, in id integer)
begin
declare x integer;
declare msg varchar(128);
/*
Test integrity constraints for an 'arc' relationship.
Based on 'person_type', 'id' points to either a
physical person, or a moral person.
*/
case person_type
when 'P' then
begin
select count(person_id) from ab_physical_person
where ab_physical_person.person_id = id
into x;
if (x != 1)
then
set msg= concat('No such physical person, PK:', id);
SIGNAL SQLSTATE '45000' SET
MESSAGE_TEXT = msg,
MYSQL_ERRNO = 10000;
end if;
end;
when 'M' then
begin
select count(company_id) from ab_moral_person
where ab_moral_person.company_id = id
into x;
if (x != 1)
then
set msg= concat('No such moral person, PK:', id);
SIGNAL SQLSTATE '45000' SET
MESSAGE_TEXT = msg,
MYSQL_ERRNO = 10000;
end if;
end;
else
begin
set msg= concat('No such person type:', person_type);
SIGNAL SQLSTATE '45000' SET
MESSAGE_TEXT = msg,
MYSQL_ERRNO = 20000;
end;
end case;
end
$$
create procedure check_pk_inventory(in id integer)
begin
declare x integer;
declare msg varchar(128);
select count(item_id) from in_inventory
where in_inventory.item_id = id
into x;
if (x != 1)
then
set msg= concat('Failed integrity constraint, table in_inventory, PK:',
id);
SIGNAL SQLSTATE '45000' SET
MESSAGE_TEXT = msg,
MYSQL_ERRNO = 10000;
end if;
end
$$
create procedure check_pk_order(in id integer)
begin
declare x integer;
declare msg varchar(128);
select count(po_id) from po_order
where po_order.po_id = id
into x;
if (x != 1)
then
set msg= concat('Failed integrity constraint, table po_order, PK:', id);
SIGNAL SQLSTATE '45000' SET
MESSAGE_TEXT = msg,
MYSQL_ERRNO = 10000;
end if;
end
$$
create trigger po_order_bi before insert on po_order
for each row
begin
call check_pk_person(NEW.cust_type, NEW.cust_id);
end
$$
create trigger po_order_bu before update on po_order
for each row
begin
call check_pk_person(NEW.cust_type, NEW.cust_id);
end
$$
create trigger po_order_line_bi before insert on po_order_line
for each row
begin
call check_pk_order(NEW.po_id);
call check_pk_inventory(NEW.item_id);
end
$$
create trigger po_order_line_bu before update on po_order_line
for each row
begin
call check_pk_order(NEW.po_id);
call check_pk_inventory(NEW.item_id);
end
$$
#
# Application helpers
#
create procedure po_create_order(
in p_cust_type char,
in p_cust_id integer,
out id integer)
begin
insert into po_order set cust_type = p_cust_type, cust_id = p_cust_id;
set id = last_insert_id();
end
$$
create procedure po_add_order_line(
in po integer,
in line integer,
in item integer,
in q integer)
begin
insert into po_order_line set
po_id = po, line_no = line, item_id = item, qty = q;
end
$$
#
# Create sample data
#
insert into ab_physical_person values
( 1, "John", "A", "Doe"),
( 2, "Marry", "B", "Smith")
;
insert into ab_moral_person values
( 3, "ACME real estate, INC"),
( 4, "Local school")
;
insert into in_inventory values
( 100, "Table, dinner", 5),
( 101, "Chair", 20),
( 200, "Table, coffee", 3),
( 300, "School table", 25),
( 301, "School chairs", 50)
;
select * from ab_physical_person order by person_id;
person_id first_name middle_initial last_name
1 John A Doe
2 Marry B Smith
select * from ab_moral_person order by company_id;
company_id name
3 ACME real estate, INC
4 Local school
select * from in_inventory order by item_id;
item_id descr stock
100 Table, dinner 5
101 Chair 20
200 Table, coffee 3
300 School table 25
301 School chairs 50
#
# Entering an order
#
set @my_po = 0;
/* John Doe wants 1 table and 4 chairs */
call po_create_order("P", 1, @my_po);
call po_add_order_line (@my_po, 1, 100, 1);
call po_add_order_line (@my_po, 2, 101, 4);
/* Marry Smith wants a coffee table */
call po_create_order("P", 2, @my_po);
call po_add_order_line (@my_po, 1, 200, 1);
#
# Entering bad data in an order
#
call po_add_order_line (@my_po, 1, 999, 1);
ERROR 45000: Failed integrity constraint, table in_inventory, PK:999
#
# Entering bad data in an unknown order
#
call po_add_order_line (99, 1, 100, 1);
ERROR 45000: Failed integrity constraint, table po_order, PK:99
#
# Entering an order for an unknown company
#
call po_create_order("M", 7, @my_po);
ERROR 45000: No such moral person, PK:7
#
# Entering an order for an unknown person type
#
call po_create_order("X", 1, @my_po);
ERROR 45000: No such person type:X
/* The local school wants 10 class tables and 20 chairs */
call po_create_order("M", 4, @my_po);
call po_add_order_line (@my_po, 1, 300, 10);
call po_add_order_line (@my_po, 2, 301, 20);
select * from po_order;
po_id cust_type cust_id
1 P 1
2 P 2
3 M 4
select * from po_order_line;
po_id line_no item_id qty
1 1 100 1
1 2 101 4
2 1 200 1
3 1 300 10
3 2 301 20
select po_id as "PO#",
( case cust_type
when "P" then concat (pp.first_name,
" ",
pp.middle_initial,
" ",
pp.last_name)
when "M" then mp.name
end ) as "Sold to"
from po_order po
left join ab_physical_person pp on po.cust_id = pp.person_id
left join ab_moral_person mp on po.cust_id = company_id
;
PO# Sold to
1 John A Doe
2 Marry B Smith
3 Local school
select po_id as "PO#",
ol.line_no as "Line",
ol.item_id as "Item",
inv.descr as "Description",
ol.qty as "Quantity"
from po_order_line ol, in_inventory inv
where inv.item_id = ol.item_id
order by ol.item_id, ol.line_no;
PO# Line Item Description Quantity
1 1 100 Table, dinner 1
1 2 101 Chair 4
2 1 200 Table, coffee 1
3 1 300 School table 10
3 2 301 School chairs 20
drop database demo;

View File

@ -0,0 +1,197 @@
drop database if exists demo;
create database demo;
use demo;
create procedure proc_top_a(p1 integer)
begin
## DECLARE CONTINUE HANDLER for SQLEXCEPTION, NOT FOUND
begin
end;
select "Starting ...";
call proc_middle_a(p1);
select "The end";
end
$$
create procedure proc_middle_a(p1 integer)
begin
DECLARE l integer;
# without RESIGNAL:
# Should be: DECLARE EXIT HANDLER for SQLEXCEPTION, NOT FOUND
DECLARE EXIT HANDLER for 1 /* not sure how to handle exceptions */
begin
select "Oops ... now what ?";
end;
select "In prod_middle()";
create temporary table t1(a integer, b integer);
select GET_LOCK("user_mutex", 10) into l;
insert into t1 set a = p1, b = p1;
call proc_bottom_a(p1);
select RELEASE_LOCK("user_mutex") into l;
drop temporary table t1;
end
$$
create procedure proc_bottom_a(p1 integer)
begin
select "In proc_bottom()";
if (p1 = 1) then
begin
select "Doing something that works ...";
select * from t1;
end;
end if;
if (p1 = 2) then
begin
select "Doing something that fail (simulate an error) ...";
drop table no_such_table;
end;
end if;
if (p1 = 3) then
begin
select "Doing something that *SHOULD* works ...";
select * from t1;
end;
end if;
end
$$
call proc_top_a(1);
Starting ...
Starting ...
In prod_middle()
In prod_middle()
In proc_bottom()
In proc_bottom()
Doing something that works ...
Doing something that works ...
a b
1 1
The end
The end
call proc_top_a(2);
Starting ...
Starting ...
In prod_middle()
In prod_middle()
In proc_bottom()
In proc_bottom()
Doing something that fail (simulate an error) ...
Doing something that fail (simulate an error) ...
ERROR 42S02: Unknown table 'no_such_table'
call proc_top_a(3);
Starting ...
Starting ...
In prod_middle()
In prod_middle()
ERROR 42S01: Table 't1' already exists
call proc_top_a(1);
Starting ...
Starting ...
In prod_middle()
In prod_middle()
ERROR 42S01: Table 't1' already exists
drop temporary table if exists t1;
create procedure proc_top_b(p1 integer)
begin
select "Starting ...";
call proc_middle_b(p1);
select "The end";
end
$$
create procedure proc_middle_b(p1 integer)
begin
DECLARE l integer;
DECLARE EXIT HANDLER for SQLEXCEPTION, NOT FOUND
begin
begin
DECLARE CONTINUE HANDLER for SQLEXCEPTION, NOT FOUND
begin
/* Ignore errors from the cleanup code */
end;
select "Doing cleanup !";
select RELEASE_LOCK("user_mutex") into l;
drop temporary table t1;
end;
RESIGNAL;
end;
select "In prod_middle()";
create temporary table t1(a integer, b integer);
select GET_LOCK("user_mutex", 10) into l;
insert into t1 set a = p1, b = p1;
call proc_bottom_b(p1);
select RELEASE_LOCK("user_mutex") into l;
drop temporary table t1;
end
$$
create procedure proc_bottom_b(p1 integer)
begin
select "In proc_bottom()";
if (p1 = 1) then
begin
select "Doing something that works ...";
select * from t1;
end;
end if;
if (p1 = 2) then
begin
select "Doing something that fail (simulate an error) ...";
drop table no_such_table;
end;
end if;
if (p1 = 3) then
begin
select "Doing something that *SHOULD* works ...";
select * from t1;
end;
end if;
end
$$
call proc_top_b(1);
Starting ...
Starting ...
In prod_middle()
In prod_middle()
In proc_bottom()
In proc_bottom()
Doing something that works ...
Doing something that works ...
a b
1 1
The end
The end
call proc_top_b(2);
Starting ...
Starting ...
In prod_middle()
In prod_middle()
In proc_bottom()
In proc_bottom()
Doing something that fail (simulate an error) ...
Doing something that fail (simulate an error) ...
Doing cleanup !
Doing cleanup !
ERROR 42S02: Unknown table 'no_such_table'
call proc_top_b(3);
Starting ...
Starting ...
In prod_middle()
In prod_middle()
In proc_bottom()
In proc_bottom()
Doing something that *SHOULD* works ...
Doing something that *SHOULD* works ...
a b
3 3
The end
The end
call proc_top_b(1);
Starting ...
Starting ...
In prod_middle()
In prod_middle()
In proc_bottom()
In proc_bottom()
Doing something that works ...
Doing something that works ...
a b
1 1
The end
The end
drop database demo;

View File

@ -0,0 +1,143 @@
SET @start_global_value = @@global.max_error_count;
SELECT @start_global_value;
@start_global_value
64
SET @start_session_value = @@session.max_error_count;
SELECT @start_session_value;
@start_session_value
64
drop database if exists demo;
create database demo;
use demo;
create procedure proc_1()
begin
declare exit handler for sqlexception
resignal sqlstate '45000' set message_text='Oops in proc_1';
call proc_2();
end
$$
create procedure proc_2()
begin
declare exit handler for sqlexception
resignal sqlstate '45000' set message_text='Oops in proc_2';
call proc_3();
end
$$
create procedure proc_3()
begin
declare exit handler for sqlexception
resignal sqlstate '45000' set message_text='Oops in proc_3';
call proc_4();
end
$$
create procedure proc_4()
begin
declare exit handler for sqlexception
resignal sqlstate '45000' set message_text='Oops in proc_4';
call proc_5();
end
$$
create procedure proc_5()
begin
declare exit handler for sqlexception
resignal sqlstate '45000' set message_text='Oops in proc_5';
call proc_6();
end
$$
create procedure proc_6()
begin
declare exit handler for sqlexception
resignal sqlstate '45000' set message_text='Oops in proc_6';
call proc_7();
end
$$
create procedure proc_7()
begin
declare exit handler for sqlexception
resignal sqlstate '45000' set message_text='Oops in proc_7';
call proc_8();
end
$$
create procedure proc_8()
begin
declare exit handler for sqlexception
resignal sqlstate '45000' set message_text='Oops in proc_8';
call proc_9();
end
$$
create procedure proc_9()
begin
declare exit handler for sqlexception
resignal sqlstate '45000' set message_text='Oops in proc_9';
## Do something that fails, to see how errors are reported
drop table oops_it_is_not_here;
end
$$
call proc_1();
ERROR 45000: Oops in proc_1
show warnings;
Level Code Message
Error 1051 Unknown table 'oops_it_is_not_here'
Error 1642 Oops in proc_9
Error 1642 Oops in proc_8
Error 1642 Oops in proc_7
Error 1642 Oops in proc_6
Error 1642 Oops in proc_5
Error 1642 Oops in proc_4
Error 1642 Oops in proc_3
Error 1642 Oops in proc_2
Error 1642 Oops in proc_1
SET @@session.max_error_count = 5;
SELECT @@session.max_error_count;
@@session.max_error_count
5
call proc_1();
ERROR 45000: Oops in proc_1
show warnings;
Level Code Message
Error 1642 Oops in proc_5
Error 1642 Oops in proc_4
Error 1642 Oops in proc_3
Error 1642 Oops in proc_2
Error 1642 Oops in proc_1
SET @@session.max_error_count = 7;
SELECT @@session.max_error_count;
@@session.max_error_count
7
call proc_1();
ERROR 45000: Oops in proc_1
show warnings;
Level Code Message
Error 1642 Oops in proc_7
Error 1642 Oops in proc_6
Error 1642 Oops in proc_5
Error 1642 Oops in proc_4
Error 1642 Oops in proc_3
Error 1642 Oops in proc_2
Error 1642 Oops in proc_1
SET @@session.max_error_count = 9;
SELECT @@session.max_error_count;
@@session.max_error_count
9
call proc_1();
ERROR 45000: Oops in proc_1
show warnings;
Level Code Message
Error 1642 Oops in proc_9
Error 1642 Oops in proc_8
Error 1642 Oops in proc_7
Error 1642 Oops in proc_6
Error 1642 Oops in proc_5
Error 1642 Oops in proc_4
Error 1642 Oops in proc_3
Error 1642 Oops in proc_2
Error 1642 Oops in proc_1
drop database demo;
SET @@global.max_error_count = @start_global_value;
SELECT @@global.max_error_count;
@@global.max_error_count
64
SET @@session.max_error_count = @start_session_value;
SELECT @@session.max_error_count;
@@session.max_error_count
64

View File

@ -0,0 +1,86 @@
SET @save_sql_mode=@@sql_mode;
SET sql_mode='';
drop procedure if exists p;
drop procedure if exists p2;
drop procedure if exists p3;
create procedure p()
begin
declare utf8_var VARCHAR(128) CHARACTER SET UTF8;
set utf8_var = concat(repeat('A', 128), 'X');
select length(utf8_var), utf8_var;
end
$$
create procedure p2()
begin
declare msg VARCHAR(129) CHARACTER SET UTF8;
set msg = concat(repeat('A', 128), 'X');
select length(msg), msg;
signal sqlstate '55555' set message_text = msg;
end
$$
create procedure p3()
begin
declare name VARCHAR(65) CHARACTER SET UTF8;
set name = concat(repeat('A', 64), 'X');
select length(name), name;
signal sqlstate '55555' set
message_text = 'Message',
table_name = name;
end
$$
call p;
length(utf8_var) utf8_var
128 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Warnings:
Warning 1265 Data truncated for column 'utf8_var' at row 1
call p2;
length(msg) msg
129 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX
ERROR 55555: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
call p3;
length(name) name
65 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX
ERROR 55555: Message
drop procedure p;
drop procedure p2;
drop procedure p3;
SET sql_mode='STRICT_ALL_TABLES';
create procedure p()
begin
declare utf8_var VARCHAR(128) CHARACTER SET UTF8;
set utf8_var = concat(repeat('A', 128), 'X');
select length(utf8_var), utf8_var;
end
$$
create procedure p2()
begin
declare msg VARCHAR(129) CHARACTER SET UTF8;
set msg = concat(repeat('A', 128), 'X');
select length(msg), msg;
signal sqlstate '55555' set message_text = msg;
end
$$
create procedure p3()
begin
declare name VARCHAR(65) CHARACTER SET UTF8;
set name = concat(repeat('A', 64), 'X');
select length(name), name;
signal sqlstate '55555' set
message_text = 'Message',
table_name = name;
end
$$
call p;
ERROR 22001: Data too long for column 'utf8_var' at row 1
call p2;
length(msg) msg
129 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX
ERROR HY000: Data too long for condition item 'MESSAGE_TEXT'
call p3;
length(name) name
65 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX
ERROR HY000: Data too long for condition item 'TABLE_NAME'
drop procedure p;
drop procedure p2;
drop procedure p3;
SET @@sql_mode=@save_sql_mode;

View File

@ -97,8 +97,6 @@ end|
call p1()| call p1()|
a a
1 1
Warnings:
Note 1051 Unknown table 't1'
call p1()| call p1()|
a a
1 1
@ -371,9 +369,6 @@ call p1(@a)|
create table t1 (a int) create table t1 (a int)
@rsql @rsql
create table t2 (a int) create table t2 (a int)
Warnings:
Note 1051 Unknown table 't1'
Note 1051 Unknown table 't2'
select @a| select @a|
@a @a
0 0
@ -382,9 +377,6 @@ call p1(@a)|
create table t1 (a int) create table t1 (a int)
@rsql @rsql
create table t2 (a int) create table t2 (a int)
Warnings:
Note 1051 Unknown table 't1'
Note 1051 Unknown table 't2'
select @a| select @a|
@a @a
0 0

View File

@ -110,24 +110,6 @@ v7 v8 v9 v10 v11 v12 v13 v14 v15 v16
v17 v18 v19 v20 v17 v18 v19 v20
12.00 12.12 12.00 12.12 12.00 12.12 12.00 12.12
Warnings: Warnings:
Warning 1264 Out of range value for column 'v1' at row 1
Warning 1264 Out of range value for column 'v1u' at row 1
Warning 1264 Out of range value for column 'v2' at row 1
Warning 1264 Out of range value for column 'v2u' at row 1
Warning 1264 Out of range value for column 'v3' at row 1
Warning 1264 Out of range value for column 'v3u' at row 1
Warning 1264 Out of range value for column 'v4' at row 1
Warning 1264 Out of range value for column 'v4u' at row 1
Warning 1264 Out of range value for column 'v5' at row 1
Warning 1264 Out of range value for column 'v5u' at row 1
Warning 1264 Out of range value for column 'v6' at row 1
Warning 1264 Out of range value for column 'v6u' at row 1
Warning 1366 Incorrect integer value: 'String 10 ' for column 'v10' at row 1
Warning 1366 Incorrect integer value: 'String10' for column 'v11' at row 1
Warning 1265 Data truncated for column 'v12' at row 1
Warning 1265 Data truncated for column 'v13' at row 1
Warning 1366 Incorrect integer value: 'Hello, world' for column 'v16' at row 1
Note 1265 Data truncated for column 'v18' at row 1
Note 1265 Data truncated for column 'v20' at row 1 Note 1265 Data truncated for column 'v20' at row 1
CALL sp_vars_check_assignment(); CALL sp_vars_check_assignment();
i1 i2 i3 i4 i1 i2 i3 i4
@ -143,21 +125,6 @@ d1 d2 d3
d1 d2 d3 d1 d2 d3
1234.00 1234.12 1234.12 1234.00 1234.12 1234.12
Warnings: Warnings:
Warning 1264 Out of range value for column 'i1' at row 1
Warning 1264 Out of range value for column 'i2' at row 1
Warning 1264 Out of range value for column 'i3' at row 1
Warning 1264 Out of range value for column 'i4' at row 1
Warning 1264 Out of range value for column 'i1' at row 1
Warning 1264 Out of range value for column 'i2' at row 1
Warning 1264 Out of range value for column 'i3' at row 1
Warning 1264 Out of range value for column 'i4' at row 1
Warning 1264 Out of range value for column 'u1' at row 1
Warning 1264 Out of range value for column 'u2' at row 1
Warning 1264 Out of range value for column 'u3' at row 1
Warning 1264 Out of range value for column 'u4' at row 1
Warning 1264 Out of range value for column 'u1' at row 1
Warning 1264 Out of range value for column 'u2' at row 1
Note 1265 Data truncated for column 'd3' at row 1
Note 1265 Data truncated for column 'd3' at row 1 Note 1265 Data truncated for column 'd3' at row 1
SELECT sp_vars_check_ret1(); SELECT sp_vars_check_ret1();
sp_vars_check_ret1() sp_vars_check_ret1()
@ -198,24 +165,6 @@ v7 v8 v9 v10 v11 v12 v13 v14 v15 v16
v17 v18 v19 v20 v17 v18 v19 v20
12.00 12.12 12.00 12.12 12.00 12.12 12.00 12.12
Warnings: Warnings:
Warning 1264 Out of range value for column 'v1' at row 1
Warning 1264 Out of range value for column 'v1u' at row 1
Warning 1264 Out of range value for column 'v2' at row 1
Warning 1264 Out of range value for column 'v2u' at row 1
Warning 1264 Out of range value for column 'v3' at row 1
Warning 1264 Out of range value for column 'v3u' at row 1
Warning 1264 Out of range value for column 'v4' at row 1
Warning 1264 Out of range value for column 'v4u' at row 1
Warning 1264 Out of range value for column 'v5' at row 1
Warning 1264 Out of range value for column 'v5u' at row 1
Warning 1264 Out of range value for column 'v6' at row 1
Warning 1264 Out of range value for column 'v6u' at row 1
Warning 1366 Incorrect integer value: 'String 10 ' for column 'v10' at row 1
Warning 1366 Incorrect integer value: 'String10' for column 'v11' at row 1
Warning 1265 Data truncated for column 'v12' at row 1
Warning 1265 Data truncated for column 'v13' at row 1
Warning 1366 Incorrect integer value: 'Hello, world' for column 'v16' at row 1
Note 1265 Data truncated for column 'v18' at row 1
Note 1265 Data truncated for column 'v20' at row 1 Note 1265 Data truncated for column 'v20' at row 1
CALL sp_vars_check_assignment(); CALL sp_vars_check_assignment();
i1 i2 i3 i4 i1 i2 i3 i4
@ -231,21 +180,6 @@ d1 d2 d3
d1 d2 d3 d1 d2 d3
1234.00 1234.12 1234.12 1234.00 1234.12 1234.12
Warnings: Warnings:
Warning 1264 Out of range value for column 'i1' at row 1
Warning 1264 Out of range value for column 'i2' at row 1
Warning 1264 Out of range value for column 'i3' at row 1
Warning 1264 Out of range value for column 'i4' at row 1
Warning 1264 Out of range value for column 'i1' at row 1
Warning 1264 Out of range value for column 'i2' at row 1
Warning 1264 Out of range value for column 'i3' at row 1
Warning 1264 Out of range value for column 'i4' at row 1
Warning 1264 Out of range value for column 'u1' at row 1
Warning 1264 Out of range value for column 'u2' at row 1
Warning 1264 Out of range value for column 'u3' at row 1
Warning 1264 Out of range value for column 'u4' at row 1
Warning 1264 Out of range value for column 'u1' at row 1
Warning 1264 Out of range value for column 'u2' at row 1
Note 1265 Data truncated for column 'd3' at row 1
Note 1265 Data truncated for column 'd3' at row 1 Note 1265 Data truncated for column 'd3' at row 1
SELECT sp_vars_check_ret1(); SELECT sp_vars_check_ret1();
sp_vars_check_ret1() sp_vars_check_ret1()
@ -451,10 +385,6 @@ FF
HEX(v10) HEX(v10)
FF FF
Warnings: Warnings:
Warning 1264 Out of range value for column 'v8' at row 1
Warning 1264 Out of range value for column 'v9' at row 1
Warning 1264 Out of range value for column 'v10' at row 1
Warning 1264 Out of range value for column 'v1' at row 1
Warning 1264 Out of range value for column 'v5' at row 1 Warning 1264 Out of range value for column 'v5' at row 1
DROP PROCEDURE p1; DROP PROCEDURE p1;

View File

@ -526,8 +526,6 @@ end|
delete from t1| delete from t1|
create table t3 ( s char(16), d int)| create table t3 ( s char(16), d int)|
call into_test4()| call into_test4()|
Warnings:
Warning 1329 No data - zero rows fetched, selected, or processed
select * from t3| select * from t3|
s d s d
into4 NULL into4 NULL
@ -1120,8 +1118,6 @@ end|
select f9()| select f9()|
f9() f9()
6 6
Warnings:
Note 1051 Unknown table 't3'
select f9() from t1 limit 1| select f9() from t1 limit 1|
f9() f9()
6 6
@ -1162,8 +1158,6 @@ drop temporary table t3|
select f12_1()| select f12_1()|
f12_1() f12_1()
3 3
Warnings:
Note 1051 Unknown table 't3'
select f12_1() from t1 limit 1| select f12_1() from t1 limit 1|
f12_1() f12_1()
3 3
@ -2069,12 +2063,7 @@ end if;
insert into t4 values (2, rc, t3); insert into t4 values (2, rc, t3);
end| end|
call bug1863(10)| call bug1863(10)|
Warnings:
Note 1051 Unknown table 'temp_t1'
Warning 1329 No data - zero rows fetched, selected, or processed
call bug1863(10)| call bug1863(10)|
Warnings:
Warning 1329 No data - zero rows fetched, selected, or processed
select * from t4| select * from t4|
f1 rc t3 f1 rc t3
2 0 NULL 2 0 NULL
@ -2339,11 +2328,7 @@ begin
end| end|
call bug4579_1()| call bug4579_1()|
call bug4579_1()| call bug4579_1()|
Warnings:
Warning 1329 No data - zero rows fetched, selected, or processed
call bug4579_1()| call bug4579_1()|
Warnings:
Warning 1329 No data - zero rows fetched, selected, or processed
drop procedure bug4579_1| drop procedure bug4579_1|
drop procedure bug4579_2| drop procedure bug4579_2|
drop table t3| drop table t3|
@ -3736,9 +3721,6 @@ Table Create Table
tm1 CREATE TEMPORARY TABLE `tm1` ( tm1 CREATE TEMPORARY TABLE `tm1` (
`spv1` decimal(3,3) DEFAULT NULL `spv1` decimal(3,3) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
Warnings:
Warning 1264 Out of range value for column 'spv1' at row 1
Warning 1366 Incorrect decimal value: 'test' for column 'spv1' at row 1
call bug12589_2()| call bug12589_2()|
Table Create Table Table Create Table
tm1 CREATE TEMPORARY TABLE `tm1` ( tm1 CREATE TEMPORARY TABLE `tm1` (
@ -6106,35 +6088,6 @@ bug5274_f2()
x x
Warnings: Warnings:
Warning 1265 Data truncated for column 'bug5274_f1' at row 1 Warning 1265 Data truncated for column 'bug5274_f1' at row 1
Warning 1265 Data truncated for column 'bug5274_f1' at row 1
Warning 1265 Data truncated for column 'bug5274_f1' at row 1
Warning 1265 Data truncated for column 'bug5274_f1' at row 1
Warning 1265 Data truncated for column 'bug5274_f1' at row 1
Warning 1265 Data truncated for column 'bug5274_f1' at row 1
Warning 1265 Data truncated for column 'bug5274_f1' at row 1
Warning 1265 Data truncated for column 'bug5274_f1' at row 1
Warning 1265 Data truncated for column 'bug5274_f1' at row 1
Warning 1265 Data truncated for column 'bug5274_f1' at row 1
Warning 1265 Data truncated for column 'bug5274_f1' at row 1
Warning 1265 Data truncated for column 'bug5274_f1' at row 1
Warning 1265 Data truncated for column 'bug5274_f1' at row 1
Warning 1265 Data truncated for column 'bug5274_f1' at row 1
Warning 1265 Data truncated for column 'bug5274_f1' at row 1
Warning 1265 Data truncated for column 'bug5274_f1' at row 1
Warning 1265 Data truncated for column 'bug5274_f1' at row 1
Warning 1265 Data truncated for column 'bug5274_f1' at row 1
Warning 1265 Data truncated for column 'bug5274_f1' at row 1
Warning 1265 Data truncated for column 'bug5274_f1' at row 1
Warning 1265 Data truncated for column 'bug5274_f1' at row 1
Warning 1265 Data truncated for column 'bug5274_f1' at row 1
Warning 1265 Data truncated for column 'bug5274_f1' at row 1
Warning 1265 Data truncated for column 'bug5274_f1' at row 1
Warning 1265 Data truncated for column 'bug5274_f1' at row 1
Warning 1265 Data truncated for column 'bug5274_f1' at row 1
Warning 1265 Data truncated for column 'bug5274_f1' at row 1
Warning 1265 Data truncated for column 'bug5274_f1' at row 1
Warning 1265 Data truncated for column 'bug5274_f1' at row 1
Warning 1265 Data truncated for column 'bug5274_f1' at row 1
DROP FUNCTION bug5274_f1| DROP FUNCTION bug5274_f1|
DROP FUNCTION bug5274_f2| DROP FUNCTION bug5274_f2|
drop procedure if exists proc_21513| drop procedure if exists proc_21513|
@ -6229,20 +6182,17 @@ f1(2)
0 0
Warnings: Warnings:
Warning 1329 No data - zero rows fetched, selected, or processed Warning 1329 No data - zero rows fetched, selected, or processed
Warning 1329 No data - zero rows fetched, selected, or processed
PREPARE s1 FROM 'SELECT f1(2)'; PREPARE s1 FROM 'SELECT f1(2)';
EXECUTE s1; EXECUTE s1;
f1(2) f1(2)
0 0
Warnings: Warnings:
Warning 1329 No data - zero rows fetched, selected, or processed Warning 1329 No data - zero rows fetched, selected, or processed
Warning 1329 No data - zero rows fetched, selected, or processed
EXECUTE s1; EXECUTE s1;
f1(2) f1(2)
0 0
Warnings: Warnings:
Warning 1329 No data - zero rows fetched, selected, or processed Warning 1329 No data - zero rows fetched, selected, or processed
Warning 1329 No data - zero rows fetched, selected, or processed
DROP PROCEDURE p1; DROP PROCEDURE p1;
DROP PROCEDURE p2; DROP PROCEDURE p2;
DROP FUNCTION f1; DROP FUNCTION f1;
@ -6254,6 +6204,7 @@ create procedure mysqltest_db1.sp_bug28551() begin end;
call mysqltest_db1.sp_bug28551(); call mysqltest_db1.sp_bug28551();
show warnings; show warnings;
Level Code Message Level Code Message
Note 1008 Can't drop database 'mysqltest_db1'; database doesn't exist
drop database mysqltest_db1; drop database mysqltest_db1;
drop database if exists mysqltest_db1; drop database if exists mysqltest_db1;
drop table if exists test.t1; drop table if exists test.t1;
@ -6963,6 +6914,22 @@ CALL p1();
CALL p1(); CALL p1();
DROP PROCEDURE p1; DROP PROCEDURE p1;
DROP TABLE t1; DROP TABLE t1;
#
# Bug #46629: Item_in_subselect::val_int(): Assertion `0'
# on subquery inside a SP
#
CREATE TABLE t1(a INT);
CREATE TABLE t2(a INT, b INT PRIMARY KEY);
CREATE PROCEDURE p1 ()
BEGIN
SELECT a FROM t1 A WHERE A.b IN (SELECT b FROM t2 AS B);
END|
CALL p1;
ERROR 42S22: Unknown column 'A.b' in 'IN/ALL/ANY subquery'
CALL p1;
ERROR 42S22: Unknown column 'A.b' in 'IN/ALL/ANY subquery'
DROP PROCEDURE p1;
DROP TABLE t1, t2;
# ------------------------------------------------------------------ # ------------------------------------------------------------------
# -- 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