diff -u -r original/unixODBC-2.2.8/Drivers/MySQL/catalog.c patched/unixODBC-2.2.8/Drivers/MySQL/catalog.c
--- original/unixODBC-2.2.8/Drivers/MySQL/catalog.c	2002-04-10 16:14:08.000000000 +0200
+++ patched/unixODBC-2.2.8/Drivers/MySQL/catalog.c	2004-04-16 20:43:33.000000000 +0200
@@ -60,11 +60,11 @@
 char *SQLTABLES_type_values[]={NULL,NULL,NULL,"TABLE",NULL};
 
 MYSQL_FIELD SQLTABLES_fields[] = {
-  {"TABLE_CAT","Catalog",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,0},
-  {"TABLE_SCHEM","Catalog",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,0},
-  {"TABLE_NAME","Catalog",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,NAME_LEN,0},
-  {"TABLE_TYPE","Catalog",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,5,0},
-  {"REMARKS","Catalog",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,11}};
+  {"TABLE_CAT",	 "Catalog",NULL,NULL,NULL,NAME_LEN, 0,0,0,FIELD_TYPE_VAR_STRING},
+  {"TABLE_SCHEM","Catalog",NULL,NULL,NULL,NAME_LEN, 0,0,0,FIELD_TYPE_VAR_STRING},
+  {"TABLE_NAME", "Catalog",NULL,NULL,NULL,NAME_LEN,NAME_LEN,0,FIELD_TYPE_VAR_STRING},
+  {"TABLE_TYPE", "Catalog",NULL,NULL,NULL,NAME_LEN, 5,0,0,FIELD_TYPE_VAR_STRING},
+  {"REMARKS",	 "Catalog",NULL,NULL,NULL,NAME_LEN,11,0,0,FIELD_TYPE_VAR_STRING}};
 
 const uint SQLTABLES_FIELDS=array_elements(SQLTABLES_values);
 
@@ -217,24 +217,24 @@
 };
 
 MYSQL_FIELD SQLCOLUMNS_fields[] = {
-  {"TABLE_CAT","MySQL_Catalog",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,0},
-  {"TABLE_SCHEM","MySQL_Catalog",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,0},
-  {"TABLE_NAME","MySQL_Catalog",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,NAME_LEN,NOT_NULL_FLAG},
-  {"COLUMN_NAME","MySQL_Catalog",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,NAME_LEN,NOT_NULL_FLAG},
-  {"DATA_TYPE","MySQL_Catalog",NULL,FIELD_TYPE_SHORT,5,5,NOT_NULL_FLAG},
-  {"TYPE_NAME","MySQL_Catalog",NULL,FIELD_TYPE_VAR_STRING,20,20,NOT_NULL_FLAG},
-  {"COLUMN_SIZE","MySQL_Catalog",NULL,FIELD_TYPE_LONG,11,11},
-  {"BUFFER_LENGTH","MySQL_Catalog",NULL,FIELD_TYPE_LONG,11,11},
-  {"DECIMAL_DIGITS","MySQL_Catalog",NULL,FIELD_TYPE_SHORT,2,2},
-  {"NUM_PREC_RADIX","MySQL_Catalog",NULL,FIELD_TYPE_SHORT,2,2},
-  {"NULLABLE","MySQL_Catalog",NULL,FIELD_TYPE_SHORT,5,5,NOT_NULL_FLAG},
-  {"REMARKS","MySQL_Catalog",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,NAME_LEN},  
-  {"COLUMN_DEF","MySQL_Catalog",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,NAME_LEN},
-  {"SQL_DATA_TYPE","MySQL_Catalog",NULL,FIELD_TYPE_SHORT,5,5,NOT_NULL_FLAG},
-  {"SQL_DATTIME_SUB","MySQL_Catalog",NULL,FIELD_TYPE_SHORT,2,2},
-  {"CHAR_OCTET_LENGTH","MySQL_Catalog",NULL,FIELD_TYPE_LONG,11,11},
-  {"ORDINAL_POSITION","MySQL_Catalog",NULL,FIELD_TYPE_LONG,11,11,NOT_NULL_FLAG},
-  {"IS_NULLABLE","MySQL_Catalog",NULL,FIELD_TYPE_VAR_STRING,3,3}};
+  {"TABLE_CAT","MySQL_Catalog",NULL,NULL,NULL,NAME_LEN,0,0,0,FIELD_TYPE_VAR_STRING},
+  {"TABLE_SCHEM","MySQL_Catalog",NULL,NULL,NULL,NAME_LEN,0,0,0,FIELD_TYPE_VAR_STRING},
+  {"TABLE_NAME","MySQL_Catalog",NULL,NULL,NULL,NAME_LEN,NAME_LEN,NOT_NULL_FLAG,0,FIELD_TYPE_VAR_STRING},
+  {"COLUMN_NAME","MySQL_Catalog",NULL,NULL,NULL,NAME_LEN,NAME_LEN,NOT_NULL_FLAG,0,FIELD_TYPE_VAR_STRING},
+  {"DATA_TYPE","MySQL_Catalog",NULL,NULL,NULL,5,5,NOT_NULL_FLAG,0,FIELD_TYPE_SHORT},
+  {"TYPE_NAME","MySQL_Catalog",NULL,NULL,NULL,20,20,NOT_NULL_FLAG,0,FIELD_TYPE_VAR_STRING},
+  {"COLUMN_SIZE","MySQL_Catalog",NULL,NULL,NULL,11,11,0,0,FIELD_TYPE_LONG},
+  {"BUFFER_LENGTH","MySQL_Catalog",NULL,NULL,NULL,11,11,0,0,FIELD_TYPE_LONG},
+  {"DECIMAL_DIGITS","MySQL_Catalog",NULL,NULL,NULL,2,2,0,0,FIELD_TYPE_SHORT},
+  {"NUM_PREC_RADIX","MySQL_Catalog",NULL,NULL,NULL,2,2,0,0,FIELD_TYPE_SHORT},
+  {"NULLABLE","MySQL_Catalog",NULL,NULL,NULL,5,5,NOT_NULL_FLAG,0,FIELD_TYPE_SHORT},
+  {"REMARKS","MySQL_Catalog",NULL,NULL,NULL,NAME_LEN,NAME_LEN,0,0,FIELD_TYPE_VAR_STRING},  
+  {"COLUMN_DEF","MySQL_Catalog",NULL,NULL,NULL,NAME_LEN,NAME_LEN,0,0,FIELD_TYPE_VAR_STRING},
+  {"SQL_DATA_TYPE","MySQL_Catalog",NULL,NULL,NULL,5,5,NOT_NULL_FLAG,0,FIELD_TYPE_SHORT},
+  {"SQL_DATTIME_SUB","MySQL_Catalog",NULL,NULL,NULL,2,2,0,0,FIELD_TYPE_SHORT},
+  {"CHAR_OCTET_LENGTH","MySQL_Catalog",NULL,NULL,NULL,11,11,0,0,FIELD_TYPE_LONG},
+  {"ORDINAL_POSITION","MySQL_Catalog",NULL,NULL,NULL,11,11,NOT_NULL_FLAG,0,FIELD_TYPE_LONG},
+  {"IS_NULLABLE","MySQL_Catalog",NULL,NULL,NULL,3,3,0,0,FIELD_TYPE_VAR_STRING}};
 
 const uint SQLCOLUMNS_FIELDS=array_elements(SQLCOLUMNS_values);
 
@@ -272,7 +272,7 @@
   if (!stmt->result)
   {
     set_handle_error(SQL_HANDLE_STMT,stmt,MYERR_S1000,
-		     mysql_error(&stmt->dbc->mysql),
+		    (SQLCHAR *) mysql_error(&stmt->dbc->mysql),
 		     mysql_errno(&stmt->dbc->mysql));
     pthread_mutex_unlock(&stmt->dbc->lock);
     DBUG_RETURN(SQL_ERROR);
@@ -341,19 +341,19 @@
 char *SQLSTAT_values[]={NULL,NULL,"","",NULL,"",SS_type,"","","","",NULL,NULL};
 
 MYSQL_FIELD SQLSTAT_fields[] = {
-  {"TABLE_CAT","MySQL_Stat",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,0},
-  {"TABLE_SCHEM","MySQL_Stat",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,0},
-  {"TABLE_NAME","MySQL_Stat",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,NAME_LEN,NOT_NULL_FLAG},
-  {"NON_UNIQUE","MySQL_Stat",NULL,FIELD_TYPE_SHORT,1,1,NOT_NULL_FLAG},
-  {"INDEX_QUALIFIER","MySQL_Stat",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,0},
-  {"INDEX_NAME","MySQL_Stat",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,NAME_LEN},
-  {"TYPE","MySQL_Stat",NULL,FIELD_TYPE_SHORT,1,1,NOT_NULL_FLAG},
-  {"ORDINAL_POSITION","MySQL_Stat",NULL,FIELD_TYPE_SHORT,1,2,NOT_NULL_FLAG},
-  {"COLUMN_NAME","MySQL_Stat",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,NAME_LEN,NOT_NULL_FLAG},
-  {"ASC_OR_DESC","MySQL_Stat",NULL,FIELD_TYPE_VAR_STRING,1,1},
-  {"CARDINALITY","MySQL_Stat",NULL,FIELD_TYPE_LONG,11,11},
-  {"PAGES","MySQL_Stat",NULL,FIELD_TYPE_LONG,9,9},
-  {"FILTER_CONDITION","MySQL_Stat",NULL,FIELD_TYPE_VAR_STRING,10,10},
+  {"TABLE_CAT","MySQL_Stat",NULL,NULL,NULL,NAME_LEN,0,0,0,FIELD_TYPE_VAR_STRING},
+  {"TABLE_SCHEM","MySQL_Stat",NULL,NULL,NULL,NAME_LEN,0,0,0,FIELD_TYPE_VAR_STRING},
+  {"TABLE_NAME","MySQL_Stat",NULL,NULL,NULL,NAME_LEN,NAME_LEN,NOT_NULL_FLAG,0,FIELD_TYPE_VAR_STRING},
+  {"NON_UNIQUE","MySQL_Stat",NULL,NULL,NULL,1,1,NOT_NULL_FLAG,0,FIELD_TYPE_SHORT},
+  {"INDEX_QUALIFIER","MySQL_Stat",NULL,NULL,NULL,NAME_LEN,0,0,0,FIELD_TYPE_VAR_STRING},
+  {"INDEX_NAME","MySQL_Stat",NULL,NULL,NULL,NAME_LEN,NAME_LEN,0,0,FIELD_TYPE_VAR_STRING},
+  {"TYPE","MySQL_Stat",NULL,NULL,NULL,1,1,NOT_NULL_FLAG,0,FIELD_TYPE_SHORT},
+  {"ORDINAL_POSITION","MySQL_Stat",NULL,NULL,NULL,1,2,NOT_NULL_FLAG,0,FIELD_TYPE_SHORT},
+  {"COLUMN_NAME","MySQL_Stat",NULL,NULL,NULL,NAME_LEN,NAME_LEN,NOT_NULL_FLAG,0,FIELD_TYPE_VAR_STRING},
+  {"ASC_OR_DESC","MySQL_Stat",NULL,NULL,NULL,1,1,0,0,FIELD_TYPE_VAR_STRING},
+  {"CARDINALITY","MySQL_Stat",NULL,NULL,NULL,11,11,0,0,FIELD_TYPE_LONG},
+  {"PAGES","MySQL_Stat",NULL,NULL,NULL,9,9,0,0,FIELD_TYPE_LONG},
+  {"FILTER_CONDITION","MySQL_Stat",NULL,NULL,NULL,10,10,0,0,FIELD_TYPE_VAR_STRING},
 };
 
 const uint SQLSTAT_FIELDS=array_elements(SQLSTAT_fields);
@@ -390,7 +390,7 @@
       !(stmt->result=mysql_store_result(&stmt->dbc->mysql)))
   {
     set_handle_error(SQL_HANDLE_STMT,stmt,MYERR_S1000,
-		     mysql_error(&stmt->dbc->mysql),
+		     (SQLCHAR *)mysql_error(&stmt->dbc->mysql),
 		     mysql_errno(&stmt->dbc->mysql));
     pthread_mutex_unlock(&stmt->dbc->lock);
     DBUG_RETURN(SQL_ERROR);
@@ -504,13 +504,13 @@
 };
 
 MYSQL_FIELD SQLTABLES_priv_fields[] = {
-  {"TABLE_CAT","MySQL_Catalog",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,0},
-  {"TABLE_SCHEM","MySQL_Catalog",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,0},
-  {"TABLE_NAME","MySQL_Catalog",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,NAME_LEN,NOT_NULL_FLAG},
-  {"GRANTOR","MySQL_Catalog",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,0},
-  {"GRANTEE","MySQL_Catalog",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,NAME_LEN,NOT_NULL_FLAG},
-  {"PRIVILEGE","MySQL_Catalog",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,NAME_LEN,NOT_NULL_FLAG},
-  {"IS_GRANTABLE","MySQL_Catalog",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,0},
+  {"TABLE_CAT","MySQL_Catalog",NULL,NULL,NULL,NAME_LEN,0,0,0,FIELD_TYPE_VAR_STRING},
+  {"TABLE_SCHEM","MySQL_Catalog",NULL,NULL,NULL,NAME_LEN,0,0,0,FIELD_TYPE_VAR_STRING},
+  {"TABLE_NAME","MySQL_Catalog",NULL,NULL,NULL,NAME_LEN,NAME_LEN,NOT_NULL_FLAG,0,FIELD_TYPE_VAR_STRING},
+  {"GRANTOR","MySQL_Catalog",NULL,NULL,NULL,NAME_LEN,0,0,0,FIELD_TYPE_VAR_STRING},
+  {"GRANTEE","MySQL_Catalog",NULL,NULL,NULL,NAME_LEN,NAME_LEN,NOT_NULL_FLAG,0,FIELD_TYPE_VAR_STRING},
+  {"PRIVILEGE","MySQL_Catalog",NULL,NULL,NULL,NAME_LEN,NAME_LEN,NOT_NULL_FLAG,0,FIELD_TYPE_VAR_STRING},
+  {"IS_GRANTABLE","MySQL_Catalog",NULL,NULL,NULL,NAME_LEN,0,0,0,FIELD_TYPE_VAR_STRING},
 };
 
 const uint SQLTABLES_PRIV_FIELDS=array_elements(SQLTABLES_priv_values);
@@ -551,7 +551,7 @@
   if (!stmt->result)
   {
     set_handle_error(SQL_HANDLE_STMT,stmt,MYERR_S1000,
-         mysql_error(&stmt->dbc->mysql),
+         (SQLCHAR *)mysql_error(&stmt->dbc->mysql),
          mysql_errno(&stmt->dbc->mysql));
     pthread_mutex_unlock(&stmt->dbc->lock);
     DBUG_RETURN(SQL_ERROR);
@@ -613,14 +613,14 @@
 };
 
 MYSQL_FIELD SQLCOLUMNS_priv_fields[] = {
-  {"TABLE_CAT","MySQL_Catalog",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,0},
-  {"TABLE_SCHEM","MySQL_Catalog",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,0},
-  {"TABLE_NAME","MySQL_Catalog",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,NAME_LEN,NOT_NULL_FLAG},
-  {"COLUMN_NAME","MySQL_Catalog",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,NAME_LEN,NOT_NULL_FLAG},
-  {"GRANTOR","MySQL_Catalog",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,0},
-  {"GRANTEE","MySQL_Catalog",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,NAME_LEN,NOT_NULL_FLAG},
-  {"PRIVILEGE","MySQL_Catalog",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,NAME_LEN,NOT_NULL_FLAG},
-  {"IS_GRANTABLE","MySQL_Catalog",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,0},
+  {"TABLE_CAT","MySQL_Catalog",NULL,NULL,NULL,NAME_LEN,0,0,0,FIELD_TYPE_VAR_STRING},
+  {"TABLE_SCHEM","MySQL_Catalog",NULL,NULL,NULL,NAME_LEN,0,0,0,FIELD_TYPE_VAR_STRING},
+  {"TABLE_NAME","MySQL_Catalog",NULL,NULL,NULL,NAME_LEN,NAME_LEN,NOT_NULL_FLAG,0,FIELD_TYPE_VAR_STRING},
+  {"COLUMN_NAME","MySQL_Catalog",NULL,NULL,NULL,NAME_LEN,NAME_LEN,NOT_NULL_FLAG,0,FIELD_TYPE_VAR_STRING},
+  {"GRANTOR","MySQL_Catalog",NULL,NULL,NULL,NAME_LEN,0,0,0,FIELD_TYPE_VAR_STRING},
+  {"GRANTEE","MySQL_Catalog",NULL,NULL,NULL,NAME_LEN,NAME_LEN,NOT_NULL_FLAG,0,FIELD_TYPE_VAR_STRING},
+  {"PRIVILEGE","MySQL_Catalog",NULL,NULL,NULL,NAME_LEN,NAME_LEN,NOT_NULL_FLAG,0,FIELD_TYPE_VAR_STRING},
+  {"IS_GRANTABLE","MySQL_Catalog",NULL,NULL,NULL,NAME_LEN,0,0,0,FIELD_TYPE_VAR_STRING},
 };
 
 const uint SQLCOLUMNS_PRIV_FIELDS=array_elements(SQLCOLUMNS_priv_values);
@@ -665,7 +665,7 @@
   if (!stmt->result)
   {
     set_handle_error(SQL_HANDLE_STMT,stmt,MYERR_S1000,
-         mysql_error(&stmt->dbc->mysql),
+         (SQLCHAR *)mysql_error(&stmt->dbc->mysql),
          mysql_errno(&stmt->dbc->mysql));
     pthread_mutex_unlock(&stmt->dbc->lock);
     DBUG_RETURN(SQL_ERROR);
@@ -691,18 +691,14 @@
 }
 
 MYSQL_FIELD SQLSPECIALCOLUMNS_fields[] = {
-  {"SCOPE","MySQL_SpecialColumns",NULL,FIELD_TYPE_SHORT,5,5,
-   NOT_NULL_FLAG},
-  {"COLUMN_NAME","MySQL_SpecialColumns",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,
-   NAME_LEN,NOT_NULL_FLAG},
-  {"DATA_TYPE","MySQL_SpecialColumns",NULL,FIELD_TYPE_SHORT,5,5,
-   NOT_NULL_FLAG},
-  {"TYPE_NAME","MySQL_SpecialColumns",NULL,FIELD_TYPE_VAR_STRING,20,20,
-   NOT_NULL_FLAG},
-  {"COLUMN_SIZE","MySQL_SpecialColumns",NULL,FIELD_TYPE_LONG,7,7},
-  {"BUFFER_LENGTH","MySQL_SpecialColumns",NULL,FIELD_TYPE_LONG,7,7},
-  {"DECIMAL_DIGITS","MySQL_SpecialColumns",NULL,FIELD_TYPE_SHORT,3,3},
-  {"PSEUDO_COLUMN","MySQL_SpecialColumns",NULL,FIELD_TYPE_SHORT,3,3}
+  {"SCOPE","MySQL_SpecialColumns",NULL,NULL,NULL,5,5,NOT_NULL_FLAG,0,FIELD_TYPE_SHORT},
+  {"COLUMN_NAME","MySQL_SpecialColumns",NULL,NULL,NULL,NAME_LEN,NAME_LEN,NOT_NULL_FLAG,0,FIELD_TYPE_VAR_STRING},
+  {"DATA_TYPE","MySQL_SpecialColumns",NULL,NULL,NULL,5,5,NOT_NULL_FLAG,0,FIELD_TYPE_SHORT},
+  {"TYPE_NAME","MySQL_SpecialColumns",NULL,NULL,NULL,20,20,NOT_NULL_FLAG,0,FIELD_TYPE_VAR_STRING},
+  {"COLUMN_SIZE","MySQL_SpecialColumns",NULL,NULL,NULL,7,7,0,0,FIELD_TYPE_LONG},
+  {"BUFFER_LENGTH","MySQL_SpecialColumns",NULL,NULL,NULL,7,7,0,0,FIELD_TYPE_LONG},
+  {"DECIMAL_DIGITS","MySQL_SpecialColumns",NULL,NULL,NULL,3,3,0,0,FIELD_TYPE_SHORT},
+  {"PSEUDO_COLUMN","MySQL_SpecialColumns",NULL,NULL,NULL,3,3,0,0,FIELD_TYPE_SHORT}
 };
 
 const uint SQLSPECIALCOLUMNS_FIELDS=array_elements(SQLSPECIALCOLUMNS_fields);
@@ -747,7 +743,7 @@
   if (!stmt->result)
   {
     set_handle_error(SQL_HANDLE_STMT,stmt,MYERR_S1000,
-		     mysql_error(&stmt->dbc->mysql),
+		     (SQLCHAR *)mysql_error(&stmt->dbc->mysql),
 		     mysql_errno(&stmt->dbc->mysql));
     pthread_mutex_unlock(&stmt->dbc->lock);
     return(SQL_ERROR);
@@ -866,14 +862,12 @@
 /* Have DBMS set up result set of PrimaryKeys. */
 
 MYSQL_FIELD SQLPRIM_KEYS_fields[] = {
-  {"TABLE_CAT","MySQL_Primary_keys",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,0},
-  {"TABLE_SCHEM","MySQL_Primary_keys",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,0},
-  {"TABLE_NAME","MySQL_Primary_keys",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,
-   NAME_LEN, NOT_NULL_FLAG},
-  {"COLUMN_NAME","MySQL_Primary_keys",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,
-   NAME_LEN, NOT_NULL_FLAG},
-  {"KEY_SEQ","MySQL_Primary_keys",NULL,FIELD_TYPE_SHORT,2,2,NOT_NULL_FLAG},
-  {"PK_NAME","MySQL_Primary_keys",NULL,FIELD_TYPE_VAR_STRING,128,0},
+  {"TABLE_CAT","MySQL_Primary_keys",NULL,NULL,NULL,NAME_LEN,0,0,0,FIELD_TYPE_VAR_STRING},
+  {"TABLE_SCHEM","MySQL_Primary_keys",NULL,NULL,NULL,NAME_LEN,0,0,0,FIELD_TYPE_VAR_STRING},
+  {"TABLE_NAME","MySQL_Primary_keys",NULL,NULL,NULL,NAME_LEN,NAME_LEN, NOT_NULL_FLAG,0,FIELD_TYPE_VAR_STRING},
+  {"COLUMN_NAME","MySQL_Primary_keys",NULL,NULL,NULL,NAME_LEN,NAME_LEN, NOT_NULL_FLAG,0,FIELD_TYPE_VAR_STRING},
+  {"KEY_SEQ","MySQL_Primary_keys",NULL,NULL,NULL,2,2,NOT_NULL_FLAG,0,FIELD_TYPE_SHORT},
+  {"PK_NAME","MySQL_Primary_keys",NULL,NULL,NULL,128,0,0,0,FIELD_TYPE_VAR_STRING},
 };
 
 const uint SQLPRIM_KEYS_FIELDS=array_elements(SQLPRIM_KEYS_fields);
@@ -912,7 +906,7 @@
       !(stmt->result=mysql_store_result(&stmt->dbc->mysql)))
   {
     set_handle_error(SQL_HANDLE_STMT,stmt,MYERR_S1000,
-		     mysql_error(&stmt->dbc->mysql),
+		    (SQLCHAR *) mysql_error(&stmt->dbc->mysql),
 		     mysql_errno(&stmt->dbc->mysql));
     pthread_mutex_unlock(&stmt->dbc->lock);
     DBUG_RETURN(SQL_ERROR);
@@ -949,23 +943,19 @@
 */
 
 MYSQL_FIELD SQLFORE_KEYS_fields[] = {
-  {"PKTABLE_CAT","MySQL_Foreign_keys",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,0},
-  {"PKTABLE_SCHEM","MySQL_Foreign_keys",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,0},
-  {"PKTABLE_NAME","MySQL_Foreign_keys",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,
-   NAME_LEN,NOT_NULL_FLAG},
-  {"PKCOLUMN_NAME","MySQL_Foreign_keys",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,
-   NAME_LEN,NOT_NULL_FLAG},
-  {"FKTABLE_CAT","MySQL_Foreign_keys",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,0},
-  {"FKTABLE_SCHEM","MySQL_Foreign_keys",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,
-   NAME_LEN,NOT_NULL_FLAG},
-  {"FKCOLUMN_NAME","MySQL_Foreign_keys",NULL,FIELD_TYPE_VAR_STRING,NAME_LEN,
-   NAME_LEN,NOT_NULL_FLAG},
-  {"KEY_SEQ","MySQL_Foreign_keys",NULL,FIELD_TYPE_SHORT,2,2,NOT_NULL_FLAG},
-  {"UPDATE_RULE","MySQL_Foreign_keys",NULL,FIELD_TYPE_SHORT,2,2},
-  {"DELETE_RULE","MySQL_Foreign_keys",NULL,FIELD_TYPE_SHORT,2,2},
-  {"FK_NAME","MySQL_Foreign_keys",NULL,FIELD_TYPE_VAR_STRING,128,0},
-  {"PK_NAME","MySQL_Foreign_keys",NULL,FIELD_TYPE_VAR_STRING,128,0},
-  {"DEFERRABILITY","MySQL_Foreign_keys",NULL,FIELD_TYPE_SHORT,2,2},
+  {"PKTABLE_CAT","MySQL_Foreign_keys",NULL,NULL,NULL,NAME_LEN,0,0,0,FIELD_TYPE_VAR_STRING},
+  {"PKTABLE_SCHEM","MySQL_Foreign_keys",NULL,NULL,NULL,NAME_LEN,0,0,0,FIELD_TYPE_VAR_STRING},
+  {"PKTABLE_NAME","MySQL_Foreign_keys",NULL,NULL,NULL,NAME_LEN,NAME_LEN,NOT_NULL_FLAG,0,FIELD_TYPE_VAR_STRING},
+  {"PKCOLUMN_NAME","MySQL_Foreign_keys",NULL,NULL,NULL,NAME_LEN,NAME_LEN,NOT_NULL_FLAG,0,FIELD_TYPE_VAR_STRING},
+  {"FKTABLE_CAT","MySQL_Foreign_keys",NULL,NULL,NULL,NAME_LEN,0,0,0,FIELD_TYPE_VAR_STRING},
+  {"FKTABLE_SCHEM","MySQL_Foreign_keys",NULL,NULL,NULL,NAME_LEN,NAME_LEN,NOT_NULL_FLAG,0,FIELD_TYPE_VAR_STRING},
+  {"FKCOLUMN_NAME","MySQL_Foreign_keys",NULL,NULL,NULL,NAME_LEN,NAME_LEN,NOT_NULL_FLAG,0,FIELD_TYPE_VAR_STRING},
+  {"KEY_SEQ","MySQL_Foreign_keys",NULL,NULL,NULL,2,2,NOT_NULL_FLAG,0,FIELD_TYPE_SHORT},
+  {"UPDATE_RULE","MySQL_Foreign_keys",NULL,NULL,NULL,2,2,0,0,FIELD_TYPE_SHORT},
+  {"DELETE_RULE","MySQL_Foreign_keys",NULL,NULL,NULL,2,2,0,0,FIELD_TYPE_SHORT},
+  {"FK_NAME","MySQL_Foreign_keys",NULL,NULL,NULL,128,0,0,0,FIELD_TYPE_VAR_STRING},
+  {"PK_NAME","MySQL_Foreign_keys",NULL,NULL,NULL,128,0,0,0,FIELD_TYPE_VAR_STRING},
+  {"DEFERRABILITY","MySQL_Foreign_keys",NULL,NULL,NULL,2,2,0,0,FIELD_TYPE_SHORT},
 };
 
 const uint SQLFORE_KEYS_FIELDS=array_elements(SQLFORE_KEYS_fields);
@@ -1019,7 +1009,7 @@
 	      SQLCHAR FAR *szProcName,SQLSMALLINT cbProcName)
 {
   return set_handle_error(SQL_HANDLE_STMT,hstmt,MYERR_S1000,
-			 "Driver doesn't support this yet",4000);
+			 (SQLCHAR *)"Driver doesn't support this yet",4000);
 }
 
 /*
diff -u -r original/unixODBC-2.2.8/Drivers/MySQL/connect.c patched/unixODBC-2.2.8/Drivers/MySQL/connect.c
--- original/unixODBC-2.2.8/Drivers/MySQL/connect.c	2002-04-10 16:14:08.000000000 +0200
+++ patched/unixODBC-2.2.8/Drivers/MySQL/connect.c	2004-04-16 20:43:34.000000000 +0200
@@ -192,7 +192,7 @@
 			  socket[0] ? socket: NullS,
 			  (uint) client_flag))
   {
-    set_dbc_error(dbc, "S1000", mysql_error(&dbc->mysql),
+    set_dbc_error(dbc, "S1000", (SQLCHAR *)mysql_error(&dbc->mysql),
 		  mysql_errno(&dbc->mysql));
     translate_error(dbc->error.sqlstate,"S1000",mysql_errno(&dbc->mysql));
     DBUG_RETURN(SQL_ERROR);
@@ -647,7 +647,7 @@
 			  (uint) client_flag))
   {
     DBUG_RETURN(set_handle_error(SQL_HANDLE_DBC,hdbc,MYERR_S1000,
-				 mysql_error(&dbc->mysql),
+				 (SQLCHAR *)mysql_error(&dbc->mysql),
 				 mysql_errno(&dbc->mysql)));
   }
   dbc->dsn=my_strdup(KEY_DSN,MYF(MY_WME));
diff -u -r original/unixODBC-2.2.8/Drivers/MySQL/cursor.c patched/unixODBC-2.2.8/Drivers/MySQL/cursor.c
--- original/unixODBC-2.2.8/Drivers/MySQL/cursor.c	2002-04-10 16:14:08.000000000 +0200
+++ patched/unixODBC-2.2.8/Drivers/MySQL/cursor.c	2004-04-16 20:45:44.000000000 +0200
@@ -182,7 +182,7 @@
       !(presult=mysql_store_result(&stmt->dbc->mysql)))
   {
     set_handle_error(SQL_HANDLE_STMT,stmt,MYERR_S1000,
-         mysql_error(&stmt->dbc->mysql),
+         (SQLCHAR *)mysql_error(&stmt->dbc->mysql),
          mysql_errno(&stmt->dbc->mysql));
     pthread_mutex_unlock(&stmt->dbc->lock);
     return(0);
@@ -326,7 +326,7 @@
       mysql_real_query(&dbc->mysql,query,len))
   {
     error = set_handle_error(SQL_HANDLE_STMT,stmt,MYERR_S1000,
-           mysql_error(&dbc->mysql),
+           (SQLCHAR *)mysql_error(&dbc->mysql),
            mysql_errno(&dbc->mysql));
   }
   pthread_mutex_unlock(&dbc->lock);
@@ -484,7 +484,7 @@
     if (mysql_query(&stmt->dbc->mysql,query.str) ||
         !(presult=mysql_store_result(&stmt->dbc->mysql)))
     {
-      set_handle_error(SQL_HANDLE_STMT,stmt,MYERR_S1000,mysql_error(&stmt->dbc->mysql),
+      set_handle_error(SQL_HANDLE_STMT,stmt,MYERR_S1000,(SQLCHAR *)mysql_error(&stmt->dbc->mysql),
            mysql_errno(&stmt->dbc->mysql));
       pthread_mutex_unlock(&stmt->dbc->lock);
       dynstr_free(&query);
@@ -547,7 +547,7 @@
   if((mysql_query(&stmt->dbc->mysql,select) ||
      !(presult=mysql_store_result(&stmt->dbc->mysql))))
   {
-    set_handle_error(3,stmt,MYERR_S1000,mysql_error(&stmt->dbc->mysql),
+    set_handle_error(3,stmt,MYERR_S1000,(SQLCHAR *)mysql_error(&stmt->dbc->mysql),
        mysql_errno(&stmt->dbc->mysql));
     pthread_mutex_unlock(&stmt->dbc->lock);  
     return(SQL_ERROR);
diff -u -r original/unixODBC-2.2.8/Drivers/MySQL/execute.c patched/unixODBC-2.2.8/Drivers/MySQL/execute.c
--- original/unixODBC-2.2.8/Drivers/MySQL/execute.c	2002-04-10 16:14:08.000000000 +0200
+++ patched/unixODBC-2.2.8/Drivers/MySQL/execute.c	2004-04-16 20:43:34.000000000 +0200
@@ -77,7 +77,7 @@
   if (check_if_server_is_alive(stmt->dbc) ||
       mysql_query(&stmt->dbc->mysql,query))
   {
-    set_stmt_error(stmt,"S1000",mysql_error(&stmt->dbc->mysql),
+    set_stmt_error(stmt,"S1000",(SQLCHAR *)mysql_error(&stmt->dbc->mysql),
        mysql_errno(&stmt->dbc->mysql));
     translate_error(stmt->error.sqlstate,"S1000",
         mysql_errno(&stmt->dbc->mysql));
@@ -104,7 +104,7 @@
       goto exit;
     }
     set_handle_error(SQL_HANDLE_STMT,stmt,MYERR_S1000,
-         mysql_error(&stmt->dbc->mysql),
+         (SQLCHAR *)mysql_error(&stmt->dbc->mysql),
          mysql_errno(&stmt->dbc->mysql));
     goto exit;
   }
diff -u -r original/unixODBC-2.2.8/Drivers/MySQL/info.c patched/unixODBC-2.2.8/Drivers/MySQL/info.c
--- original/unixODBC-2.2.8/Drivers/MySQL/info.c	2002-04-10 16:14:08.000000000 +0200
+++ patched/unixODBC-2.2.8/Drivers/MySQL/info.c	2004-04-16 20:43:34.000000000 +0200
@@ -830,25 +830,25 @@
 */
 
 MYSQL_FIELD SQL_GET_TYPE_INFO_fields[] = {
-  {"TYPE_NAME","GetTypeInfo",NULL,FIELD_TYPE_VAR_STRING,32,32,NOT_NULL_FLAG},
-  {"DATA_TYPE","GetTypeInfo",NULL,FIELD_TYPE_SHORT,2,2,NOT_NULL_FLAG},
-  {"COLUMN_SIZE","GetTypeInfo",NULL,FIELD_TYPE_LONG,10,10},
-  {"LITERAL_PREFIX","GetTypeInfo",NULL,FIELD_TYPE_VAR_STRING,2,2},
-  {"LITERAL_SUFFIX","GetTypeInfo",NULL,FIELD_TYPE_VAR_STRING,2,2},
-  {"CREATE_PARAMS","GetTypeInfo",NULL,FIELD_TYPE_VAR_STRING,15,15},
-  {"NULLABLE","GetTypeInfo",NULL,FIELD_TYPE_SHORT,2,2,NOT_NULL_FLAG},
-  {"CASE_SENSITIVE","GetTypeInfo",NULL,FIELD_TYPE_SHORT,2,2,NOT_NULL_FLAG},
-  {"SEARCHABLE","GetTypeInfo",NULL,FIELD_TYPE_SHORT,2,2,NOT_NULL_FLAG},
-  {"UNSIGNED_ATTRIBUTE","GetTypeInfo",NULL,FIELD_TYPE_SHORT,2,2},
-  {"FIXED_PREC_SCALE","GetTypeInfo",NULL,FIELD_TYPE_SHORT,2,2,NOT_NULL_FLAG},
-  {"AUTO_UNIQUE_VALUE","GetTypeInfo",NULL,FIELD_TYPE_SHORT,2,2},
-  {"LOCAL_TYPE_NAME","GetTypeInfo",NULL,FIELD_TYPE_VAR_STRING,60,60},
-  {"MINIMUM_SCALE","GetTypeInfo",NULL,FIELD_TYPE_SHORT,2,2},
-  {"MAXIMUM_SCALE","GetTypeInfo",NULL,FIELD_TYPE_SHORT,2,2},
-  {"SQL_DATATYPE","GetTypeInfo",NULL,FIELD_TYPE_SHORT,2,2,NOT_NULL_FLAG},
-  {"SQL_DATETIME_SUB","GetTypeInfo",NULL,FIELD_TYPE_SHORT,2,2},
-  {"NUM_PREC_RADIX","GetTypeInfo",NULL,FIELD_TYPE_LONG,10,10},
-  {"INTERVAL_PRECISION","GetTypeInfo",NULL,FIELD_TYPE_SHORT,2,2},
+  {"TYPE_NAME","GetTypeInfo",NULL,NULL,NULL,32,32,NOT_NULL_FLAG,0,FIELD_TYPE_VAR_STRING},
+  {"DATA_TYPE","GetTypeInfo",NULL,NULL,NULL,2,2,NOT_NULL_FLAG,0,FIELD_TYPE_SHORT},
+  {"COLUMN_SIZE","GetTypeInfo",NULL,NULL,NULL,10,10,0,0,FIELD_TYPE_LONG},
+  {"LITERAL_PREFIX","GetTypeInfo",NULL,NULL,NULL,2,2,0,0,FIELD_TYPE_VAR_STRING},
+  {"LITERAL_SUFFIX","GetTypeInfo",NULL,NULL,NULL,2,2,0,0,FIELD_TYPE_VAR_STRING},
+  {"CREATE_PARAMS","GetTypeInfo",NULL,NULL,NULL,15,15,0,0,FIELD_TYPE_VAR_STRING},
+  {"NULLABLE","GetTypeInfo",NULL,NULL,NULL,2,2,NOT_NULL_FLAG,0,FIELD_TYPE_SHORT},
+  {"CASE_SENSITIVE","GetTypeInfo",NULL,NULL,NULL,2,2,NOT_NULL_FLAG,0,FIELD_TYPE_SHORT},
+  {"SEARCHABLE","GetTypeInfo",NULL,NULL,NULL,2,2,NOT_NULL_FLAG,0,FIELD_TYPE_SHORT},
+  {"UNSIGNED_ATTRIBUTE","GetTypeInfo",NULL,NULL,NULL,2,2,0,0,FIELD_TYPE_SHORT},
+  {"FIXED_PREC_SCALE","GetTypeInfo",NULL,NULL,NULL,2,2,NOT_NULL_FLAG,0,FIELD_TYPE_SHORT},
+  {"AUTO_UNIQUE_VALUE","GetTypeInfo",NULL,NULL,NULL,2,2,0,0,FIELD_TYPE_SHORT},
+  {"LOCAL_TYPE_NAME","GetTypeInfo",NULL,NULL,NULL,60,60,0,0,FIELD_TYPE_VAR_STRING},
+  {"MINIMUM_SCALE","GetTypeInfo",NULL,NULL,NULL,2,2,0,0,FIELD_TYPE_SHORT},
+  {"MAXIMUM_SCALE","GetTypeInfo",NULL,NULL,NULL,2,2,0,0,FIELD_TYPE_SHORT},
+  {"SQL_DATATYPE","GetTypeInfo",NULL,NULL,NULL,2,2,NOT_NULL_FLAG,0,FIELD_TYPE_SHORT},
+  {"SQL_DATETIME_SUB","GetTypeInfo",NULL,NULL,NULL,2,2,0,0,FIELD_TYPE_SHORT},
+  {"NUM_PREC_RADIX","GetTypeInfo",NULL,NULL,NULL,10,10,0,0,FIELD_TYPE_LONG},
+  {"INTERVAL_PRECISION","GetTypeInfo",NULL,NULL,NULL,2,2,0,0,FIELD_TYPE_SHORT},
 };
 

diff -u -r original/unixODBC-2.2.8/Drivers/MySQL/options.c patched/unixODBC-2.2.8/Drivers/MySQL/options.c
--- original/unixODBC-2.2.8/Drivers/MySQL/options.c	2002-04-10 16:14:08.000000000 +0200
+++ patched/unixODBC-2.2.8/Drivers/MySQL/options.c	2004-04-16 20:43:25.000000000 +0200
@@ -295,7 +295,7 @@
     pthread_mutex_lock(&dbc->lock);
     if (mysql_select_db(&dbc->mysql,(char*) ValuePtr))
     {
-      set_handle_error(SQL_HANDLE_DBC,dbc,MYERR_S1000,mysql_error(&dbc->mysql),
+      set_handle_error(SQL_HANDLE_DBC,dbc,MYERR_S1000,(SQLCHAR *)mysql_error(&dbc->mysql),
            mysql_errno(&dbc->mysql));
       pthread_mutex_unlock(&dbc->lock);
       DBUG_RETURN(SQL_ERROR);
@@ -412,7 +412,7 @@
     break;
 
   case SQL_ATTR_CONNECTION_TIMEOUT:
-    *((SQLUINTEGER *) ValuePtr)= dbc->mysql.net.timeout;
+    *((SQLUINTEGER *) ValuePtr)= dbc->mysql.net.read_timeout;
     break;
 
   case SQL_ATTR_CURRENT_CATALOG:
diff -u -r original/unixODBC-2.2.8/Drivers/MySQL/results.c patched/unixODBC-2.2.8/Drivers/MySQL/results.c
--- original/unixODBC-2.2.8/Drivers/MySQL/results.c	2002-04-10 16:14:08.000000000 +0200
+++ patched/unixODBC-2.2.8/Drivers/MySQL/results.c	2004-04-16 20:43:34.000000000 +0200
@@ -606,7 +606,7 @@
   if (!stmt->result)
   {
     set_handle_error(SQL_HANDLE_STMT,stmt,MYERR_S1000,
-         mysql_error(&stmt->dbc->mysql),
+         (SQLCHAR *)mysql_error(&stmt->dbc->mysql),
          mysql_errno(&stmt->dbc->mysql));
     pthread_mutex_unlock(&stmt->dbc->lock);
     return(SQL_ERROR);
diff -u -r original/unixODBC-2.2.8/Drivers/MySQL/transact.c patched/unixODBC-2.2.8/Drivers/MySQL/transact.c
--- original/unixODBC-2.2.8/Drivers/MySQL/transact.c	2002-04-10 16:14:08.000000000 +0200
+++ patched/unixODBC-2.2.8/Drivers/MySQL/transact.c	2004-04-16 20:43:34.000000000 +0200
@@ -73,7 +73,7 @@
 	mysql_real_query(&dbc->mysql,query,strlen(query)))
     {
       result=set_handle_error(SQL_HANDLE_DBC,hdbc,MYERR_S1000,
-			      mysql_error(&dbc->mysql),
+			      (SQLCHAR *)mysql_error(&dbc->mysql),
                               mysql_errno(&dbc->mysql));
     }
     pthread_mutex_unlock(&dbc->lock);
diff -u -r original/unixODBC-2.2.8/Drivers/MySQL/utility.c patched/unixODBC-2.2.8/Drivers/MySQL/utility.c
--- original/unixODBC-2.2.8/Drivers/MySQL/utility.c	2002-04-10 16:14:08.000000000 +0200
+++ patched/unixODBC-2.2.8/Drivers/MySQL/utility.c	2004-04-16 20:44:58.000000000 +0200
@@ -47,7 +47,7 @@
       mysql_real_query(&dbc->mysql,query,strlen(query)))
   {
     result = set_handle_error(SQL_HANDLE_DBC,dbc,MYERR_S1000,
-            mysql_error(&dbc->mysql),
+            (SQLCHAR *)mysql_error(&dbc->mysql),
             mysql_errno(&dbc->mysql));
   }
   pthread_mutex_unlock(&dbc->lock);
