Package: libmysqlclient10
Version: 3.23.56-2
Severity: normal

I found this problem while using the python bindings which set
autocommit off by default.

When not in autocommit mode (SET AUTOCOMMIT=0) the client will fail on
reconnect and the nature of the error is not reported to the user.

In the program below the final mysql_real_query() correctly returns
-1 but mysql_error() incorrectly returns an empty string.

----

#include <unistd.h>
#include <stdio.h>
#include <mysql.h>
#include <string.h>

int main()
{
    int rtn;
    char * query = "show tables";
    char * autocommit = "SET AUTOCOMMIT=0";

    MYSQL conn;
    MYSQL* r = mysql_init(&conn);

    printf("init done %p\n", r);

    r = mysql_real_connect(&conn, "localhost", "airplay", "airplay", "Airplay", 
0, NULL, 0);

    printf("connect done %p\n", r);

    rtn = mysql_real_query(&conn, autocommit, strlen(autocommit));
    printf("query returned %d '%s'\n", rtn, mysql_error(&conn));

    rtn = mysql_real_query(&conn, query, strlen(query));
    printf("query returned %d '%s'\n", rtn, mysql_error(&conn));
    MYSQL_RES *res = mysql_use_result(&conn);
    mysql_free_result(res);

    sleep(7);
    rtn = mysql_real_query(&conn, query, strlen(query));
    printf("query returned %d '%s'\n", rtn, mysql_error(&conn));
    res = mysql_use_result(&conn);
    mysql_free_result(res);
    return 0;
}

----

The following patch seemed to fix this for me:

--- libmysql.c  2003-04-13 18:41:40.000000000 +0100
+++ libmysql.new        2005-03-02 15:45:54.000000000 +0000
@@ -470,7 +470,11 @@
     }
     end_server(mysql);
     if (mysql_reconnect(mysql))
+    {
+      net->last_errno=CR_SERVER_GONE_ERROR;
+      strmov(net->last_error,ER(net->last_errno));
       goto end;
+    }
     if (net_write_command(net,(uchar) command,arg,
                          length ? length : (ulong) strlen(arg)))
     {

-- System Information:
Debian Release: 3.1
  APT prefers unstable
  APT policy: (990, 'unstable'), (1, 'experimental')
Architecture: i386 (i686)
Kernel: Linux 2.6.11-rc5
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)

Versions of packages libmysqlclient10 depends on:
ii  libc6                       2.3.2.ds1-20 GNU C Library: Shared libraries an
ii  mysql-common                4.0.23-7     mysql database common files (e.g. 
ii  zlib1g                      1:1.2.2-4    compression library - runtime

-- no debconf information


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to