Loading libmysqld/lib_sql.cc +2 −0 Original line number Diff line number Diff line Loading @@ -73,6 +73,7 @@ void embedded_get_error(MYSQL *mysql, MYSQL_DATA *data) net->last_errno= ei->last_errno; strmake(net->last_error, ei->info, sizeof(net->last_error)); memcpy(net->sqlstate, ei->sqlstate, sizeof(net->sqlstate)); mysql->server_status= ei->server_status; my_free((gptr) data, MYF(0)); } Loading Loading @@ -1027,6 +1028,7 @@ void net_send_error_packet(THD *thd, uint sql_errno, const char *err) ei->last_errno= sql_errno; strmake(ei->info, err, sizeof(ei->info)-1); strmov(ei->sqlstate, mysql_errno_to_sqlstate(sql_errno)); ei->server_status= thd->server_status; thd->cur_data= 0; } Loading sql/protocol.cc +3 −2 Original line number Diff line number Diff line Loading @@ -110,13 +110,14 @@ void net_send_error(THD *thd, uint sql_errno, const char *err) push_warning(thd, MYSQL_ERROR::WARN_LEVEL_ERROR, sql_errno, err); } /* Abort multi-result sets */ thd->server_status&= ~SERVER_MORE_RESULTS_EXISTS; net_send_error_packet(thd, sql_errno, err); thd->is_fatal_error=0; // Error message is given thd->net.report_error= 0; /* Abort multi-result sets */ thd->server_status&= ~SERVER_MORE_RESULTS_EXISTS; DBUG_VOID_RETURN; } Loading tests/mysql_client_test.c +14 −0 Original line number Diff line number Diff line Loading @@ -5643,6 +5643,20 @@ DROP TABLE IF EXISTS test_multi_tab"; (void) my_process_result_set(result); mysql_free_result(result); /* Check if errors in one of the queries handled properly. */ rc= mysql_query(mysql_local, "select 1; select * from not_existing_table"); myquery(rc); result= mysql_store_result(mysql_local); mysql_free_result(result); rc= mysql_next_result(mysql_local); DIE_UNLESS(rc > 0); rc= mysql_next_result(mysql_local); DIE_UNLESS(rc < 0); mysql_close(mysql_local); } Loading Loading
libmysqld/lib_sql.cc +2 −0 Original line number Diff line number Diff line Loading @@ -73,6 +73,7 @@ void embedded_get_error(MYSQL *mysql, MYSQL_DATA *data) net->last_errno= ei->last_errno; strmake(net->last_error, ei->info, sizeof(net->last_error)); memcpy(net->sqlstate, ei->sqlstate, sizeof(net->sqlstate)); mysql->server_status= ei->server_status; my_free((gptr) data, MYF(0)); } Loading Loading @@ -1027,6 +1028,7 @@ void net_send_error_packet(THD *thd, uint sql_errno, const char *err) ei->last_errno= sql_errno; strmake(ei->info, err, sizeof(ei->info)-1); strmov(ei->sqlstate, mysql_errno_to_sqlstate(sql_errno)); ei->server_status= thd->server_status; thd->cur_data= 0; } Loading
sql/protocol.cc +3 −2 Original line number Diff line number Diff line Loading @@ -110,13 +110,14 @@ void net_send_error(THD *thd, uint sql_errno, const char *err) push_warning(thd, MYSQL_ERROR::WARN_LEVEL_ERROR, sql_errno, err); } /* Abort multi-result sets */ thd->server_status&= ~SERVER_MORE_RESULTS_EXISTS; net_send_error_packet(thd, sql_errno, err); thd->is_fatal_error=0; // Error message is given thd->net.report_error= 0; /* Abort multi-result sets */ thd->server_status&= ~SERVER_MORE_RESULTS_EXISTS; DBUG_VOID_RETURN; } Loading
tests/mysql_client_test.c +14 −0 Original line number Diff line number Diff line Loading @@ -5643,6 +5643,20 @@ DROP TABLE IF EXISTS test_multi_tab"; (void) my_process_result_set(result); mysql_free_result(result); /* Check if errors in one of the queries handled properly. */ rc= mysql_query(mysql_local, "select 1; select * from not_existing_table"); myquery(rc); result= mysql_store_result(mysql_local); mysql_free_result(result); rc= mysql_next_result(mysql_local); DIE_UNLESS(rc > 0); rc= mysql_next_result(mysql_local); DIE_UNLESS(rc < 0); mysql_close(mysql_local); } Loading