From: Date: July 3 2009 1:55pm Subject: bzr commit into mysql-5.1-bugteam branch (kristofer.pettersson:2994) Bug#37274 List-Archive: http://lists.mysql.com/commits/77891 X-Bug: 37274 Message-Id: <0KM7006QBFTBZY50@fe-emea-09.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="Boundary_(ID_GGLC53WhUCxvAB+4B0vQiw)" --Boundary_(ID_GGLC53WhUCxvAB+4B0vQiw) MIME-version: 1.0 Content-type: text/plain; CHARSET=US-ASCII Content-transfer-encoding: 7BIT Content-disposition: inline #At file:///Users/thek/Development/mysql-5.0-bugteam/ based on revid:joro@stripped 2994 Kristofer Pettersson 2009-07-03 Bug#37274 client 'status' command doesn't print all info after losing connection to server If the server connection was lost during repeated status commands, the client would fail to detect this and the client output would be inconsistent. This patch fixes this issue by making sure that the server is online before the client attempts to execute the status command. @ client/mysql.cc * Replace variable "connected" with a call to mysql_real_query_for_lazy() will attempt to reconnect to server on if there is a failure. modified: client/mysql.cc === modified file 'client/mysql.cc' --- a/client/mysql.cc 2009-06-29 14:00:47 +0000 +++ b/client/mysql.cc 2009-07-03 11:55:45 +0000 @@ -4264,41 +4264,36 @@ com_status(String *buffer __attribute__( MYSQL_RES *result; LINT_INIT(result); + if (mysql_real_query_for_lazy( + C_STRING_WITH_LEN("select DATABASE(), USER() limit 1"))) + return 0; + tee_puts("--------------", stdout); usage(1); /* Print version */ - if (connected) + tee_fprintf(stdout, "\nConnection id:\t\t%lu\n",mysql_thread_id(&mysql)); + /* + Don't remove "limit 1", + it is protection againts SQL_SELECT_LIMIT=0 + */ + if (mysql_store_result_for_lazy(&result)) { - tee_fprintf(stdout, "\nConnection id:\t\t%lu\n",mysql_thread_id(&mysql)); - /* - Don't remove "limit 1", - it is protection againts SQL_SELECT_LIMIT=0 - */ - if (!mysql_query(&mysql,"select DATABASE(), USER() limit 1") && - (result=mysql_use_result(&mysql))) + MYSQL_ROW cur=mysql_fetch_row(result); + if (cur) { - MYSQL_ROW cur=mysql_fetch_row(result); - if (cur) - { - tee_fprintf(stdout, "Current database:\t%s\n", cur[0] ? cur[0] : ""); - tee_fprintf(stdout, "Current user:\t\t%s\n", cur[1]); - } - mysql_free_result(result); - } -#ifdef HAVE_OPENSSL - if ((status_str= mysql_get_ssl_cipher(&mysql))) - tee_fprintf(stdout, "SSL:\t\t\tCipher in use is %s\n", - status_str); - else -#endif /* HAVE_OPENSSL */ - tee_puts("SSL:\t\t\tNot in use", stdout); + tee_fprintf(stdout, "Current database:\t%s\n", cur[0] ? cur[0] : ""); + tee_fprintf(stdout, "Current user:\t\t%s\n", cur[1]); + } + mysql_free_result(result); } + +#ifdef HAVE_OPENSSL + if ((status_str= mysql_get_ssl_cipher(&mysql))) + tee_fprintf(stdout, "SSL:\t\t\tCipher in use is %s\n", + status_str); else - { - vidattr(A_BOLD); - tee_fprintf(stdout, "\nNo connection\n"); - vidattr(A_NORMAL); - return 0; - } +#endif /* HAVE_OPENSSL */ + tee_puts("SSL:\t\t\tNot in use", stdout); + if (skip_updates) { vidattr(A_BOLD); @@ -4317,8 +4312,14 @@ com_status(String *buffer __attribute__( tee_fprintf(stdout, "Insert id:\t\t%s\n", llstr(id, buff)); /* "limit 1" is protection against SQL_SELECT_LIMIT=0 */ - if (!mysql_query(&mysql,"select @@character_set_client, @@character_set_connection, @@character_set_server, @@character_set_database limit 1") && - (result=mysql_use_result(&mysql))) + if (mysql_real_query_for_lazy(C_STRING_WITH_LEN( + "select @@character_set_client, @@character_set_connection, " + "@@character_set_server, @@character_set_database limit 1"))) + { + if (mysql_errno(&mysql) == CR_SERVER_GONE_ERROR) + return 0; + } + if (mysql_store_result_for_lazy(&result)) { MYSQL_ROW cur=mysql_fetch_row(result); if (cur) --Boundary_(ID_GGLC53WhUCxvAB+4B0vQiw) MIME-version: 1.0 Content-type: text/bzr-bundle; CHARSET=US-ASCII; name*0="bzr/kristofer.pettersson@stripped"; name*1=3115545-h1tkji5uny5b4fza.bundle Content-transfer-encoding: 7BIT Content-disposition: inline; filename*0="bzr/kristofer.pettersson@stripped"; filename*1=3115545-h1tkji5uny5b4fza.bundle # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: kristofer.pettersson@stripped\ # h1tkji5uny5b4fza # target_branch: file:///Users/thek/Development/mysql-5.0-bugteam/ # testament_sha1: 20d2ae5f960e9596c970036d0d4301dc0908f875 # timestamp: 2009-07-03 13:55:55 +0200 # base_revision_id: joro@stripped # # Begin bundle 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 --Boundary_(ID_GGLC53WhUCxvAB+4B0vQiw)--