Loading .bzrignore +1 −0 Original line number Diff line number Diff line Loading @@ -312,6 +312,7 @@ emacs.h extra/charset2html extra/comp_err extra/created_include_files extra/innochecksum extra/my_print_defaults extra/mysql_install extra/mysql_tzinfo_to_sql Loading BitKeeper/etc/RESYNC_TREE 0 → 100644 +0 −0 Empty file added. client/mysqlimport.c +2 −1 Original line number Diff line number Diff line Loading @@ -37,8 +37,9 @@ static char *add_load_option(char *ptr,const char *object, const char *statement); static my_bool verbose=0,lock_tables=0,ignore_errors=0,opt_delete=0, replace=0,silent=0,ignore=0,opt_compress=0,opt_local_file=0, replace=0,silent=0,ignore=0,opt_compress=0, opt_low_priority= 0, tty_password= 0; static uint opt_local_file=0; static MYSQL mysql_connection; static char *opt_password=0, *current_user=0, *current_host=0, *current_db=0, *fields_terminated=0, Loading client/mysqltest.c +107 −154 Original line number Diff line number Diff line Loading @@ -481,9 +481,10 @@ my_bool mysql_rpl_probe(MYSQL *mysql __attribute__((unused))) { return 1; } static void replace_dynstr_append_mem(DYNAMIC_STRING *ds, const char *val, int len); static void replace_dynstr_append(DYNAMIC_STRING *ds, const char *val); static int normal_handle_error(const char *query, struct st_query *q, MYSQL *mysql, DYNAMIC_STRING *ds); static int normal_handle_no_error(struct st_query *q); static int handle_error(const char *query, struct st_query *q, unsigned int err_errno, const char *err_error, const char *err_sqlstate, DYNAMIC_STRING *ds); static int handle_no_error(struct st_query *q); static void do_eval(DYNAMIC_STRING* query_eval, const char *query) { Loading Loading @@ -2071,11 +2072,12 @@ int connect_n_handle_errors(struct st_query *q, MYSQL* con, const char* host, if (!mysql_real_connect(con, host, user, pass, db, port, sock ? sock: 0, CLIENT_MULTI_STATEMENTS)) { error= normal_handle_error("connect", q, con, ds); error= handle_error("connect", q, mysql_errno(con), mysql_error(con), mysql_sqlstate(con), ds); *create_conn= 0; goto err; } else if (normal_handle_no_error(q)) else if (handle_no_error(q)) { /* Fail if there was no error but we expected it. Loading Loading @@ -2380,8 +2382,10 @@ int read_line(char *buf, int size) if (feof(cur_file->file)) { found_eof: if (cur_file->file != stdin) if (cur_file->file != stdin){ my_fclose(cur_file->file, MYF(0)); cur_file->file= 0; } my_free((gptr)cur_file->file_name, MYF(MY_ALLOW_ZERO_PTR)); cur_file->file_name= 0; lineno--; Loading Loading @@ -2755,10 +2759,11 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), argument= buff; } fn_format(buff, argument, "", "", 4); DBUG_ASSERT(cur_file->file == 0); DBUG_ASSERT(cur_file == file_stack && cur_file->file == 0); if (!(cur_file->file= my_fopen(buff, O_RDONLY | FILE_BINARY, MYF(MY_WME)))) die("Could not open %s: errno = %d", argument, errno); die("Could not open %s: errno = %d", buff, errno); cur_file->file_name= my_strdup(buff, MYF(MY_FAE)); break; } case 'm': Loading Loading @@ -2961,8 +2966,6 @@ static void append_result(DYNAMIC_STRING *ds, MYSQL_RES *res) static int run_query_normal(MYSQL *mysql, struct st_query *q, int flags); static int run_query_stmt (MYSQL *mysql, struct st_query *q, int flags); static void run_query_stmt_handle_warnings(MYSQL *mysql, DYNAMIC_STRING *ds); static int run_query_stmt_handle_error(char *query, struct st_query *q, MYSQL_STMT *stmt, DYNAMIC_STRING *ds); static void run_query_display_metadata(MYSQL_FIELD *field, uint num_fields, DYNAMIC_STRING *ds); Loading Loading @@ -3046,12 +3049,13 @@ static int run_query_normal(MYSQL* mysql, struct st_query* q, int flags) (!(last_result= res= mysql_store_result(mysql)) && mysql_field_count(mysql))) { if (normal_handle_error(query, q, mysql, ds)) if (handle_error(query, q, mysql_errno(mysql), mysql_error(mysql), mysql_sqlstate(mysql), ds)) error= 1; goto end; } if (normal_handle_no_error(q)) if (handle_no_error(q)) { error= 1; goto end; Loading Loading @@ -3166,14 +3170,15 @@ static int run_query_normal(MYSQL* mysql, struct st_query* q, int flags) /* Handle errors which occurred after execution of conventional (non-prepared) statement. Handle errors which occurred after execution SYNOPSIS normal_handle_error() handle_error() query - query string q - query context mysql - connection through which query was sent to server err_errno - error number err_error - error message err_sqlstate - sql state ds - dynamic string which is used for output buffer NOTE Loading @@ -3185,35 +3190,35 @@ static int run_query_normal(MYSQL* mysql, struct st_query* q, int flags) 1 - Some other error was expected. */ static int normal_handle_error(const char *query, struct st_query *q, MYSQL *mysql, DYNAMIC_STRING *ds) static int handle_error(const char *query, struct st_query *q, unsigned int err_errno, const char *err_error, const char* err_sqlstate, DYNAMIC_STRING *ds) { uint i; DBUG_ENTER("normal_handle_error"); DBUG_ENTER("handle_error"); if (q->require_file) abort_not_supported_test(); if (q->abort_on_error) die("query '%s' failed: %d: %s", query, mysql_errno(mysql), mysql_error(mysql)); else { err_errno, err_error); for (i= 0 ; (uint) i < q->expected_errors ; i++) { if (((q->expected_errno[i].type == ERR_ERRNO) && (q->expected_errno[i].code.errnum == mysql_errno(mysql))) || (q->expected_errno[i].code.errnum == err_errno)) || ((q->expected_errno[i].type == ERR_SQLSTATE) && (strcmp(q->expected_errno[i].code.sqlstate, mysql_sqlstate(mysql)) == 0))) (strcmp(q->expected_errno[i].code.sqlstate, err_sqlstate) == 0))) { if (q->expected_errors == 1) { /* Only log error if there is one possible error */ dynstr_append_mem(ds, "ERROR ", 6); replace_dynstr_append(ds, mysql_sqlstate(mysql)); replace_dynstr_append(ds, err_sqlstate); dynstr_append_mem(ds, ": ", 2); replace_dynstr_append(ds, mysql_error(mysql)); replace_dynstr_append(ds, err_error); dynstr_append_mem(ds,"\n",1); } /* Don't log error if we may not get an error */ Loading @@ -3229,20 +3234,20 @@ static int normal_handle_error(const char *query, struct st_query *q, DBUG_PRINT("info",("i: %d expected_errors: %d", i, q->expected_errors)); dynstr_append_mem(ds, "ERROR ",6); replace_dynstr_append(ds, mysql_sqlstate(mysql)); replace_dynstr_append(ds, err_sqlstate); dynstr_append_mem(ds, ": ", 2); replace_dynstr_append(ds, mysql_error(mysql)); replace_dynstr_append(ds, err_error); dynstr_append_mem(ds, "\n", 1); if (i) { if (q->expected_errno[0].type == ERR_ERRNO) verbose_msg("query '%s' failed with wrong errno %d instead of %d...", q->query, mysql_errno(mysql), q->query, err_errno, q->expected_errno[0].code.errnum); else verbose_msg("query '%s' failed with wrong sqlstate %s instead of %s...", q->query, mysql_sqlstate(mysql), q->query, err_sqlstate, q->expected_errno[0].code.sqlstate); DBUG_RETURN(1); } Loading @@ -3251,19 +3256,17 @@ static int normal_handle_error(const char *query, struct st_query *q, If we do not abort on error, failure to run the query does not fail the whole test case. */ verbose_msg("query '%s' failed: %d: %s", q->query, mysql_errno(mysql), mysql_error(mysql)); verbose_msg("query '%s' failed: %d: %s", q->query, err_errno, err_error); DBUG_RETURN(0); } return 0; /* Keep compiler happy */ } /* Handle absence of errors after execution of convetional statement. Handle absence of errors after execution SYNOPSIS normal_handle_error() handle_no_error() q - context of query RETURN VALUE Loading @@ -3271,9 +3274,9 @@ static int normal_handle_error(const char *query, struct st_query *q, 1 - Some error was expected from this query. */ static int normal_handle_no_error(struct st_query *q) static int handle_no_error(struct st_query *q) { DBUG_ENTER("normal_handle_no_error"); DBUG_ENTER("handle_no_error"); if (q->expected_errno[0].type == ERR_ERRNO && q->expected_errno[0].code.errnum != 0) Loading Loading @@ -3367,17 +3370,17 @@ static int run_query_stmt(MYSQL *mysql, struct st_query *q, int flags) { if (q->abort_on_error) { die("unable to prepare statement '%s': " "%s (mysql_stmt_errno=%d returned=%d)", query, mysql_stmt_error(stmt), mysql_stmt_errno(stmt), err); die("query '%s' failed: %d: %s", query, mysql_stmt_errno(stmt), mysql_stmt_error(stmt)); } else { /* Preparing is part of normal execution and some errors may be expected */ error= run_query_stmt_handle_error(query, q, stmt, ds); error= handle_error(query, q, mysql_stmt_errno(stmt), mysql_stmt_error(stmt), mysql_stmt_sqlstate(stmt), ds); goto end; } } Loading Loading @@ -3410,7 +3413,9 @@ static int run_query_stmt(MYSQL *mysql, struct st_query *q, int flags) else { /* We got an error, maybe expected */ error= run_query_stmt_handle_error(query, q, stmt, ds); error= handle_error(query, q, mysql_stmt_errno(stmt), mysql_stmt_error(stmt), mysql_stmt_sqlstate(stmt), ds); goto end; } } Loading Loading @@ -3446,18 +3451,16 @@ static int run_query_stmt(MYSQL *mysql, struct st_query *q, int flags) else { /* We got an error, maybe expected */ error= run_query_stmt_handle_error(query, q, stmt, ds); error= handle_error(query, q, mysql_stmt_errno(stmt), mysql_stmt_error(stmt), mysql_stmt_sqlstate(stmt), ds); goto end; } } /* If we got here the statement was both executed and read succeesfully */ if (q->expected_errno[0].type == ERR_ERRNO && q->expected_errno[0].code.errnum != 0) if (handle_no_error(q)) { verbose_msg("query '%s' succeeded - should have failed with errno %d...", q->query, q->expected_errno[0].code.errnum); error= 1; goto end; } Loading Loading @@ -3737,71 +3740,6 @@ static void run_query_stmt_handle_warnings(MYSQL *mysql, DYNAMIC_STRING *ds) } static int run_query_stmt_handle_error(char *query, struct st_query *q, MYSQL_STMT *stmt, DYNAMIC_STRING *ds) { if (q->require_file) /* FIXME don't understand this one */ { abort_not_supported_test(); } if (q->abort_on_error) die("query '%s' failed: %d: %s", query, mysql_stmt_errno(stmt), mysql_stmt_error(stmt)); else { int i; for (i=0 ; (uint) i < q->expected_errors ; i++) { if (((q->expected_errno[i].type == ERR_ERRNO) && (q->expected_errno[i].code.errnum == mysql_stmt_errno(stmt))) || ((q->expected_errno[i].type == ERR_SQLSTATE) && (strcmp(q->expected_errno[i].code.sqlstate, mysql_stmt_sqlstate(stmt)) == 0))) { if (i == 0 && q->expected_errors == 1) { /* Only log error if there is one possible error */ dynstr_append_mem(ds,"ERROR ",6); replace_dynstr_append(ds, mysql_stmt_sqlstate(stmt)); dynstr_append_mem(ds, ": ", 2); replace_dynstr_append(ds,mysql_stmt_error(stmt)); dynstr_append_mem(ds,"\n",1); } /* Don't log error if we may not get an error */ else if (q->expected_errno[0].type == ERR_SQLSTATE || (q->expected_errno[0].type == ERR_ERRNO && q->expected_errno[0].code.errnum != 0)) dynstr_append(ds,"Got one of the listed errors\n"); return 0; /* Ok */ } } DBUG_PRINT("info",("i: %d expected_errors: %d", i, q->expected_errors)); dynstr_append_mem(ds, "ERROR ",6); replace_dynstr_append(ds, mysql_stmt_sqlstate(stmt)); dynstr_append_mem(ds,": ",2); replace_dynstr_append(ds, mysql_stmt_error(stmt)); dynstr_append_mem(ds,"\n",1); if (i) { verbose_msg("query '%s' failed with wrong errno %d instead of %d...", q->query, mysql_stmt_errno(stmt), q->expected_errno[0]); return 1; /* Error */ } verbose_msg("query '%s' failed: %d: %s", q->query, mysql_stmt_errno(stmt), mysql_stmt_error(stmt)); /* if we do not abort on error, failure to run the query does not fail the whole test case */ return 0; } return 0; } /****************************************************************************\ * Functions to match SQL statements that can be prepared \****************************************************************************/ Loading Loading @@ -3898,6 +3836,22 @@ void get_query_type(struct st_query* q) q->type != Q_DISABLE_PARSING) q->type= Q_COMMENT; } else if (q->type == Q_COMMENT_WITH_COMMAND && q->query[q->first_word_len-1] == ';') { /* Detect comment with command using extra delimiter Ex --disable_query_log; ^ Extra delimiter causing the command to be skipped */ save= q->query[q->first_word_len-1]; q->query[q->first_word_len-1]= 0; type= find_type(q->query, &command_typelib, 1+2); q->query[q->first_word_len-1]= save; if (type > 0) die("Extra delimiter \";\" found"); } DBUG_VOID_RETURN; } Loading Loading @@ -4025,9 +3979,8 @@ int main(int argc, char **argv) embedded_server_args, (char**) embedded_server_groups)) die("Can't initialize MySQL server"); if (cur_file == file_stack) if (cur_file == file_stack && cur_file->file == 0) { DBUG_ASSERT(cur_file->file == 0); cur_file->file= stdin; cur_file->file_name= my_strdup("<stdin>", MYF(MY_WME)); } Loading config/ac-macros/ha_federated.m4 +1 −1 Original line number Diff line number Diff line Loading @@ -6,7 +6,7 @@ AC_DEFUN([MYSQL_CHECK_FEDERATED], [ AC_ARG_WITH([federated-storage-engine], [ --with-federated-storage-engine Enable the MySQL Storage Engine], Enable the MySQL Federated Storage Engine], [federateddb="$withval"], [federateddb=no]) AC_MSG_CHECKING([for MySQL federated storage engine]) Loading Loading
.bzrignore +1 −0 Original line number Diff line number Diff line Loading @@ -312,6 +312,7 @@ emacs.h extra/charset2html extra/comp_err extra/created_include_files extra/innochecksum extra/my_print_defaults extra/mysql_install extra/mysql_tzinfo_to_sql Loading
client/mysqlimport.c +2 −1 Original line number Diff line number Diff line Loading @@ -37,8 +37,9 @@ static char *add_load_option(char *ptr,const char *object, const char *statement); static my_bool verbose=0,lock_tables=0,ignore_errors=0,opt_delete=0, replace=0,silent=0,ignore=0,opt_compress=0,opt_local_file=0, replace=0,silent=0,ignore=0,opt_compress=0, opt_low_priority= 0, tty_password= 0; static uint opt_local_file=0; static MYSQL mysql_connection; static char *opt_password=0, *current_user=0, *current_host=0, *current_db=0, *fields_terminated=0, Loading
client/mysqltest.c +107 −154 Original line number Diff line number Diff line Loading @@ -481,9 +481,10 @@ my_bool mysql_rpl_probe(MYSQL *mysql __attribute__((unused))) { return 1; } static void replace_dynstr_append_mem(DYNAMIC_STRING *ds, const char *val, int len); static void replace_dynstr_append(DYNAMIC_STRING *ds, const char *val); static int normal_handle_error(const char *query, struct st_query *q, MYSQL *mysql, DYNAMIC_STRING *ds); static int normal_handle_no_error(struct st_query *q); static int handle_error(const char *query, struct st_query *q, unsigned int err_errno, const char *err_error, const char *err_sqlstate, DYNAMIC_STRING *ds); static int handle_no_error(struct st_query *q); static void do_eval(DYNAMIC_STRING* query_eval, const char *query) { Loading Loading @@ -2071,11 +2072,12 @@ int connect_n_handle_errors(struct st_query *q, MYSQL* con, const char* host, if (!mysql_real_connect(con, host, user, pass, db, port, sock ? sock: 0, CLIENT_MULTI_STATEMENTS)) { error= normal_handle_error("connect", q, con, ds); error= handle_error("connect", q, mysql_errno(con), mysql_error(con), mysql_sqlstate(con), ds); *create_conn= 0; goto err; } else if (normal_handle_no_error(q)) else if (handle_no_error(q)) { /* Fail if there was no error but we expected it. Loading Loading @@ -2380,8 +2382,10 @@ int read_line(char *buf, int size) if (feof(cur_file->file)) { found_eof: if (cur_file->file != stdin) if (cur_file->file != stdin){ my_fclose(cur_file->file, MYF(0)); cur_file->file= 0; } my_free((gptr)cur_file->file_name, MYF(MY_ALLOW_ZERO_PTR)); cur_file->file_name= 0; lineno--; Loading Loading @@ -2755,10 +2759,11 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), argument= buff; } fn_format(buff, argument, "", "", 4); DBUG_ASSERT(cur_file->file == 0); DBUG_ASSERT(cur_file == file_stack && cur_file->file == 0); if (!(cur_file->file= my_fopen(buff, O_RDONLY | FILE_BINARY, MYF(MY_WME)))) die("Could not open %s: errno = %d", argument, errno); die("Could not open %s: errno = %d", buff, errno); cur_file->file_name= my_strdup(buff, MYF(MY_FAE)); break; } case 'm': Loading Loading @@ -2961,8 +2966,6 @@ static void append_result(DYNAMIC_STRING *ds, MYSQL_RES *res) static int run_query_normal(MYSQL *mysql, struct st_query *q, int flags); static int run_query_stmt (MYSQL *mysql, struct st_query *q, int flags); static void run_query_stmt_handle_warnings(MYSQL *mysql, DYNAMIC_STRING *ds); static int run_query_stmt_handle_error(char *query, struct st_query *q, MYSQL_STMT *stmt, DYNAMIC_STRING *ds); static void run_query_display_metadata(MYSQL_FIELD *field, uint num_fields, DYNAMIC_STRING *ds); Loading Loading @@ -3046,12 +3049,13 @@ static int run_query_normal(MYSQL* mysql, struct st_query* q, int flags) (!(last_result= res= mysql_store_result(mysql)) && mysql_field_count(mysql))) { if (normal_handle_error(query, q, mysql, ds)) if (handle_error(query, q, mysql_errno(mysql), mysql_error(mysql), mysql_sqlstate(mysql), ds)) error= 1; goto end; } if (normal_handle_no_error(q)) if (handle_no_error(q)) { error= 1; goto end; Loading Loading @@ -3166,14 +3170,15 @@ static int run_query_normal(MYSQL* mysql, struct st_query* q, int flags) /* Handle errors which occurred after execution of conventional (non-prepared) statement. Handle errors which occurred after execution SYNOPSIS normal_handle_error() handle_error() query - query string q - query context mysql - connection through which query was sent to server err_errno - error number err_error - error message err_sqlstate - sql state ds - dynamic string which is used for output buffer NOTE Loading @@ -3185,35 +3190,35 @@ static int run_query_normal(MYSQL* mysql, struct st_query* q, int flags) 1 - Some other error was expected. */ static int normal_handle_error(const char *query, struct st_query *q, MYSQL *mysql, DYNAMIC_STRING *ds) static int handle_error(const char *query, struct st_query *q, unsigned int err_errno, const char *err_error, const char* err_sqlstate, DYNAMIC_STRING *ds) { uint i; DBUG_ENTER("normal_handle_error"); DBUG_ENTER("handle_error"); if (q->require_file) abort_not_supported_test(); if (q->abort_on_error) die("query '%s' failed: %d: %s", query, mysql_errno(mysql), mysql_error(mysql)); else { err_errno, err_error); for (i= 0 ; (uint) i < q->expected_errors ; i++) { if (((q->expected_errno[i].type == ERR_ERRNO) && (q->expected_errno[i].code.errnum == mysql_errno(mysql))) || (q->expected_errno[i].code.errnum == err_errno)) || ((q->expected_errno[i].type == ERR_SQLSTATE) && (strcmp(q->expected_errno[i].code.sqlstate, mysql_sqlstate(mysql)) == 0))) (strcmp(q->expected_errno[i].code.sqlstate, err_sqlstate) == 0))) { if (q->expected_errors == 1) { /* Only log error if there is one possible error */ dynstr_append_mem(ds, "ERROR ", 6); replace_dynstr_append(ds, mysql_sqlstate(mysql)); replace_dynstr_append(ds, err_sqlstate); dynstr_append_mem(ds, ": ", 2); replace_dynstr_append(ds, mysql_error(mysql)); replace_dynstr_append(ds, err_error); dynstr_append_mem(ds,"\n",1); } /* Don't log error if we may not get an error */ Loading @@ -3229,20 +3234,20 @@ static int normal_handle_error(const char *query, struct st_query *q, DBUG_PRINT("info",("i: %d expected_errors: %d", i, q->expected_errors)); dynstr_append_mem(ds, "ERROR ",6); replace_dynstr_append(ds, mysql_sqlstate(mysql)); replace_dynstr_append(ds, err_sqlstate); dynstr_append_mem(ds, ": ", 2); replace_dynstr_append(ds, mysql_error(mysql)); replace_dynstr_append(ds, err_error); dynstr_append_mem(ds, "\n", 1); if (i) { if (q->expected_errno[0].type == ERR_ERRNO) verbose_msg("query '%s' failed with wrong errno %d instead of %d...", q->query, mysql_errno(mysql), q->query, err_errno, q->expected_errno[0].code.errnum); else verbose_msg("query '%s' failed with wrong sqlstate %s instead of %s...", q->query, mysql_sqlstate(mysql), q->query, err_sqlstate, q->expected_errno[0].code.sqlstate); DBUG_RETURN(1); } Loading @@ -3251,19 +3256,17 @@ static int normal_handle_error(const char *query, struct st_query *q, If we do not abort on error, failure to run the query does not fail the whole test case. */ verbose_msg("query '%s' failed: %d: %s", q->query, mysql_errno(mysql), mysql_error(mysql)); verbose_msg("query '%s' failed: %d: %s", q->query, err_errno, err_error); DBUG_RETURN(0); } return 0; /* Keep compiler happy */ } /* Handle absence of errors after execution of convetional statement. Handle absence of errors after execution SYNOPSIS normal_handle_error() handle_no_error() q - context of query RETURN VALUE Loading @@ -3271,9 +3274,9 @@ static int normal_handle_error(const char *query, struct st_query *q, 1 - Some error was expected from this query. */ static int normal_handle_no_error(struct st_query *q) static int handle_no_error(struct st_query *q) { DBUG_ENTER("normal_handle_no_error"); DBUG_ENTER("handle_no_error"); if (q->expected_errno[0].type == ERR_ERRNO && q->expected_errno[0].code.errnum != 0) Loading Loading @@ -3367,17 +3370,17 @@ static int run_query_stmt(MYSQL *mysql, struct st_query *q, int flags) { if (q->abort_on_error) { die("unable to prepare statement '%s': " "%s (mysql_stmt_errno=%d returned=%d)", query, mysql_stmt_error(stmt), mysql_stmt_errno(stmt), err); die("query '%s' failed: %d: %s", query, mysql_stmt_errno(stmt), mysql_stmt_error(stmt)); } else { /* Preparing is part of normal execution and some errors may be expected */ error= run_query_stmt_handle_error(query, q, stmt, ds); error= handle_error(query, q, mysql_stmt_errno(stmt), mysql_stmt_error(stmt), mysql_stmt_sqlstate(stmt), ds); goto end; } } Loading Loading @@ -3410,7 +3413,9 @@ static int run_query_stmt(MYSQL *mysql, struct st_query *q, int flags) else { /* We got an error, maybe expected */ error= run_query_stmt_handle_error(query, q, stmt, ds); error= handle_error(query, q, mysql_stmt_errno(stmt), mysql_stmt_error(stmt), mysql_stmt_sqlstate(stmt), ds); goto end; } } Loading Loading @@ -3446,18 +3451,16 @@ static int run_query_stmt(MYSQL *mysql, struct st_query *q, int flags) else { /* We got an error, maybe expected */ error= run_query_stmt_handle_error(query, q, stmt, ds); error= handle_error(query, q, mysql_stmt_errno(stmt), mysql_stmt_error(stmt), mysql_stmt_sqlstate(stmt), ds); goto end; } } /* If we got here the statement was both executed and read succeesfully */ if (q->expected_errno[0].type == ERR_ERRNO && q->expected_errno[0].code.errnum != 0) if (handle_no_error(q)) { verbose_msg("query '%s' succeeded - should have failed with errno %d...", q->query, q->expected_errno[0].code.errnum); error= 1; goto end; } Loading Loading @@ -3737,71 +3740,6 @@ static void run_query_stmt_handle_warnings(MYSQL *mysql, DYNAMIC_STRING *ds) } static int run_query_stmt_handle_error(char *query, struct st_query *q, MYSQL_STMT *stmt, DYNAMIC_STRING *ds) { if (q->require_file) /* FIXME don't understand this one */ { abort_not_supported_test(); } if (q->abort_on_error) die("query '%s' failed: %d: %s", query, mysql_stmt_errno(stmt), mysql_stmt_error(stmt)); else { int i; for (i=0 ; (uint) i < q->expected_errors ; i++) { if (((q->expected_errno[i].type == ERR_ERRNO) && (q->expected_errno[i].code.errnum == mysql_stmt_errno(stmt))) || ((q->expected_errno[i].type == ERR_SQLSTATE) && (strcmp(q->expected_errno[i].code.sqlstate, mysql_stmt_sqlstate(stmt)) == 0))) { if (i == 0 && q->expected_errors == 1) { /* Only log error if there is one possible error */ dynstr_append_mem(ds,"ERROR ",6); replace_dynstr_append(ds, mysql_stmt_sqlstate(stmt)); dynstr_append_mem(ds, ": ", 2); replace_dynstr_append(ds,mysql_stmt_error(stmt)); dynstr_append_mem(ds,"\n",1); } /* Don't log error if we may not get an error */ else if (q->expected_errno[0].type == ERR_SQLSTATE || (q->expected_errno[0].type == ERR_ERRNO && q->expected_errno[0].code.errnum != 0)) dynstr_append(ds,"Got one of the listed errors\n"); return 0; /* Ok */ } } DBUG_PRINT("info",("i: %d expected_errors: %d", i, q->expected_errors)); dynstr_append_mem(ds, "ERROR ",6); replace_dynstr_append(ds, mysql_stmt_sqlstate(stmt)); dynstr_append_mem(ds,": ",2); replace_dynstr_append(ds, mysql_stmt_error(stmt)); dynstr_append_mem(ds,"\n",1); if (i) { verbose_msg("query '%s' failed with wrong errno %d instead of %d...", q->query, mysql_stmt_errno(stmt), q->expected_errno[0]); return 1; /* Error */ } verbose_msg("query '%s' failed: %d: %s", q->query, mysql_stmt_errno(stmt), mysql_stmt_error(stmt)); /* if we do not abort on error, failure to run the query does not fail the whole test case */ return 0; } return 0; } /****************************************************************************\ * Functions to match SQL statements that can be prepared \****************************************************************************/ Loading Loading @@ -3898,6 +3836,22 @@ void get_query_type(struct st_query* q) q->type != Q_DISABLE_PARSING) q->type= Q_COMMENT; } else if (q->type == Q_COMMENT_WITH_COMMAND && q->query[q->first_word_len-1] == ';') { /* Detect comment with command using extra delimiter Ex --disable_query_log; ^ Extra delimiter causing the command to be skipped */ save= q->query[q->first_word_len-1]; q->query[q->first_word_len-1]= 0; type= find_type(q->query, &command_typelib, 1+2); q->query[q->first_word_len-1]= save; if (type > 0) die("Extra delimiter \";\" found"); } DBUG_VOID_RETURN; } Loading Loading @@ -4025,9 +3979,8 @@ int main(int argc, char **argv) embedded_server_args, (char**) embedded_server_groups)) die("Can't initialize MySQL server"); if (cur_file == file_stack) if (cur_file == file_stack && cur_file->file == 0) { DBUG_ASSERT(cur_file->file == 0); cur_file->file= stdin; cur_file->file_name= my_strdup("<stdin>", MYF(MY_WME)); } Loading
config/ac-macros/ha_federated.m4 +1 −1 Original line number Diff line number Diff line Loading @@ -6,7 +6,7 @@ AC_DEFUN([MYSQL_CHECK_FEDERATED], [ AC_ARG_WITH([federated-storage-engine], [ --with-federated-storage-engine Enable the MySQL Storage Engine], Enable the MySQL Federated Storage Engine], [federateddb="$withval"], [federateddb=no]) AC_MSG_CHECKING([for MySQL federated storage engine]) Loading