1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

Merge ramayana.hindu.god:/home/tsmith/m/bk/build/b25146/51

into  ramayana.hindu.god:/home/tsmith/m/bk/build/51
This commit is contained in:
tsmith@ramayana.hindu.god
2007-11-20 20:35:14 -07:00
3 changed files with 54 additions and 23 deletions

View File

@ -2207,33 +2207,26 @@ com_go(String *buffer,char *line __attribute__((unused)))
}
#endif
if (error)
{
executing_query= 0;
buffer->length(0); // Remove query on error
return error;
}
error=0;
buffer->length(0);
if (error)
goto end;
do
{
if (quick)
{
if (!(result=mysql_use_result(&mysql)) && mysql_field_count(&mysql))
{
executing_query= 0;
return put_error(&mysql);
error= put_error(&mysql);
goto end;
}
}
else
{
error= mysql_store_result_for_lazy(&result);
if (error)
{
executing_query= 0;
return error;
}
goto end;
}
if (verbose >= 3 || !opt_silent)
@ -2310,12 +2303,10 @@ com_go(String *buffer,char *line __attribute__((unused)))
if (err >= 1)
error= put_error(&mysql);
end:
if (show_warnings == 1 && warnings >= 1) /* Show warnings if any */
{
init_pager();
print_warnings();
end_pager();
}
if (!error && !status.batch &&
(mysql.server_status & SERVER_STATUS_DB_DROPPED))
@ -2740,6 +2731,9 @@ static void print_warnings()
MYSQL_RES *result;
MYSQL_ROW cur;
my_ulonglong num_rows;
/* Save current error before calling "show warnings" */
uint error= mysql_errno(&mysql);
/* Get the warnings */
query= "show warnings";
@ -2748,16 +2742,28 @@ static void print_warnings()
/* Bail out when no warnings */
if (!(num_rows= mysql_num_rows(result)))
{
mysql_free_result(result);
return;
}
goto end;
cur= mysql_fetch_row(result);
/*
Don't print a duplicate of the current error. It is possible for SHOW
WARNINGS to return multiple errors with the same code, but different
messages. To be safe, skip printing the duplicate only if it is the only
warning.
*/
if (!cur || num_rows == 1 && error == (uint) strtoul(cur[1], NULL, 10))
goto end;
/* Print the warnings */
while ((cur= mysql_fetch_row(result)))
init_pager();
do
{
tee_fprintf(PAGER, "%s (Code %s): %s\n", cur[0], cur[1], cur[2]);
}
} while ((cur= mysql_fetch_row(result)));
end_pager();
end:
mysql_free_result(result);
}