List:Commits« Previous MessageNext Message »
From:Kristofer Pettersson Date:July 3 2009 11:35am
Subject:bzr commit into mysql-5.1-bugteam branch (kristofer.pettersson:2994)
Bug#37274
View as plain text  
#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.
      
      The patch is based on a contribution originally suggested by Andrew Hutchings.
     @ 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 09:35:04 +0000
@@ -4263,42 +4263,39 @@ com_status(String *buffer __attribute__(
   ulonglong id;
   MYSQL_RES *result;
   LINT_INIT(result);
+  const char *query;
+
+  query= "select DATABASE(), USER() limit 1";
+  if (mysql_real_query_for_lazy(query, strlen(query)))
+    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
+  */
+  query= "select DATABASE(), USER() limit 1";
+  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 +4314,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)))
+  query= "select @@character_set_client, @@character_set_connection, "
+         "@@character_set_server, @@character_set_database limit 1";
+  if (mysql_real_query_for_lazy(query, strlen(query)))
+  {
+    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)


Attachment: [text/bzr-bundle]
Thread
bzr commit into mysql-5.1-bugteam branch (kristofer.pettersson:2994)Bug#37274Kristofer Pettersson3 Jul
  • Re: bzr commit into mysql-5.1-bugteam branch(kristofer.pettersson:2994) Bug#37274Gleb Shchepa3 Jul
    • Re: bzr commit into mysql-5.1-bugteam branch(kristofer.pettersson:2994) Bug#37274Kristofer Pettersson3 Jul