mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
Merge bk-internal:/home/bk/mysql-5.0
into dl145s.mysql.com:/data0/bk/team_tree_merge/MERGE/mysql-5.0-opt
This commit is contained in:
@@ -598,7 +598,7 @@ cli_safe_read(MYSQL *mysql)
|
||||
|
||||
if (len == packet_error || len == 0)
|
||||
{
|
||||
DBUG_PRINT("error",("Wrong connection or packet. fd: %s len: %d",
|
||||
DBUG_PRINT("error",("Wrong connection or packet. fd: %s len: %lu",
|
||||
vio_description(net->vio),len));
|
||||
#ifdef MYSQL_SERVER
|
||||
if (net->vio && vio_was_interrupted(net->vio))
|
||||
@@ -753,6 +753,29 @@ void set_mysql_error(MYSQL *mysql, int errcode, const char *sqlstate)
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
|
||||
static void set_mysql_extended_error(MYSQL *mysql, int errcode,
|
||||
const char *sqlstate,
|
||||
const char *format, ...)
|
||||
{
|
||||
NET *net;
|
||||
va_list args;
|
||||
DBUG_ENTER("set_mysql_extended_error");
|
||||
DBUG_PRINT("enter", ("error :%d '%s'", errcode, format));
|
||||
DBUG_ASSERT(mysql != 0);
|
||||
|
||||
net= &mysql->net;
|
||||
net->last_errno= errcode;
|
||||
va_start(args, format);
|
||||
my_vsnprintf(net->last_error, sizeof(net->last_error)-1,
|
||||
format, args);
|
||||
va_end(args);
|
||||
strmov(net->sqlstate, sqlstate);
|
||||
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Flush result set sent from server
|
||||
*/
|
||||
@@ -850,6 +873,7 @@ static int check_license(MYSQL *mysql)
|
||||
|
||||
void end_server(MYSQL *mysql)
|
||||
{
|
||||
int save_errno= errno;
|
||||
DBUG_ENTER("end_server");
|
||||
if (mysql->net.vio != 0)
|
||||
{
|
||||
@@ -862,6 +886,7 @@ void end_server(MYSQL *mysql)
|
||||
}
|
||||
net_end(&mysql->net);
|
||||
free_old_query(mysql);
|
||||
errno= save_errno;
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
@@ -870,7 +895,7 @@ void STDCALL
|
||||
mysql_free_result(MYSQL_RES *result)
|
||||
{
|
||||
DBUG_ENTER("mysql_free_result");
|
||||
DBUG_PRINT("enter",("mysql_res: %lx",result));
|
||||
DBUG_PRINT("enter",("mysql_res: 0x%lx", (long) result));
|
||||
if (result)
|
||||
{
|
||||
MYSQL *mysql= result->handle;
|
||||
@@ -1368,7 +1393,7 @@ MYSQL_DATA *cli_read_rows(MYSQL *mysql,MYSQL_FIELD *mysql_fields,
|
||||
DBUG_PRINT("info",("status: %u warning_count: %u",
|
||||
mysql->server_status, mysql->warning_count));
|
||||
}
|
||||
DBUG_PRINT("exit",("Got %d rows",result->rows));
|
||||
DBUG_PRINT("exit", ("Got %lu rows", (ulong) result->rows));
|
||||
DBUG_RETURN(result);
|
||||
}
|
||||
|
||||
@@ -2033,7 +2058,10 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
|
||||
if (mysql->options.connect_timeout &&
|
||||
vio_poll_read(net->vio, mysql->options.connect_timeout))
|
||||
{
|
||||
set_mysql_error(mysql, CR_SERVER_LOST, unknown_sqlstate);
|
||||
set_mysql_extended_error(mysql, CR_SERVER_LOST, unknown_sqlstate,
|
||||
ER(CR_SERVER_LOST_EXTENDED),
|
||||
"waiting for initial communication packet",
|
||||
errno);
|
||||
goto error;
|
||||
}
|
||||
|
||||
@@ -2042,8 +2070,14 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
|
||||
*/
|
||||
|
||||
if ((pkt_length=cli_safe_read(mysql)) == packet_error)
|
||||
{
|
||||
if (mysql->net.last_errno == CR_SERVER_LOST)
|
||||
set_mysql_extended_error(mysql, CR_SERVER_LOST, unknown_sqlstate,
|
||||
ER(CR_SERVER_LOST_EXTENDED),
|
||||
"reading initial communication packet",
|
||||
errno);
|
||||
goto error;
|
||||
|
||||
}
|
||||
/* Check if version of protocol matches current one */
|
||||
|
||||
mysql->protocol_version= net->read_pos[0];
|
||||
@@ -2177,7 +2211,10 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
|
||||
*/
|
||||
if (my_net_write(net,buff,(uint) (end-buff)) || net_flush(net))
|
||||
{
|
||||
set_mysql_error(mysql, CR_SERVER_LOST, unknown_sqlstate);
|
||||
set_mysql_extended_error(mysql, CR_SERVER_LOST, unknown_sqlstate,
|
||||
ER(CR_SERVER_LOST_EXTENDED),
|
||||
"sending connection information to server",
|
||||
errno);
|
||||
goto error;
|
||||
}
|
||||
|
||||
@@ -2256,7 +2293,10 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
|
||||
/* Write authentication package */
|
||||
if (my_net_write(net,buff,(ulong) (end-buff)) || net_flush(net))
|
||||
{
|
||||
set_mysql_error(mysql, CR_SERVER_LOST, unknown_sqlstate);
|
||||
set_mysql_extended_error(mysql, CR_SERVER_LOST, unknown_sqlstate,
|
||||
ER(CR_SERVER_LOST_EXTENDED),
|
||||
"sending authentication information",
|
||||
errno);
|
||||
goto error;
|
||||
}
|
||||
|
||||
@@ -2266,7 +2306,14 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
|
||||
*/
|
||||
|
||||
if ((pkt_length=cli_safe_read(mysql)) == packet_error)
|
||||
{
|
||||
if (mysql->net.last_errno == CR_SERVER_LOST)
|
||||
set_mysql_extended_error(mysql, CR_SERVER_LOST, unknown_sqlstate,
|
||||
ER(CR_SERVER_LOST_EXTENDED),
|
||||
"reading authorization packet",
|
||||
errno);
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (pkt_length == 1 && net->read_pos[0] == 254 &&
|
||||
mysql->server_capabilities & CLIENT_SECURE_CONNECTION)
|
||||
@@ -2278,12 +2325,22 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
|
||||
scramble_323(buff, mysql->scramble, passwd);
|
||||
if (my_net_write(net, buff, SCRAMBLE_LENGTH_323 + 1) || net_flush(net))
|
||||
{
|
||||
set_mysql_error(mysql, CR_SERVER_LOST, unknown_sqlstate);
|
||||
set_mysql_extended_error(mysql, CR_SERVER_LOST, unknown_sqlstate,
|
||||
ER(CR_SERVER_LOST_EXTENDED),
|
||||
"sending password information",
|
||||
errno);
|
||||
goto error;
|
||||
}
|
||||
/* Read what server thinks about out new auth message report */
|
||||
if (cli_safe_read(mysql) == packet_error)
|
||||
{
|
||||
if (mysql->net.last_errno == CR_SERVER_LOST)
|
||||
set_mysql_extended_error(mysql, CR_SERVER_LOST, unknown_sqlstate,
|
||||
ER(CR_SERVER_LOST_EXTENDED),
|
||||
"reading final connect information",
|
||||
errno);
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
|
||||
if (client_flag & CLIENT_COMPRESS) /* We will use compression */
|
||||
@@ -2294,8 +2351,15 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
|
||||
goto error;
|
||||
#endif
|
||||
|
||||
if (db && mysql_select_db(mysql,db))
|
||||
if (db && mysql_select_db(mysql, db))
|
||||
{
|
||||
if (mysql->net.last_errno == CR_SERVER_LOST)
|
||||
set_mysql_extended_error(mysql, CR_SERVER_LOST, unknown_sqlstate,
|
||||
ER(CR_SERVER_LOST_EXTENDED),
|
||||
"Setting intital database",
|
||||
errno);
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (mysql->options.init_commands)
|
||||
{
|
||||
@@ -2326,7 +2390,7 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
|
||||
goto error;
|
||||
#endif
|
||||
|
||||
DBUG_PRINT("exit",("Mysql handler: %lx",mysql));
|
||||
DBUG_PRINT("exit", ("Mysql handler: 0x%lx", (long) mysql));
|
||||
reset_sigpipe(mysql);
|
||||
DBUG_RETURN(mysql);
|
||||
|
||||
@@ -2699,7 +2763,7 @@ int STDCALL
|
||||
mysql_real_query(MYSQL *mysql, const char *query, ulong length)
|
||||
{
|
||||
DBUG_ENTER("mysql_real_query");
|
||||
DBUG_PRINT("enter",("handle: %lx",mysql));
|
||||
DBUG_PRINT("enter",("handle: 0x%lx", (long) mysql));
|
||||
DBUG_PRINT("query",("Query = '%-.4096s'",query));
|
||||
|
||||
if (mysql_send_query(mysql,query,length))
|
||||
|
||||
Reference in New Issue
Block a user