--- sql/mysql/parser3mysql.C 2002/12/09 12:29:03 1.9 +++ sql/mysql/parser3mysql.C 2003/01/31 09:33:15 1.12 @@ -1,7 +1,7 @@ /** @file Parser MySQL driver. - Copyright(c) 2001, 2002 ArtLebedev Group (http://www.artlebedev.com) + Copyright(c) 2001, 2003 ArtLebedev Group (http://www.artlebedev.com) Author: Alexandr Petrosian (http://paf.design.ru) @@ -10,7 +10,7 @@ 2001.11.06 numrows on "HP-UX istok1 B.11.00 A 9000/869 448594332 two-user license" 3.23.42 & 4.0.0.alfa never worked, both subst & .sl version returned 0 */ -static const char *RCSId="$Id: parser3mysql.C,v 1.9 2002/12/09 12:29:03 paf Exp $"; +static const char *RCSId="$Id: parser3mysql.C,v 1.12 2003/01/31 09:33:15 paf Exp $"; #include "config_includes.h" @@ -214,11 +214,17 @@ public: } for(int i=0; iname); - void *ptr=services.malloc(size); - memcpy(ptr, field->name, size); - CHECK(handlers.add_column(sql_error, ptr, size)); + if(MYSQL_FIELD *field=mysql_fetch_field(res)) { + size_t size=strlen(field->name); + void *ptr=services.malloc(size); + memcpy(ptr, field->name, size); + CHECK(handlers.add_column(sql_error, ptr, size)); + } else { + // seen some broken client, + // which reported "44" for column count of response to "select 2+2" + column_count=i; + break; + } } CHECK(handlers.before_rows(sql_error)); @@ -288,6 +294,8 @@ private: // mysql client library funcs private: // mysql client library funcs linking const char *dlink(const char *dlopen_file_spec) { + if(lt_dlinit()) + return lt_dlerror(); lt_dlhandle handle=lt_dlopen(dlopen_file_spec); if (!handle) return "can not open the dynamic link module";