mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Merge mysql.com:/home/my/mysql-5.0
into mysql.com:/home/my/mysql-5.1 client/mysqldump.c: Auto merged include/errmsg.h: Auto merged mysql-test/mysql-test-run.pl: Auto merged sql-common/client.c: Auto merged mysql-test/mysql-test-run-shell.sh: SCCS merged
This commit is contained in:
@@ -748,6 +748,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
|
||||
*/
|
||||
@@ -845,6 +868,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)
|
||||
{
|
||||
@@ -857,6 +881,7 @@ void end_server(MYSQL *mysql)
|
||||
}
|
||||
net_end(&mysql->net);
|
||||
free_old_query(mysql);
|
||||
errno= save_errno;
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
@@ -2026,7 +2051,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;
|
||||
}
|
||||
|
||||
@@ -2035,8 +2063,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];
|
||||
@@ -2170,7 +2204,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;
|
||||
}
|
||||
|
||||
@@ -2249,7 +2286,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;
|
||||
}
|
||||
|
||||
@@ -2259,7 +2299,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)
|
||||
@@ -2271,12 +2318,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 */
|
||||
@@ -2287,8 +2344,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)
|
||||
{
|
||||
|
Reference in New Issue
Block a user