List:Commits« Previous MessageNext Message »
From:msvensson Date:January 30 2006 10:02am
Subject:bk commit into 5.0 tree (msvensson:1.2013)
View as plain text  
Below is the list of changes that have just been committed into a local
5.0 repository of msvensson. When msvensson does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet
  1.2013 06/01/30 11:02:09 msvensson@neptunus.(none) +2 -0
  Merge neptunus.(none):/home/msvensson/mysql/bug15719/my50-bug15719
  into  neptunus.(none):/home/msvensson/mysql/mysql-5.0

  tests/mysql_client_test.c
    1.170 06/01/30 11:02:05 msvensson@neptunus.(none) +0 -1
    Merge

  sql-common/client.c
    1.83 06/01/30 11:01:31 msvensson@neptunus.(none) +0 -0
    Auto merged

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	msvensson
# Host:	neptunus.(none)
# Root:	/home/msvensson/mysql/mysql-5.0/RESYNC

--- 1.82/sql-common/client.c	2006-01-03 17:54:34 +01:00
+++ 1.83/sql-common/client.c	2006-01-30 11:01:31 +01:00
@@ -1456,6 +1456,24 @@
 
   mysql->options.methods_to_use= MYSQL_OPT_GUESS_CONNECTION;
   mysql->options.report_data_truncation= TRUE;  /* default */
+
+  /*
+    By default we don't reconnect because it could silently corrupt data (after
+    reconnection you potentially lose table locks, user variables, session
+    variables (transactions but they are specifically dealt with in
+    mysql_reconnect()).
+    This is a change: < 5.0.3 mysql->reconnect was set to 1 by default.
+    How this change impacts existing apps:
+    - existing apps which relyed on the default will see a behaviour change;
+    they will have to set reconnect=1 after mysql_real_connect().
+    - existing apps which explicitely asked for reconnection (the only way they
+    could do it was by setting mysql.reconnect to 1 after mysql_real_connect())
+    will not see a behaviour change.
+    - existing apps which explicitely asked for no reconnection
+    (mysql.reconnect=0) will not see a behaviour change.
+  */
+  mysql->reconnect= 0;
+
   return mysql;
 }
 
@@ -1624,23 +1642,6 @@
     port=mysql->options.port;
   if (!unix_socket)
     unix_socket=mysql->options.unix_socket;
-  
-  /*
-    By default we don't reconnect because it could silently corrupt data (after
-    reconnection you potentially lose table locks, user variables, session
-    variables (transactions but they are specifically dealt with in
-    mysql_reconnect()).
-    This is a change: < 5.0.3 mysql->reconnect was set to 1 by default.
-    How this change impacts existing apps:
-    - existing apps which relyed on the default will see a behaviour change;
-    they will have to set reconnect=1 after mysql_real_connect().
-    - existing apps which explicitely asked for reconnection (the only way they
-    could do it was by setting mysql.reconnect to 1 after mysql_real_connect())
-    will not see a behaviour change.
-    - existing apps which explicitely asked for no reconnection
-    (mysql.reconnect=0) will not see a behaviour change.
-  */
-  mysql->reconnect= 0;
 
   mysql->server_status=SERVER_STATUS_AUTOCOMMIT;
 

--- 1.169/tests/mysql_client_test.c	2006-01-19 12:01:15 +01:00
+++ 1.170/tests/mysql_client_test.c	2006-01-30 11:02:05 +01:00
@@ -14598,7 +14598,6 @@
 static void test_bug15510()
 {
   MYSQL_STMT *stmt;
-  MYSQL_RES *res;
   int rc;
   const char *query= "select 1 from dual where 1/0";
 
@@ -14624,6 +14623,80 @@
   myquery(rc);
 }
 
+
+/* Test MYSQL_OPT_RECONNECT, Bug#15719 */
+
+static void test_opt_reconnect()
+{
+  MYSQL *lmysql;
+  my_bool my_true= TRUE;
+
+  myheader("test_opt_reconnect");
+
+  if (!(lmysql= mysql_init(NULL)))
+  {
+    myerror("mysql_init() failed");
+    exit(1);
+  }
+
+  if (!opt_silent)
+    fprintf(stdout, "reconnect before mysql_options: %d\n", lmysql->reconnect);
+  DIE_UNLESS(lmysql->reconnect == 0);
+
+  if (mysql_options(lmysql, MYSQL_OPT_RECONNECT, &my_true))
+  {
+    myerror("mysql_options failed: unknown option MYSQL_OPT_RECONNECT\n");
+    exit(1);
+  }
+
+  /* reconnect should be 1 */
+  if (!opt_silent)
+    fprintf(stdout, "reconnect after mysql_options: %d\n", lmysql->reconnect);
+  DIE_UNLESS(lmysql->reconnect == 1);
+
+  if (!(mysql_real_connect(lmysql, opt_host, opt_user,
+                           opt_password, current_db, opt_port,
+                           opt_unix_socket, 0)))
+  {
+    myerror("connection failed");
+    exit(1);
+  }
+
+  /* reconnect should still be 1 */
+  if (!opt_silent)
+    fprintf(stdout, "reconnect after mysql_real_connect: %d\n",
+	    lmysql->reconnect);
+  DIE_UNLESS(lmysql->reconnect == 1);
+
+  mysql_close(lmysql);
+
+  if (!(lmysql= mysql_init(NULL)))
+  {
+    myerror("mysql_init() failed");
+    exit(1);
+  }
+
+  if (!opt_silent)
+    fprintf(stdout, "reconnect before mysql_real_connect: %d\n", lmysql->reconnect);
+  DIE_UNLESS(lmysql->reconnect == 0);
+
+  if (!(mysql_real_connect(lmysql, opt_host, opt_user,
+                           opt_password, current_db, opt_port,
+                           opt_unix_socket, 0)))
+  {
+    myerror("connection failed");
+    exit(1);
+  }
+
+  /* reconnect should still be 0 */
+  if (!opt_silent)
+    fprintf(stdout, "reconnect after mysql_real_connect: %d\n",
+	    lmysql->reconnect);
+  DIE_UNLESS(lmysql->reconnect == 0);
+
+  mysql_close(lmysql);
+}
+
 /* Bug #16144: mysql_stmt_attr_get type error */
 
 static void test_bug16144()
@@ -14964,7 +15037,9 @@
   { "test_bug13488", test_bug13488 },
   { "test_bug13524", test_bug13524 },
   { "test_bug14845", test_bug14845 },
-  { "test_bug15510", test_bug15510},
+  { "test_bug15510", test_bug15510 },
+  { "test_opt_reconnect", test_opt_reconnect },
+
   { "test_bug16144", test_bug16144 },
   { "test_bug15613", test_bug15613 },
   { 0, 0 }
Thread
bk commit into 5.0 tree (msvensson:1.2013)msvensson30 Jan