]> git.sven.stormbind.net Git - sven/mysqltcl.git/blobdiff - generic/mysqltcl.c
Imported Upstream version 3.051
[sven/mysqltcl.git] / generic / mysqltcl.c
index cd79a07c3d9638c00dd09539d151da022c61156f..1269e85596e141fdb9dbafb819c7708684b4def3 100755 (executable)
@@ -36,7 +36,7 @@
 #ifdef _WINDOWS\r
    #include <windows.h>\r
    #define PACKAGE "mysqltcl"\r
-   #define PACKAGE_VERSION "3.04"\r
+   #define PACKAGE_VERSION "3.051"\r
 #endif\r
 \r
 #include <tcl.h>\r
@@ -728,13 +728,14 @@ static CONST char* MysqlConnectOpt[] =
       "-multistatement","-multiresult",\r
 #endif\r
       "-localfiles","-ignorespace","-foundrows","-interactive","-sslkey","-sslcert",\r
-      "-sslca","-sslcapath","-sslciphers",NULL\r
+      "-sslca","-sslcapath","-sslciphers","-reconnect", NULL\r
     };\r
 \r
 static int Mysqltcl_Connect(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])\r
 {\r
   MysqltclState *statePtr = (MysqltclState *)clientData; \r
   int        i, idx;\r
+  int        mysql_options_reconnect = 0;\r
   char *hostname = NULL;\r
   char *user = NULL;\r
   char *password = NULL;\r
@@ -765,12 +766,12 @@ static int Mysqltcl_Connect(ClientData clientData, Tcl_Interp *interp, int objc,
 #endif\r
     MYSQL_LOCALFILES_OPT,MYSQL_IGNORESPACE_OPT,\r
     MYSQL_FOUNDROWS_OPT,MYSQL_INTERACTIVE_OPT,MYSQL_SSLKEY_OPT,MYSQL_SSLCERT_OPT,\r
-    MYSQL_SSLCA_OPT,MYSQL_SSLCAPATH_OPT,MYSQL_SSLCIPHERS_OPT\r
+    MYSQL_SSLCA_OPT,MYSQL_SSLCAPATH_OPT,MYSQL_SSLCIPHERS_OPT, MYSQL_RECONNECT_OPT\r
   };\r
 \r
   if (!(objc & 1) || \r
     objc>(sizeof(MysqlConnectOpt)/sizeof(MysqlConnectOpt[0]-1)*2+1)) {\r
-    Tcl_WrongNumArgs(interp, 1, objv, "[-user xxx] [-db mysql] [-port 3306] [-host localhost] [-socket sock] [-password pass] [-encoding encoding] [-ssl boolean] [-compress boolean] [-odbc boolean] [-noschema boolean]"\r
+    Tcl_WrongNumArgs(interp, 1, objv, "[-user xxx] [-db mysql] [-port 3306] [-host localhost] [-socket sock] [-password pass] [-encoding encoding] [-ssl boolean] [-compress boolean] [-odbc boolean] [-noschema boolean] [-reconnect boolean]"\r
     );\r
        return TCL_ERROR;\r
   }\r
@@ -885,6 +886,12 @@ static int Mysqltcl_Connect(ClientData clientData, Tcl_Interp *interp, int objc,
     case MYSQL_SSLCIPHERS_OPT:\r
       sslcipher = Tcl_GetStringFromObj(objv[++i],NULL);\r
       break;\r
+    case MYSQL_RECONNECT_OPT:\r
+      if (Tcl_GetBooleanFromObj(interp,objv[++i],&booleanflag) != TCL_OK )\r
+       return TCL_ERROR;\r
+      if (booleanflag)\r
+        mysql_options_reconnect = 1;\r
+      break;\r
     default:\r
       return mysql_prim_confl(interp,objc,objv,"Weirdness in options");            \r
     }\r
@@ -902,6 +909,11 @@ static int Mysqltcl_Connect(ClientData clientData, Tcl_Interp *interp, int objc,
 \r
   /* the function below caused in version pre 3.23.50 segmentation fault */\r
 #if (MYSQL_VERSION_ID>=32350)\r
+  if(mysql_options_reconnect)\r
+  {\r
+      my_bool reconnect = 1;\r
+      mysql_options(handle->connection, MYSQL_OPT_RECONNECT, &reconnect);\r
+  }\r
   mysql_options(handle->connection,MYSQL_READ_DEFAULT_GROUP,groupname);\r
 #endif\r
 #if (MYSQL_VERSION_ID >= 40107)\r
@@ -2245,7 +2257,7 @@ static int Mysqltcl_NewNull(ClientData clientData, Tcl_Interp *interp, int objc,
 #if (MYSQL_VERSION_ID >= 40107)\r
 static CONST char* MysqlServerOpt[] =\r
     {\r
-      "-multi_statment_on", "-multi_statment_off",NULL\r
+      "-multi_statment_on", "-multi_statment_off", "-auto_reconnect_on", "-auto_reconnect_off", NULL\r
     };\r
 #endif\r
  \r
@@ -2755,3 +2767,4 @@ int Mysqltcl_SafeInit(interp)
 {\r
   return Mysqltcl_Init(interp);\r
 }\r
+