1 --- generic/mysqltcl.c.orig 2008-04-02 16:46:38.000000000 +0200
2 +++ generic/mysqltcl.c 2008-04-02 16:52:11.000000000 +0200
7 -#if (MYSQL_VERSION_ID<40100)
8 - #error You need Mysql version 4.1 or higher to compile mysqltcl
16 #define MYSQL_STATUS_MSG "message"
17 #define MYSQL_STATUS_NULLV "nullvalue"
19 +#define FUNCTION_NOT_AVAILABLE "function not available"
21 /* C variable corresponding to mysqlstatus(nullvalue) */
22 #define MYSQL_NULLV_INIT ""
25 static CONST char* MysqlConnectOpt[] =
27 "-host", "-user", "-password", "-db", "-port", "-socket","-encoding",
28 - "-ssl", "-compress", "-noschema","-odbc","-multistatement","-multiresult",
29 + "-ssl", "-compress", "-noschema","-odbc",
30 +#if (MYSQL_VERSION_ID >= 40107)
31 + "-multistatement","-multiresult",
33 "-localfiles","-ignorespace","-foundrows","-interactive","-sslkey","-sslcert",
34 "-sslca","-sslcapath","-sslciphers",NULL
38 char *encodingname = NULL;
40 +#if (MYSQL_VERSION_ID >= 40107)
47 MYSQL_CONNHOST_OPT, MYSQL_CONNUSER_OPT, MYSQL_CONNPASSWORD_OPT,
48 MYSQL_CONNDB_OPT, MYSQL_CONNPORT_OPT, MYSQL_CONNSOCKET_OPT, MYSQL_CONNENCODING_OPT,
49 MYSQL_CONNSSL_OPT, MYSQL_CONNCOMPRESS_OPT, MYSQL_CONNNOSCHEMA_OPT, MYSQL_CONNODBC_OPT,
50 - MYSQL_MULTISTATEMENT_OPT,MYSQL_MULTIRESULT_OPT,MYSQL_LOCALFILES_OPT,MYSQL_IGNORESPACE_OPT,
51 +#if (MYSQL_VERSION_ID >= 40107)
52 + MYSQL_MULTISTATEMENT_OPT,MYSQL_MULTIRESULT_OPT,
54 + MYSQL_LOCALFILES_OPT,MYSQL_IGNORESPACE_OPT,
55 MYSQL_FOUNDROWS_OPT,MYSQL_INTERACTIVE_OPT,MYSQL_SSLKEY_OPT,MYSQL_SSLCERT_OPT,
56 MYSQL_SSLCA_OPT,MYSQL_SSLCAPATH_OPT,MYSQL_SSLCIPHERS_OPT
59 encodingname = Tcl_GetStringFromObj(objv[++i],NULL);
61 case MYSQL_CONNSSL_OPT:
62 +#if (MYSQL_VERSION_ID >= 40107)
63 if (Tcl_GetBooleanFromObj(interp,objv[++i],&isSSL) != TCL_OK )
66 + if (Tcl_GetBooleanFromObj(interp,objv[++i],&booleanflag) != TCL_OK )
69 + flags |= CLIENT_SSL;
72 case MYSQL_CONNCOMPRESS_OPT:
73 if (Tcl_GetBooleanFromObj(interp,objv[++i],&booleanflag) != TCL_OK )
78 +#if (MYSQL_VERSION_ID >= 40107)
79 case MYSQL_MULTISTATEMENT_OPT:
80 if (Tcl_GetBooleanFromObj(interp,objv[++i],&booleanflag) != TCL_OK )
84 flags |= CLIENT_MULTI_RESULTS;
88 case MYSQL_LOCALFILES_OPT:
89 if (Tcl_GetBooleanFromObj(interp,objv[++i],&booleanflag) != TCL_OK )
92 #if (MYSQL_VERSION_ID>=32350)
93 mysql_options(handle->connection,MYSQL_READ_DEFAULT_GROUP,groupname);
95 +#if (MYSQL_VERSION_ID >= 40107)
97 mysql_ssl_set(handle->connection,sslkey,sslcert, sslca, sslcapath, sslcipher);
101 if (!mysql_real_connect(handle->connection, hostname, user,
102 password, db, port, socket, flags)) {
103 @@ -1514,7 +1529,11 @@
104 static CONST char* MysqlDbOpt[] =
106 "dbname", "dbname?", "tables", "host", "host?", "databases",
107 - "info","serverversion","serverversionid","sqlstate","state",NULL
108 + "info","serverversion",
109 +#if (MYSQL_VERSION_ID >= 40107)
110 + "serverversionid","sqlstate",
115 MYSQL_INFNAME_OPT, MYSQL_INFNAMEQ_OPT, MYSQL_INFTABLES_OPT,
116 @@ -1548,8 +1567,10 @@
119 case MYSQL_INF_SERVERVERSION:
120 +#if (MYSQL_VERSION_ID >= 40107)
121 case MYSQL_INFO_SERVERVERSION_ID:
122 case MYSQL_INFO_SQLSTATE:
124 case MYSQL_INFO_STATE:
127 @@ -1606,12 +1627,14 @@
128 case MYSQL_INF_SERVERVERSION:
129 Tcl_SetObjResult(interp, Tcl_NewStringObj(mysql_get_server_info(handle->connection),-1));
131 +#if (MYSQL_VERSION_ID >= 40107)
132 case MYSQL_INFO_SERVERVERSION_ID:
133 Tcl_SetObjResult(interp, Tcl_NewIntObj(mysql_get_server_version(handle->connection)));
135 case MYSQL_INFO_SQLSTATE:
136 Tcl_SetObjResult(interp, Tcl_NewStringObj(mysql_sqlstate(handle->connection),-1));
139 case MYSQL_INFO_STATE:
140 Tcl_SetObjResult(interp, Tcl_NewStringObj(mysql_stat(handle->connection),-1));
142 @@ -1638,7 +1661,11 @@
144 static CONST char* MysqlInfoOpt[] =
146 - "connectparameters", "clientversion","clientversionid", NULL
147 + "connectparameters", "clientversion",
148 +#if (MYSQL_VERSION_ID >= 40107)
154 MYSQL_BINFO_CONNECT, MYSQL_BINFO_CLIENTVERSION,MYSQL_BINFO_CLIENTVERSIONID
155 @@ -1668,9 +1695,11 @@
156 case MYSQL_BINFO_CLIENTVERSION:
157 Tcl_SetObjResult(interp, Tcl_NewStringObj(mysql_get_client_info(),-1));
159 +#if (MYSQL_VERSION_ID >= 40107)
160 case MYSQL_BINFO_CLIENTVERSIONID:
161 Tcl_SetObjResult(interp, Tcl_NewIntObj(mysql_get_client_version()));
167 @@ -1987,6 +2016,10 @@
169 static int Mysqltcl_AutoCommit(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])
171 +#if (MYSQL_VERSION_ID < 40107)
172 + Tcl_AddErrorInfo(interp, FUNCTION_NOT_AVAILABLE);
175 MysqlTclHandle *handle;
176 int isAutocommit = 0;
178 @@ -1999,6 +2032,7 @@
179 mysql_server_confl(interp,objc,objv,handle->connection);
185 *----------------------------------------------------------------------
186 @@ -2010,6 +2044,10 @@
188 static int Mysqltcl_Commit(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])
190 +#if (MYSQL_VERSION_ID < 40107)
191 + Tcl_AddErrorInfo(interp, FUNCTION_NOT_AVAILABLE);
194 MysqlTclHandle *handle;
196 if ((handle = mysql_prologue(interp, objc, objv, 2, 2, CL_CONN,
197 @@ -2019,6 +2057,7 @@
198 mysql_server_confl(interp,objc,objv,handle->connection);
204 *----------------------------------------------------------------------
205 @@ -2030,6 +2069,10 @@
207 static int Mysqltcl_Rollback(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])
209 +#if (MYSQL_VERSION_ID < 40107)
210 + Tcl_AddErrorInfo(interp, FUNCTION_NOT_AVAILABLE);
213 MysqlTclHandle *handle;
215 if ((handle = mysql_prologue(interp, objc, objv, 2, 2, CL_CONN,
216 @@ -2039,6 +2082,7 @@
217 mysql_server_confl(interp,objc,objv,handle->connection);
223 *----------------------------------------------------------------------
224 @@ -2050,6 +2094,10 @@
226 static int Mysqltcl_MoreResult(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])
228 +#if (MYSQL_VERSION_ID < 40107)
229 + Tcl_AddErrorInfo(interp, FUNCTION_NOT_AVAILABLE);
232 MysqlTclHandle *handle;
235 @@ -2059,6 +2107,7 @@
236 boolResult = mysql_more_results(handle->connection);
237 Tcl_SetObjResult(interp,Tcl_NewBooleanObj(boolResult));
243 @@ -2072,6 +2121,10 @@
245 static int Mysqltcl_NextResult(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])
247 +#if (MYSQL_VERSION_ID < 40107)
248 + Tcl_AddErrorInfo(interp, FUNCTION_NOT_AVAILABLE);
251 MysqlTclHandle *handle;
254 @@ -2098,6 +2151,7 @@
255 Tcl_SetObjResult(interp, Tcl_NewIntObj(handle->res_count));
261 *----------------------------------------------------------------------
262 @@ -2109,6 +2163,10 @@
264 static int Mysqltcl_WarningCount(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])
266 +#if (MYSQL_VERSION_ID < 40107)
267 + Tcl_AddErrorInfo(interp, FUNCTION_NOT_AVAILABLE);
270 MysqlTclHandle *handle;
273 @@ -2118,6 +2176,7 @@
274 count = mysql_warning_count(handle->connection);
275 Tcl_SetObjResult(interp,Tcl_NewIntObj(count));
280 *----------------------------------------------------------------------
281 @@ -2176,13 +2235,19 @@
282 * usage: mysql::setserveroption (-
285 +#if (MYSQL_VERSION_ID >= 40107)
286 static CONST char* MysqlServerOpt[] =
288 "-multi_statment_on", "-multi_statment_off",NULL
292 static int Mysqltcl_SetServerOption(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])
294 +#if (MYSQL_VERSION_ID < 40107)
295 + Tcl_AddErrorInfo(interp, FUNCTION_NOT_AVAILABLE);
298 MysqlTclHandle *handle;
300 enum enum_mysql_set_option mysqlServerOption;
301 @@ -2213,6 +2278,7 @@
302 mysql_server_confl(interp,objc,objv,handle->connection);
308 *----------------------------------------------------------------------
309 @@ -2228,7 +2294,11 @@
310 if ((handle = mysql_prologue(interp, objc, objv, 2, 2, CL_CONN,
313 +#if (MYSQL_VERSION_ID >= 40107)
314 if (mysql_shutdown(handle->connection,SHUTDOWN_DEFAULT)!=0) {
316 + if (mysql_shutdown(handle->connection)!=0) {
318 mysql_server_confl(interp,objc,objv,handle->connection);