1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00

Merge 10.6 into 10.8

This commit is contained in:
Marko Mäkelä
2023-04-26 13:58:40 +03:00
94 changed files with 2402 additions and 655 deletions

View File

@@ -2213,7 +2213,7 @@ int spider_db_mbase::exec_query(
db_conn->affected_rows, db_conn->insert_id,
db_conn->server_status, db_conn->warning_count);
if (spider_param_log_result_errors() >= 3)
print_warnings(l_time);
fetch_and_print_warnings(l_time);
} else if (log_result_errors >= 4)
{
time_t cur_time = (time_t) time((time_t*) 0);
@@ -2295,82 +2295,44 @@ bool spider_db_mbase::is_xa_nota_error(
DBUG_RETURN(xa_nota);
}
int spider_db_mbase::print_warnings(
struct tm *l_time
) {
int error_num = 0;
DBUG_ENTER("spider_db_mbase::print_warnings");
DBUG_PRINT("info",("spider this=%p", this));
if (db_conn->status == MYSQL_STATUS_READY)
void spider_db_mbase::fetch_and_print_warnings(struct tm *l_time)
{
DBUG_ENTER("spider_db_mbase::fetch_and_print_warnings");
if (spider_param_dry_access() || db_conn->status != MYSQL_STATUS_READY ||
db_conn->server_status & SERVER_MORE_RESULTS_EXISTS)
DBUG_VOID_RETURN;
if (mysql_real_query(db_conn, SPIDER_SQL_SHOW_WARNINGS_STR,
SPIDER_SQL_SHOW_WARNINGS_LEN))
DBUG_VOID_RETURN;
MYSQL_RES *res= mysql_store_result(db_conn);
if (!res)
DBUG_VOID_RETURN;
uint num_fields= mysql_num_fields(res);
if (num_fields != 3)
{
if (
#if MYSQL_VERSION_ID < 50500
!(db_conn->last_used_con->server_status & SERVER_MORE_RESULTS_EXISTS) &&
db_conn->last_used_con->warning_count
#else
!(db_conn->server_status & SERVER_MORE_RESULTS_EXISTS) &&
db_conn->warning_count
#endif
) {
if (
spider_param_dry_access() ||
!mysql_real_query(db_conn, SPIDER_SQL_SHOW_WARNINGS_STR,
SPIDER_SQL_SHOW_WARNINGS_LEN)
) {
MYSQL_RES *res = NULL;
MYSQL_ROW row = NULL;
uint num_fields;
if (
spider_param_dry_access() ||
!(res = mysql_store_result(db_conn)) ||
!(row = mysql_fetch_row(res))
) {
if (mysql_errno(db_conn))
{
if (res)
mysql_free_result(res);
DBUG_RETURN(0);
}
/* no record is ok */
}
num_fields = mysql_num_fields(res);
if (num_fields != 3)
{
mysql_free_result(res);
DBUG_RETURN(0);
}
if (l_time)
{
while (row)
{
fprintf(stderr, "%04d%02d%02d %02d:%02d:%02d [WARN SPIDER RESULT] "
"from [%s] %ld to %ld: %s %s %s\n",
l_time->tm_year + 1900, l_time->tm_mon + 1, l_time->tm_mday,
l_time->tm_hour, l_time->tm_min, l_time->tm_sec,
conn->tgt_host, (ulong) db_conn->thread_id,
(ulong) current_thd->thread_id, row[0], row[1], row[2]);
row = mysql_fetch_row(res);
}
} else {
while (row)
{
DBUG_PRINT("info",("spider row[0]=%s", row[0]));
DBUG_PRINT("info",("spider row[1]=%s", row[1]));
DBUG_PRINT("info",("spider row[2]=%s", row[2]));
longlong res_num =
(longlong) my_strtoll10(row[1], (char**) NULL, &error_num);
DBUG_PRINT("info",("spider res_num=%lld", res_num));
my_printf_error((int) res_num, row[2], MYF(0));
error_num = (int) res_num;
row = mysql_fetch_row(res);
}
}
if (res)
mysql_free_result(res);
}
}
mysql_free_result(res);
DBUG_VOID_RETURN;
}
DBUG_RETURN(error_num);
MYSQL_ROW row= mysql_fetch_row(res);
while (row)
{
fprintf(stderr,
"%04d%02d%02d %02d:%02d:%02d [WARN SPIDER RESULT] from [%s] %ld "
"to %ld: %s %s %s\n",
l_time->tm_year + 1900, l_time->tm_mon + 1, l_time->tm_mday,
l_time->tm_hour, l_time->tm_min, l_time->tm_sec, conn->tgt_host,
(ulong) db_conn->thread_id, (ulong) current_thd->thread_id, row[0],
row[1], row[2]);
row= mysql_fetch_row(res);
}
mysql_free_result(res);
DBUG_VOID_RETURN;
}
spider_db_result *spider_db_mbase::store_result(
@@ -14474,9 +14436,11 @@ int spider_mbase_handler::show_table_status(
DBUG_RETURN(error_num);
}
}
if ((error_num = ((spider_db_mbase *) conn->db_conn)->print_warnings(NULL)))
{
DBUG_RETURN(error_num);
time_t cur_time = (time_t) time((time_t*) 0);
struct tm lt;
struct tm *l_time = localtime_r(&cur_time, &lt);
((spider_db_mbase *) conn->db_conn)->fetch_and_print_warnings(l_time);
}
if (share->static_records_for_status != -1)
{