Pantek Library
Hosting Provided By
CybrHost
High Speed Hosting

Connector/ODBC 3.51 commit: r731 - in branches/guffert: . driver test

From: <jwinstead(at)mysql.com>
Date: Fri Aug 31 2007 - 19:42:00 EDT


Modified:

   branches/guffert/
   branches/guffert/BUILD.win
   branches/guffert/ChangeLog
   branches/guffert/driver/catalog.c
   branches/guffert/driver/cursor.c
   branches/guffert/driver/driver.h
   branches/guffert/driver/execute.c
   branches/guffert/driver/handle.c
   branches/guffert/driver/info.c
   branches/guffert/driver/myutil.h
   branches/guffert/driver/options.c
   branches/guffert/driver/prepare.c
   branches/guffert/driver/results.c
   branches/guffert/driver/utility.c
   branches/guffert/test/my_catalog.c

Log:
Merged revisions 714-729 via svnmerge from svn+ssh://bk-internal/connectors-svnroot/connector-odbc3/trunk

.......
  r726 | kboortz | 2007-08-31 00:52:10 -0700 (Fri, 31 Aug 2007) | 3 lines   

  Let SQLGetData() always return SQL_NO_DATA_FOUND on second call when   no data left, even if requested size is 0 (bug#30520). .......
  r727 | kboortz | 2007-08-31 00:57:49 -0700 (Fri, 31 Aug 2007) | 2 lines   

  Added entry for bug#30520
.......
  r729 | jwinstead | 2007-08-31 15:57:07 -0700 (Fri, 31 Aug 2007) | 3 lines   

  Remove use of gptr, because it was removed from 5.1, and eliminate all warnings   in the driver when compiling against the 5.0 or 5.1 client libraries. .......

Property changes on: branches/guffert



Name: svnmerge-integrated
  • /trunk:1-713 + /trunk:1-729

Modified: branches/guffert/BUILD.win


  • branches/guffert/BUILD.win 2007-08-31 23:40:29 UTC (rev 730) +++ branches/guffert/BUILD.win 2007-08-31 23:41:59 UTC (rev 731)
    @@ -97,7 +97,7 @@
    IDE or from the command line one of
   devenv.com MySQL_Connector_ODBC.sln /build Release
-  devenv.com MySQL_Connector_ODBC.sln /build DebWithDbgInfo
+  devenv.com MySQL_Connector_ODBC.sln /build RelWithDbgInfo
   devenv.com MySQL_Connector_ODBC.sln /build Debug
 

 Upon completion; you will find the executables in the target sub

Do you need help?X

Modified: branches/guffert/ChangeLog


  • branches/guffert/ChangeLog 2007-08-31 23:40:29 UTC (rev 730) +++ branches/guffert/ChangeLog 2007-08-31 23:41:59 UTC (rev 731)
    @@ -39,12 +39,14 @@
    Functionality added or changed:

   Bugs fixed:
+ * SQLGetData() will now always return SQL_NO_DATA_FOUND on second call + when no data left, even if requested size is 0. (Bug#30520)  


 

 3.51.19 (8-Aug-2007)  

  • Functionality added or changed: + Functionality added or changed
    • Because of Bug #10491 in the server, character string results were sometimes incorrectly identified as SQL_VARBINARY. Until this server bug is corrected, the driver will identify all variable-length

Modified: branches/guffert/driver/catalog.c


  • branches/guffert/driver/catalog.c 2007-08-31 23:40:29 UTC (rev 730) +++ branches/guffert/driver/catalog.c 2007-08-31 23:41:59 UTC (rev 731)
    @@ -190,17 +190,17 @@
    @return SQL_SUCCESS or SQL_ERROR (and diag is set) */ static SQLRETURN -create_fake_resultset(STMT *stmt, gptr rowval, size_t rowsize, my_ulonglong rowcnt, - MYSQL_FIELD *fields, uint fldcnt) +create_fake_resultset(STMT *stmt, MYSQL_ROW rowval, size_t rowsize, + my_ulonglong rowcnt, MYSQL_FIELD *fields, uint fldcnt) { stmt->result= (MYSQL_RES*) my_malloc(sizeof(MYSQL_RES), MYF(MY_ZEROFILL)); - stmt->result_array= (MYSQL_ROW) my_memdup((gptr) rowval, rowsize, MYF(0)); + stmt->result_array= (MYSQL_ROW)my_memdup((char *)rowval, rowsize, MYF(0)); if (!(stmt->result && stmt->result_array)) { if (stmt->result) - my_free((gptr) stmt->result, MYF(0)); + my_free((char *)stmt->result, MYF(0)); if (stmt->result_array) - my_free((gptr) stmt->result_array, MYF(0)); + my_free((char *)stmt->result_array, MYF(0)); set_mem_error(&stmt->dbc->mysql); return handle_connection_error(stmt); }
    @@ -223,7 +223,7 @@
    @return SQL_SUCCESS or SQL_ERROR (and diag is set) */ static SQLRETURN -create_empty_fake_resultset(STMT *stmt, gptr rowval, size_t rowsize, +create_empty_fake_resultset(STMT *stmt, MYSQL_ROW rowval, size_t rowsize, MYSQL_FIELD *fields, uint fldcnt) { return create_fake_resultset(stmt, rowval, rowsize, 0 /* rowcnt */,
    @@ -314,11 +314,11 @@

 MYSQL_FIELD SQLTABLES_fields[]=
 {

-    {"TABLE_CAT",     NullS,"Catalog",NullS,NullS,NullS,NullS,NAME_LEN,0, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING},
-    {"TABLE_SCHEM",   NullS,"Catalog",NullS,NullS,NullS,NullS,NAME_LEN,0, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING},
-    {"TABLE_NAME",    NullS,"Catalog",NullS,NullS,NullS,NullS,NAME_LEN,NAME_LEN, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING},
-    {"TABLE_TYPE",    NullS,"Catalog",NullS,NullS,NullS,NullS,NAME_LEN,5, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING},
-    {"REMARKS",       NullS,"Catalog",NullS,NullS,NullS,NullS,NAME_LEN,11, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING}
+  MYODBC_FIELD_STRING("TABLE_CAT",   NAME_LEN, 0),
+  MYODBC_FIELD_STRING("TABLE_SCHEM", NAME_LEN, 0),
+  MYODBC_FIELD_STRING("TABLE_NAME",  NAME_LEN, 0),
+  MYODBC_FIELD_STRING("TABLE_TYPE",  NAME_LEN, 0),
+  MYODBC_FIELD_STRING("REMARKS",     NAME_LEN, 0),
 };  

 const uint SQLTABLES_FIELDS= array_elements(SQLTABLES_values);
@@ -372,7 +372,7 @@

         stmt->order         = SQLTABLES_qualifier_order;
         stmt->order_count   = array_elements(SQLTABLES_qualifier_order);
         stmt->fix_fields    = fix_fields_copy;
Do you need more help?X
- stmt->array= (MYSQL_ROW) my_memdup((gptr) SQLTABLES_qualifier_values, + stmt->array= (MYSQL_ROW) my_memdup((char *)SQLTABLES_qualifier_values, sizeof(SQLTABLES_qualifier_values), MYF(0)); if (!stmt->array)
@@ -389,7 +389,7 @@
!TableName[0] ) { /* Return set of allowed Table owners */ - return create_fake_resultset(stmt, (gptr) SQLTABLES_owner_values, + return create_fake_resultset(stmt, SQLTABLES_owner_values, sizeof(SQLTABLES_owner_values), 1, SQLTABLES_fields, SQLTABLES_FIELDS); }
@@ -401,7 +401,7 @@
!myodbc_casecmp(TableType,"SQL_ALL_TABLE_TYPES",19)) ) { /* Return set of TableType qualifiers */ - return create_fake_resultset(stmt, (gptr) SQLTABLES_type_values, + return create_fake_resultset(stmt, (MYSQL_ROW)SQLTABLES_type_values, sizeof(SQLTABLES_type_values), sizeof(SQLTABLES_type_values) / sizeof(SQLTABLES_type_values[0]),
@@ -514,7 +514,7 @@
return SQL_SUCCESS;

 empty_set:
- return create_empty_fake_resultset(stmt, (gptr) SQLTABLES_values, + return create_empty_fake_resultset(stmt, SQLTABLES_values,

                                      sizeof(SQLTABLES_values),
                                      SQLTABLES_fields,
                                      SQLTABLES_FIELDS);

@@ -540,24 +540,24 @@
 

 MYSQL_FIELD SQLCOLUMNS_fields[]=
 {

-    {"TABLE_CAT",         NullS,"MySQL_Catalog",NullS,NullS,NullS,NullS,NAME_LEN,0, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING},
-    {"TABLE_SCHEM",       NullS,"MySQL_Catalog",NullS,NullS,NullS,NullS,NAME_LEN,0, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING},
-    {"TABLE_NAME",        NullS,"MySQL_Catalog",NullS,NullS,NullS,NullS,NAME_LEN,NAME_LEN, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_VAR_STRING},
Can't find what you're looking for?X
- {"COLUMN_NAME", NullS,"MySQL_Catalog",NullS,NullS,NullS,NullS,NAME_LEN,NAME_LEN, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_VAR_STRING}, - {"DATA_TYPE", NullS,"MySQL_Catalog",NullS,NullS,NullS,NullS,5,5, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_SHORT}, - {"TYPE_NAME", NullS,"MySQL_Catalog",NullS,NullS,NullS,NullS,20,20, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_VAR_STRING}, - {"COLUMN_SIZE", NullS,"MySQL_Catalog",NullS,NullS,NullS,NullS,11,11, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_LONG}, - {"BUFFER_LENGTH", NullS,"MySQL_Catalog",NullS,NullS,NullS,NullS,11,11, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_LONG}, - {"DECIMAL_DIGITS", NullS,"MySQL_Catalog",NullS,NullS,NullS,NullS,2,2, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_SHORT}, - {"NUM_PREC_RADIX", NullS,"MySQL_Catalog",NullS,NullS,NullS,NullS,2,2, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_SHORT}, - {"NULLABLE", NullS,"MySQL_Catalog",NullS,NullS,NullS,NullS,5,5, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_SHORT}, - {"REMARKS", NullS,"MySQL_Catalog",NullS,NullS,NullS,NullS,NAME_LEN,NAME_LEN, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING}, - {"COLUMN_DEF", NullS,"MySQL_Catalog",NullS,NullS,NullS,NullS,NAME_LEN,NAME_LEN, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING}, - {"SQL_DATA_TYPE", NullS,"MySQL_Catalog",NullS,NullS,NullS,NullS,5,5, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_SHORT}, - {"SQL_DATETIME_SUB", NullS,"MySQL_Catalog",NullS,NullS,NullS,NullS,2,2, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_SHORT}, - {"CHAR_OCTET_LENGTH", NullS,"MySQL_Catalog",NullS,NullS,NullS,NullS,11,11, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_LONG}, - {"ORDINAL_POSITION", NullS,"MySQL_Catalog",NullS,NullS,NullS,NullS,11,11, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_LONG},
Don't know where to look next?X
- {"IS_NULLABLE", NullS,"MySQL_Catalog",NullS,NullS,NullS,NullS,3,3, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING} + MYODBC_FIELD_STRING("TABLE_CAT", NAME_LEN, 0), + MYODBC_FIELD_STRING("TABLE_SCHEM", NAME_LEN, 0), + MYODBC_FIELD_STRING("TABLE_NAME", NAME_LEN, NOT_NULL_FLAG), + MYODBC_FIELD_STRING("COLUMN_NAME", NAME_LEN, NOT_NULL_FLAG), + MYODBC_FIELD_SHORT("DATA_TYPE", NOT_NULL_FLAG), + MYODBC_FIELD_STRING("TYPE_NAME", 20, NOT_NULL_FLAG), + MYODBC_FIELD_LONG("COLUMN_SIZE", 0), + MYODBC_FIELD_LONG("BUFFER_LENGTH", 0), + MYODBC_FIELD_SHORT("DECIMAL_DIGITS", 0), + MYODBC_FIELD_SHORT("NUM_PREC_RADIX", 0), + MYODBC_FIELD_SHORT("NULLABLE", NOT_NULL_FLAG), + MYODBC_FIELD_STRING("REMARKS", NAME_LEN, 0), + MYODBC_FIELD_STRING("COLUMN_DEF", NAME_LEN, 0), + MYODBC_FIELD_SHORT("SQL_DATA_TYPE", NOT_NULL_FLAG), + MYODBC_FIELD_SHORT("SQL_DATETIME_SUB", 0), + MYODBC_FIELD_LONG("CHAR_OCTET_LENGTH", 0),
+ MYODBC_FIELD_LONG("ORDINAL_POSITION", NOT_NULL_FLAG), + MYODBC_FIELD_STRING("IS_NULLABLE", 3, 0),  };  
Can we help you?X

 const uint SQLCOLUMNS_FIELDS= array_elements(SQLCOLUMNS_values);
@@ -756,7 +756,7 @@
 

     rows+= mysql_num_fields(table_res);  

  • stmt->result_array= (char **)my_realloc((gptr)stmt->result_array, + stmt->result_array= (char **)my_realloc((char *)stmt->result_array, sizeof(char *) * SQLCOLUMNS_FIELDS * rows, MYF(MY_ALLOW_ZERO_PTR));
    @@ -891,7 +891,7 @@
    return SQL_SUCCESS;

 empty_set:
- return create_empty_fake_resultset(stmt, (gptr) SQLCOLUMNS_values, + return create_empty_fake_resultset(stmt, SQLCOLUMNS_values,

                                      sizeof(SQLCOLUMNS_values),
                                      SQLCOLUMNS_fields,
                                      SQLCOLUMNS_FIELDS);

@@ -910,19 +910,19 @@
 

 MYSQL_FIELD SQLSTAT_fields[]=
 {

-    {"TABLE_CAT",         NullS,"MySQL_Stat",NullS,NullS,NullS,NullS,NAME_LEN,0, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING},
-    {"TABLE_SCHEM",       NullS,"MySQL_Stat",NullS,NullS,NullS,NullS,NAME_LEN,0, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING},
-    {"TABLE_NAME",        NullS,"MySQL_Stat",NullS,NullS,NullS,NullS,NAME_LEN,NAME_LEN, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_VAR_STRING},
-    {"NON_UNIQUE",        NullS,"MySQL_Stat",NullS,NullS,NullS,NullS,1,1, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_SHORT},
Confused? Frustrated?X
- {"INDEX_QUALIFIER", NullS,"MySQL_Stat",NullS,NullS,NullS,NullS,NAME_LEN,0, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING}, - {"INDEX_NAME", NullS,"MySQL_Stat",NullS,NullS,NullS,NullS,NAME_LEN,NAME_LEN, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING}, - {"TYPE", NullS,"MySQL_Stat",NullS,NullS,NullS,NullS,1,1, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_SHORT}, - {"ORDINAL_POSITION", NullS,"MySQL_Stat",NullS,NullS,NullS,NullS,1,2, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_SHORT}, - {"COLUMN_NAME", NullS,"MySQL_Stat",NullS,NullS,NullS,NullS,NAME_LEN,NAME_LEN, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_VAR_STRING}, - {"ASC_OR_DESC", NullS,"MySQL_Stat",NullS,NullS,NullS,NullS,1,1, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING}, - {"CARDINALITY", NullS,"MySQL_Stat",NullS,NullS,NullS,NullS,11,11, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_LONG}, - {"PAGES", NullS,"MySQL_Stat",NullS,NullS,NullS,NullS,9,9, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_LONG}, - {"FILTER_CONDITION", NullS,"MySQL_Stat",NullS,NullS,NullS,NullS,10,10, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING}, + MYODBC_FIELD_STRING("TABLE_CAT", NAME_LEN, 0), + MYODBC_FIELD_STRING("TABLE_SCHEM", NAME_LEN, 0), + MYODBC_FIELD_STRING("TABLE_NAME", NAME_LEN, NOT_NULL_FLAG), + MYODBC_FIELD_SHORT("NON_UNIQUE", 0), + MYODBC_FIELD_STRING("INDEX_QUALIFIER", NAME_LEN, 0), + MYODBC_FIELD_STRING("INDEX_NAME", NAME_LEN, 0), + MYODBC_FIELD_SHORT("TYPE", NOT_NULL_FLAG), + MYODBC_FIELD_SHORT("ORDINAL_POSITION", 0), + MYODBC_FIELD_STRING("COLUMN_NAME", NAME_LEN, 0), + MYODBC_FIELD_STRING("ASC_OR_DESC", 1, 0), + MYODBC_FIELD_SHORT("CARDINALITY", 0),
+ MYODBC_FIELD_SHORT("PAGES", 0),
+ MYODBC_FIELD_STRING("FILTER_CONDITION", 10, 0),  };  

 const uint SQLSTAT_FIELDS= array_elements(SQLSTAT_fields);
@@ -998,7 +998,7 @@

     stmt->order=       SQLSTAT_order;
     stmt->order_count= array_elements(SQLSTAT_order);
Call Pantek today for Open Source Technical Support at 1-877-546-8934 - 24/7/365X
stmt->fix_fields= fix_fields_copy; - stmt->array= (MYSQL_ROW) my_memdup((gptr) SQLSTAT_values, + stmt->array= (MYSQL_ROW) my_memdup((char *)SQLSTAT_values, sizeof(SQLSTAT_values),MYF(0)); if (!stmt->array) {
@@ -1035,7 +1035,7 @@
return SQL_SUCCESS;

 empty_set:
- return create_empty_fake_resultset(stmt, (gptr) SQLSTAT_values, + return create_empty_fake_resultset(stmt, SQLSTAT_values,

                                      sizeof(SQLSTAT_values),
                                      SQLSTAT_fields, SQLSTAT_FIELDS);
 }
@@ -1108,13 +1108,13 @@
 

 MYSQL_FIELD SQLTABLES_priv_fields[]=
 {

-    {"TABLE_CAT",     NullS,"MySQL_Catalog",NullS,NullS,NullS,NullS,NAME_LEN,0, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING},
-    {"TABLE_SCHEM",   NullS,"MySQL_Catalog",NullS,NullS,NullS,NullS,NAME_LEN,0, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING},
-    {"TABLE_NAME",    NullS,"MySQL_Catalog",NullS,NullS,NullS,NullS,NAME_LEN,NAME_LEN, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_VAR_STRING},
-    {"GRANTOR",       NullS,"MySQL_Catalog",NullS,NullS,NullS,NullS,NAME_LEN,0, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING},
-    {"GRANTEE",       NullS,"MySQL_Catalog",NullS,NullS,NullS,NullS,NAME_LEN,NAME_LEN, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_VAR_STRING},
-    {"PRIVILEGE",     NullS,"MySQL_Catalog",NullS,NullS,NullS,NullS,NAME_LEN,NAME_LEN, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_VAR_STRING},
-    {"IS_GRANTABLE",  NullS,"MySQL_Catalog",NullS,NullS,NullS,NullS,NAME_LEN,0, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING},
+  MYODBC_FIELD_STRING("TABLE_CAT", NAME_LEN, 0),
+  MYODBC_FIELD_STRING("TABLE_SCHEM", NAME_LEN, 0),
+  MYODBC_FIELD_STRING("TABLE_NAME", NAME_LEN, NOT_NULL_FLAG),
+  MYODBC_FIELD_STRING("GRANTOR", NAME_LEN, 0),
+  MYODBC_FIELD_STRING("GRANTEE", NAME_LEN, NOT_NULL_FLAG),
+ MYODBC_FIELD_STRING("PRIVILEGE", NAME_LEN, NOT_NULL_FLAG), + MYODBC_FIELD_STRING("IS_GRANTABLE", NAME_LEN, 0),  };  

 const uint SQLTABLES_PRIV_FIELDS= array_elements(SQLTABLES_priv_values);
@@ -1243,17 +1243,16 @@

Do you need help?X

     NULL,"",NULL,NULL,NULL,NULL,NULL,NULL  };  

-
 MYSQL_FIELD SQLCOLUMNS_priv_fields[]=
 {

-    {"TABLE_CAT",     NullS,"MySQL_Catalog",NullS,NullS,NullS,NullS,NAME_LEN,0, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING},
Do you need more help?X
- {"TABLE_SCHEM", NullS,"MySQL_Catalog",NullS,NullS,NullS,NullS,NAME_LEN,0, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING}, - {"TABLE_NAME", NullS,"MySQL_Catalog",NullS,NullS,NullS,NullS,NAME_LEN,NAME_LEN, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_VAR_STRING}, - {"COLUMN_NAME", NullS,"MySQL_Catalog",NullS,NullS,NullS,NullS,NAME_LEN,NAME_LEN, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_VAR_STRING}, - {"GRANTOR", NullS,"MySQL_Catalog",NullS,NullS,NullS,NullS,NAME_LEN,0, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING}, - {"GRANTEE", NullS,"MySQL_Catalog",NullS,NullS,NullS,NullS,NAME_LEN,NAME_LEN, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_VAR_STRING}, - {"PRIVILEGE", NullS,"MySQL_Catalog",NullS,NullS,NullS,NullS,NAME_LEN,NAME_LEN, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_VAR_STRING}, - {"IS_GRANTABLE", NullS,"MySQL_Catalog",NullS,NullS,NullS,NullS,NAME_LEN,0, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING}, + MYODBC_FIELD_STRING("TABLE_CAT", NAME_LEN, 0), + MYODBC_FIELD_STRING("TABLE_SCHEM", NAME_LEN, 0), + MYODBC_FIELD_STRING("TABLE_NAME", NAME_LEN, NOT_NULL_FLAG), + MYODBC_FIELD_STRING("COLUMN_NAME", NAME_LEN, NOT_NULL_FLAG), + MYODBC_FIELD_STRING("GRANTOR", NAME_LEN, 0), + MYODBC_FIELD_STRING("GRANTEE", NAME_LEN, NOT_NULL_FLAG),
+ MYODBC_FIELD_STRING("PRIVILEGE", NAME_LEN, NOT_NULL_FLAG), + MYODBC_FIELD_STRING("IS_GRANTABLE", NAME_LEN, 0),  };    

@@ -1349,14 +1348,14 @@
 

 MYSQL_FIELD SQLSPECIALCOLUMNS_fields[]=  {

-    {"SCOPE",         NullS,"MySQL_SpecialColumns",NullS,NullS,NullS,NullS,5,5, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_SHORT},
-    {"COLUMN_NAME",   NullS,"MySQL_SpecialColumns",NullS,NullS,NullS,NullS,NAME_LEN,NAME_LEN, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_VAR_STRING},
-    {"DATA_TYPE",     NullS,"MySQL_SpecialColumns",NullS,NullS,NullS,NullS,5,5, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_SHORT},
-    {"TYPE_NAME",     NullS,"MySQL_SpecialColumns",NullS,NullS,NullS,NullS,20,20, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_VAR_STRING},
Can we help you?X
- {"COLUMN_SIZE", NullS,"MySQL_SpecialColumns",NullS,NullS,NullS,NullS,7,7, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_LONG}, - {"BUFFER_LENGTH", NullS,"MySQL_SpecialColumns",NullS,NullS,NullS,NullS,7,7, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_LONG}, - {"DECIMAL_DIGITS",NullS,"MySQL_SpecialColumns",NullS,NullS,NullS,NullS,3,3, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_SHORT}, - {"PSEUDO_COLUMN", NullS,"MySQL_SpecialColumns",NullS,NullS,NullS,NullS,3,3, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_SHORT} + MYODBC_FIELD_SHORT("SCOPE", 0), + MYODBC_FIELD_STRING("COLUMN_NAME", NAME_LEN, NOT_NULL_FLAG), + MYODBC_FIELD_SHORT("DATA_TYPE", NOT_NULL_FLAG), + MYODBC_FIELD_STRING("TYPE_NAME", 20, NOT_NULL_FLAG), + MYODBC_FIELD_LONG("COLUMN_SIZE", 0), + MYODBC_FIELD_LONG("BUFFER_LENGTH", 0),
+ MYODBC_FIELD_LONG("DECIMAL_DIGITS", 0), + MYODBC_FIELD_SHORT("PSEUDO_COLUMN", 0),  };  

 char *SQLSPECIALCOLUMNS_values[]= {
@@ -1553,12 +1552,12 @@
 

 MYSQL_FIELD SQLPRIM_KEYS_fields[]=
 {

-    {"TABLE_CAT",     NullS,"MySQL_Primary_keys",NullS,NullS,NullS,NullS,NAME_LEN,0, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING},
-    {"TABLE_SCHEM",   NullS,"MySQL_Primary_keys",NullS,NullS,NullS,NullS,NAME_LEN,0, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING},
-    {"TABLE_NAME",    NullS,"MySQL_Primary_keys",NullS,NullS,NullS,NullS,NAME_LEN,NAME_LEN,  0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_VAR_STRING},
-    {"COLUMN_NAME",   NullS,"MySQL_Primary_keys",NullS,NullS,NullS,NullS,NAME_LEN,NAME_LEN,  0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_VAR_STRING},
-    {"KEY_SEQ",       NullS,"MySQL_Primary_keys",NullS,NullS,NullS,NullS,2,2, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_SHORT},
-    {"PK_NAME",       NullS,"MySQL_Primary_keys",NullS,NullS,NullS,NullS,128,0, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING},
+  MYODBC_FIELD_STRING("TABLE_CAT", NAME_LEN, 0),
Can't find what you're looking for?X
+ MYODBC_FIELD_STRING("TABLE_SCHEM", NAME_LEN, 0), + MYODBC_FIELD_STRING("TABLE_NAME", NAME_LEN, NOT_NULL_FLAG), + MYODBC_FIELD_STRING("COLUMN_NAME", NAME_LEN, NOT_NULL_FLAG),
+ MYODBC_FIELD_SHORT("KEY_SEQ", NOT_NULL_FLAG), + MYODBC_FIELD_STRING("PK_NAME", 128, 0),  };  

 const uint SQLPRIM_KEYS_FIELDS= array_elements(SQLPRIM_KEYS_fields);
@@ -1644,20 +1643,20 @@

 */
 MYSQL_FIELD SQLFORE_KEYS_fields[]=
 {

-    {"PKTABLE_CAT",   NullS,"MySQL_Foreign_keys",NullS,NullS,NullS,NullS,NAME_LEN,0, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING},
-    {"PKTABLE_SCHEM", NullS,"MySQL_Foreign_keys",NullS,NullS,NullS,NullS,NAME_LEN,0, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING},
-    {"PKTABLE_NAME",  NullS,"MySQL_Foreign_keys",NullS,NullS,NullS,NullS,NAME_LEN,NAME_LEN, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_VAR_STRING},
-    {"PKCOLUMN_NAME", NullS,"MySQL_Foreign_keys",NullS,NullS,NullS,NullS,NAME_LEN,NAME_LEN, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_VAR_STRING},
-    {"FKTABLE_CAT",   NullS,"MySQL_Foreign_keys",NullS,NullS,NullS,NullS,NAME_LEN,0, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING},
-    {"FKTABLE_SCHEM", NullS,"MySQL_Foreign_keys",NullS,NullS,NullS,NullS,NAME_LEN,NAME_LEN, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_VAR_STRING},
-    {"FKTABLE_NAME",  NullS,"MySQL_Foreign_keys",NullS,NullS,NullS,NullS,NAME_LEN,NAME_LEN, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_VAR_STRING},
-    {"FKCOLUMN_NAME", NullS,"MySQL_Foreign_keys",NullS,NullS,NullS,NullS,NAME_LEN,NAME_LEN, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_VAR_STRING},
-    {"KEY_SEQ",       NullS,"MySQL_Foreign_keys",NullS,NullS,NullS,NullS,2,2, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_SHORT},
-    {"UPDATE_RULE",   NullS,"MySQL_Foreign_keys",NullS,NullS,NullS,NullS,2,2, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_SHORT},
-    {"DELETE_RULE",   NullS,"MySQL_Foreign_keys",NullS,NullS,NullS,NullS,2,2, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_SHORT},
-    {"FK_NAME",       NullS,"MySQL_Foreign_keys",NullS,NullS,NullS,NullS,128,0, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING},
Don't know where to look next?X
- {"PK_NAME", NullS,"MySQL_Foreign_keys",NullS,NullS,NullS,NullS,128,0, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING}, - {"DEFERRABILITY", NullS,"MySQL_Foreign_keys",NullS,NullS,NullS,NullS,2,2, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_SHORT}, + MYODBC_FIELD_STRING("PKTABLE_CAT", NAME_LEN, 0), + MYODBC_FIELD_STRING("PKTABLE_SCHEM", NAME_LEN, 0), + MYODBC_FIELD_STRING("PKTABLE_NAME", NAME_LEN, NOT_NULL_FLAG), + MYODBC_FIELD_STRING("PKCOLUMN_NAME", NAME_LEN, NOT_NULL_FLAG), + MYODBC_FIELD_STRING("FKTABLE_CAT", NAME_LEN, 0), + MYODBC_FIELD_STRING("FKTABLE_SCHEM", NAME_LEN, 0), + MYODBC_FIELD_STRING("FKTABLE_NAME", NAME_LEN, NOT_NULL_FLAG), + MYODBC_FIELD_STRING("FKCOLUMN_NAME", NAME_LEN, NOT_NULL_FLAG), + MYODBC_FIELD_SHORT("KEY_SEQ", NOT_NULL_FLAG), + MYODBC_FIELD_SHORT("UPDATE_RULE", 0), + MYODBC_FIELD_SHORT("DELETE_RULE", 0), + MYODBC_FIELD_STRING("FK_NAME", NAME_LEN, 0),
+ MYODBC_FIELD_STRING("PK_NAME", NAME_LEN, 0), + MYODBC_FIELD_SHORT("DEFERRABILITY", 0),  };  

 const uint SQLFORE_KEYS_FIELDS= array_elements(SQLFORE_KEYS_fields);
@@ -1872,13 +1871,15 @@
 

                 } while ( (comment_token = strchr(comment_token,';')) );/* multi table ref */
             }
-        } 
-        
+        }
+
         /* Copy only the elements that contain fk names */
-        stmt->result_array= (MYSQL_ROW) my_memdup((gptr) tempdata,
-                                                sizeof(char*)*SQLFORE_KEYS_FIELDS*row_count, 
-                                                MYF(0)); 
-        my_free((gptr)tempdata, MYF(0));
+        stmt->result_array= (MYSQL_ROW)my_memdup((char *)tempdata,
+                                                 sizeof(char *) *
+                                                 SQLFORE_KEYS_FIELDS *
+                                                 row_count,
+                                                 MYF(0));
Call Pantek today for Open Source Technical Support at 1-877-546-8934 - 24/7/365X
+ my_free((char *)tempdata, MYF(0)); if (!stmt->result_array) { set_mem_error(&stmt->dbc->mysql);
@@ -1894,7 +1895,7 @@
return SQL_SUCCESS;
Confused? Frustrated?X

 empty_set:
- return create_empty_fake_resultset(stmt, (gptr) SQLFORE_KEYS_values, + return create_empty_fake_resultset(stmt, SQLFORE_KEYS_values,

                                      sizeof(SQLFORE_KEYS_values),
                                      SQLFORE_KEYS_fields,
                                      SQLFORE_KEYS_FIELDS);

Modified: branches/guffert/driver/cursor.c


  • branches/guffert/driver/cursor.c 2007-08-31 23:40:29 UTC (rev 730) +++ branches/guffert/driver/cursor.c 2007-08-31 23:41:59 UTC (rev 731)
    @@ -433,7 +433,7 @@
    /* insert "," */ param.SqlType= SQL_INTEGER; param.CType= SQL_C_CHAR; - param.buffer= (gptr) ","; + param.buffer= ","; *param.actual_len= 1;

     if ( !(*to= (SQLCHAR*) insert_param(stmt->dbc,(char*) *to, &param)) )
@@ -488,7 +488,7 @@

     /* Insert " AND ", where clause with multiple search */
     dummy.SqlType= SQL_INTEGER;
     dummy.CType= SQL_C_CHAR;
-    dummy.buffer= (gptr) " AND ";
+    dummy.buffer= " AND ";
     dummy.actual_len= &dummy_len;
 
     if ( !(*to= (SQLCHAR*) insert_param(stmt->dbc, (char*) *to, &dummy)) )

@@ -521,7 +521,7 @@
 
     if ( row_data && *row_data )
     {
-        param.buffer= (gptr) *row_data;
+        param.buffer= *row_data;
         length= strlen(*row_data);
 
         param.actual_len= &length;

@@ -773,7 +773,7 @@
PARAM_BIND *param= dynamic_element(&stmt->params,pcount,PARAM_BIND*); PARAM_BIND *paramNew= dynamic_element(&stmtNew->params,pcount,PARAM_BIND*); param->pos_in_query= paramNew->pos_in_query; - set_dynamic(&stmtNew->params,(gptr) param,pcount); + set_dynamic(&stmtNew->params, (DYNAMIC_ELEMENT)param, pcount); }

 }  

@@ -844,7 +844,7 @@

         param.used= 1;
         param.SqlType= get_sql_data_type(stmt, field, NULL);
         param.CType= bind->fCType;
-        param.buffer= (gptr) bind->rgbValue+irow*bind->cbValueMax;
+        param.buffer= bind->rgbValue+irow*bind->cbValueMax;
         param.ValueMax= bind->cbValueMax;
         /*
             Check when SQL_LEN_DATA_AT_EXEC() macro was used instead of data length

@@ -1161,7 +1161,7 @@
element_size= stmt->stmt_options.bind_type; if (bind->pcbValue) - ind_or_len= *(SQLLEN *)((gptr)bind->pcbValue +
Do you need help?X
+ ind_or_len= *(SQLLEN *)((char *)bind->pcbValue + binding_offset + count * (element_size ? element_size :

@@ -1171,7 +1171,7 @@
 
                 param.SqlType= get_sql_data_type(stmt, field, NULL);
                 param.CType = bind->fCType;
-                param.buffer= ((gptr)bind->rgbValue +
+                param.buffer= ((char *)bind->rgbValue +
                                binding_offset +
                                count * (element_size ?
                                         element_size :

@@ -1462,7 +1462,7 @@

   if (!stmt->cursor.name)
     set_dynamic_cursor_name(stmt);  

  • return stmt->cursor.name; + return (SQLCHAR *)stmt->cursor.name; }

Modified: branches/guffert/driver/driver.h


  • branches/guffert/driver/driver.h 2007-08-31 23:40:29 UTC (rev 730) +++ branches/guffert/driver/driver.h 2007-08-31 23:41:59 UTC (rev 731)
    @@ -330,7 +330,7 @@
    MYCURSOR cursor; MYERROR error; STMT_OPTIONS stmt_options; - const char *table_name; + char *table_name; char *query,*query_end; /* We save a copy of the original query before we modify it for 'WHERE

Modified: branches/guffert/driver/execute.c


  • branches/guffert/driver/execute.c 2007-08-31 23:40:29 UTC (rev 730) +++ branches/guffert/driver/execute.c 2007-08-31 23:41:59 UTC (rev 731)
    @@ -51,8 +51,8 @@
    if ( !query ) return error; /* Probably error from insert_param */
    • if ( stmt->stmt_options.max_rows && stmt->stmt_options.max_rows !=
    • (SQLULEN) ~0L ) + if (stmt->stmt_options.max_rows && + stmt->stmt_options.max_rows != (SQLULEN)~0L) { /* Add limit to select statement */ char *pos,*tmp_buffer;
      @@ -66,7 +66,7 @@
      sprintf(tmp_buffer+length, " limit %lu", (unsigned long)stmt->stmt_options.max_rows); if ( query != stmt->query )
    • my_free((gptr) query,MYF(0)); + my_free(query,MYF(0)); query= tmp_buffer; } }
      @@ -115,7 +115,7 @@
      exit: pthread_mutex_unlock(&stmt->dbc->lock); if ( query != stmt->query )
    • my_free((gptr) query,MYF(0)); + my_free(query,MYF(0));
     /*
       If the original query was modified, we reset stmt->query so that the

@@ -123,7 +123,7 @@
*/ if (stmt->orig_query) { - my_free((gptr) stmt->query,MYF(0)); + my_free(stmt->query,MYF(0)); stmt->query= stmt->orig_query; stmt->query_end= stmt->orig_query_end; stmt->orig_query= NULL;
@@ -260,7 +260,7 @@
if (data) { if (param->CType == SQL_C_WCHAR) - length= sqlwchar_strlen((SQLWCHAR *)data); + length= sqlwchar_strlen((SQLWCHAR *)data) * sizeof(SQLWCHAR); else length= strlen(data);
@@ -761,7 +761,7 @@
else { /* This should never happen */ - gptr old_pos= param->value; + char *old_pos= param->value; if ( !(param->value= my_malloc(param->value_length+cbValue+1,MYF(0))) ) return set_error(stmt,MYERR_S1001,NULL,4001); memcpy(param->value,old_pos,param->value_length);

Modified: branches/guffert/driver/handle.c


  • branches/guffert/driver/handle.c 2007-08-31 23:40:29 UTC (rev 730) +++ branches/guffert/driver/handle.c 2007-08-31 23:41:59 UTC (rev 731)
    @@ -425,11 +425,11 @@
    } } else - x_free((gptr)stmt->result); - x_free((gptr) stmt->fields); - x_free((gptr) stmt->array); - x_free((gptr) stmt->result_array); - x_free((gptr) stmt->odbc_types); + x_free(stmt->result); + x_free(stmt->fields); + x_free(stmt->array); + x_free(stmt->result_array); + x_free(stmt->odbc_types); stmt->result= 0; stmt->fake_result= 0; stmt->result_lengths= 0;
    @@ -446,7 +446,7 @@
    if (fOption == MYSQL_RESET_BUFFERS) return SQL_SUCCESS;
    • x_free((gptr) stmt->table_name); + x_free(stmt->table_name); stmt->table_name= 0; stmt->dummy_state= ST_DUMMY_UNKNOWN; stmt->cursor.pk_validated= FALSE;
      @@ -459,8 +459,8 @@
      return SQL_SUCCESS;
Do you need more help?X

     /* At this point, only MYSQL_RESET and SQL_DROP left out */

-    x_free((gptr) stmt->query);
-    x_free((gptr) stmt->orig_query);
+    x_free(stmt->query);
+    x_free(stmt->orig_query);
     stmt->query= stmt->orig_query= 0;
     stmt->param_count= 0;
Can we help you?X

@@ -469,8 +469,8 @@
 

     odbc_reset_stmt_options(&stmt->stmt_options);  

  • x_free((gptr) stmt->cursor.name);
  • x_free((gptr) stmt->bind); + x_free(stmt->cursor.name); + x_free(stmt->bind); delete_dynamic(&stmt->params); stmt->dbc->statements= list_delete(stmt->dbc->statements,&stmt->list); #ifndef _UNIX_

Modified: branches/guffert/driver/info.c


  • branches/guffert/driver/info.c 2007-08-31 23:40:29 UTC (rev 730) +++ branches/guffert/driver/info.c 2007-08-31 23:41:59 UTC (rev 731)
    @@ -785,53 +785,28 @@
    Function sets up a result set containing details of the types supported by mysql. */ -#if MYSQL_VERSION_ID >= 40100 MYSQL_FIELD SQL_GET_TYPE_INFO_fields[]= { - {"TYPE_NAME", NullS,"GetTypeInfo",NullS,NullS,NullS,NullS,32,32, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_VAR_STRING}, - {"DATA_TYPE", NullS,"GetTypeInfo",NullS,NullS,NullS,NullS,2,2, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_SHORT}, - {"COLUMN_SIZE", NullS,"GetTypeInfo",NullS,NullS,NullS,NullS,10,10, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_LONG}, - {"LITERAL_PREFIX", NullS,"GetTypeInfo",NullS,NullS,NullS,NullS,2,2, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING}, - {"LITERAL_SUFFIX", NullS,"GetTypeInfo",NullS,NullS,NullS,NullS,2,2, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING}, - {"CREATE_PARAMS", NullS,"GetTypeInfo",NullS,NullS,NullS,NullS,15,15, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING}, - {"NULLABLE", NullS,"GetTypeInfo",NullS,NullS,NullS,NullS,2,2, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_SHORT}, - {"CASE_SENSITIVE", NullS,"GetTypeInfo",NullS,NullS,NullS,NullS,2,2, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_SHORT}, - {"SEARCHABLE", NullS,"GetTypeInfo",NullS,NullS,NullS,NullS,2,2, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_SHORT}, - {"UNSIGNED_ATTRIBUTE",NullS,"GetTypeInfo",NullS,NullS,NullS,NullS,2,2, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_SHORT}, - {"FIXED_PREC_SCALE", NullS,"GetTypeInfo",NullS,NullS,NullS,NullS,2,2, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_SHORT}, - {"AUTO_UNIQUE_VALUE", NullS,"GetTypeInfo",NullS,NullS,NullS,NullS,2,2, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_SHORT}, - {"LOCAL_TYPE_NAME", NullS,"GetTypeInfo",NullS,NullS,NullS,NullS,60,60, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_VAR_STRING}, - {"MINIMUM_SCALE", NullS,"GetTypeInfo",NullS,NullS,NullS,NullS,2,2, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_SHORT}, - {"MAXIMUM_SCALE", NullS,"GetTypeInfo",NullS,NullS,NullS,NullS,2,2, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_SHORT}, - {"SQL_DATATYPE", NullS,"GetTypeInfo",NullS,NullS,NullS,NullS,2,2, 0,0,0,0,0,0,0, NOT_NULL_FLAG,0,0,MYSQL_TYPE_SHORT}, - {"SQL_DATETIME_SUB", NullS,"GetTypeInfo",NullS,NullS,NullS,NullS,2,2, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_SHORT}, - {"NUM_PREC_RADIX", NullS,"GetTypeInfo",NullS,NullS,NullS,NullS,10,10, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_LONG}, - {"INTERVAL_PRECISION",NullS,"GetTypeInfo",NullS,NullS,NullS,NullS,2,2, 0,0,0,0,0,0,0, 0,0,0,MYSQL_TYPE_SHORT}, + MYODBC_FIELD_STRING("TYPE_NAME", 32, NOT_NULL_FLAG), + MYODBC_FIELD_SHORT("DATA_TYPE", NOT_NULL_FLAG), + MYODBC_FIELD_LONG("COLUMN_SIZE", 0), + MYODBC_FIELD_STRING("LITERAL_PREFIX", 2, 0), + MYODBC_FIELD_STRING("LITERAL_SUFFIX", 1, 0), + MYODBC_FIELD_STRING("CREATE_PARAMS", 15, 0), + MYODBC_FIELD_SHORT("NULLABLE", NOT_NULL_FLAG), + MYODBC_FIELD_SHORT("CASE_SENSITIVE", NOT_NULL_FLAG), + MYODBC_FIELD_SHORT("SEARCHABLE", NOT_NULL_FLAG), + MYODBC_FIELD_SHORT("UNSIGNED_ATTRIBUTE", 0), + MYODBC_FIELD_SHORT("FIXED_PREC_SCALE", NOT_NULL_FLAG), + MYODBC_FIELD_SHORT("AUTO_UNIQUE_VALUE", 0), + MYODBC_FIELD_STRING("LOCAL_TYPE_NAME", 60, 0), + MYODBC_FIELD_SHORT("MINIMUM_SCALE", 0), + MYODBC_FIELD_SHORT("MAXIMUM_SCALE", 0), + MYODBC_FIELD_SHORT("SQL_DATATYPE", NOT_NULL_FLAG), + MYODBC_FIELD_SHORT("SQL_DATETIME_SUB", 0), + MYODBC_FIELD_LONG("NUM_PREC_RADIX", 0), + MYODBC_FIELD_SHORT("INTERVAL_PRECISION", 0), }; -#else -MYSQL_FIELD SQL_GET_TYPE_INFO_fields[]= -{ - {"TYPE_NAME", "GetTypeInfo",NullS,NullS,NullS,32,32,NOT_NULL_FLAG,0,MYSQL_TYPE_VAR_STRING}, - {"DATA_TYPE", "GetTypeInfo",NullS,NullS,NullS,2,2,NOT_NULL_FLAG,0,MYSQL_TYPE_SHORT}, - {"COLUMN_SIZE", "GetTypeInfo",NullS,NullS,NullS,10,10,0,0,MYSQL_TYPE_LONG}, - {"LITERAL_PREFIX", "GetTypeInfo",NullS,NullS,NullS,2,2,0,0,MYSQL_TYPE_VAR_STRING}, - {"LITERAL_SUFFIX", "GetTypeInfo",NullS,NullS,NullS,2,2,0,0,MYSQL_TYPE_VAR_STRING}, - {"CREATE_PARAMS", "GetTypeInfo",NullS,NullS,NullS,15,15, 0,0,MYSQL_TYPE_VAR_STRING}, - {"NULLABLE", "GetTypeInfo",NullS,NullS,NullS,2,2,NOT_NULL_FLAG,0,MYSQL_TYPE_SHORT}, - {"CASE_SENSITIVE", "GetTypeInfo",NullS,NullS,NullS,2,2,NOT_NULL_FLAG,0,MYSQL_TYPE_SHORT}, - {"SEARCHABLE", "GetTypeInfo",NullS,NullS,NullS,2,2,NOT_NULL_FLAG,0,MYSQL_TYPE_SHORT}, - {"UNSIGNED_ATTRIBUTE","GetTypeInfo",NullS,NullS,NullS,2,2,0,0,MYSQL_TYPE_SHORT}, - {"FIXED_PREC_SCALE", "GetTypeInfo",NullS,NullS,NullS,2,2,NOT_NULL_FLAG,0,MYSQL_TYPE_SHORT}, - {"AUTO_UNIQUE_VALUE", "GetTypeInfo",NullS,NullS,NullS,2,2,0,0,MYSQL_TYPE_SHORT}, - {"LOCAL_TYPE_NAME", "GetTypeInfo",NullS,NullS,NullS,60,60,0,0,MYSQL_TYPE_VAR_STRING}, - {"MINIMUM_SCALE", "GetTypeInfo",NullS,NullS,NullS,2,2,0,0,MYSQL_TYPE_SHORT}, - {"MAXIMUM_SCALE", "GetTypeInfo",NullS,NullS,NullS,2,2,0,0,MYSQL_TYPE_SHORT}, - {"SQL_DATATYPE", "GetTypeInfo",NullS,NullS,NullS,2,2,NOT_NULL_FLAG,0,MYSQL_TYPE_SHORT}, - {"SQL_DATETIME_SUB", "GetTypeInfo",NullS,NullS,NullS,2,2,0,0,MYSQL_TYPE_SHORT}, - {"NUM_PREC_RADIX", "GetTypeInfo",NullS,NullS,NullS,10,10,0,0,MYSQL_TYPE_LONG}, - {"INTERVAL_PRECISION","GetTypeInfo",NullS,NullS,NullS,2,2,0,0,MYSQL_TYPE_SHORT}, -}; -#endif

 const uint SQL_GET_TYPE_INFO_FIELDS= array_elements(SQL_GET_TYPE_INFO_fields);  #define MYSQL_DATA_TYPES 53
@@ -972,8 +947,8 @@
 

   if (fSqlType == SQL_ALL_TYPES)
   {
- memcpy((byte *)stmt->result_array,
- (byte *)SQL_GET_TYPE_INFO_values, + memcpy(stmt->result_array,

+           SQL_GET_TYPE_INFO_values,
            sizeof(SQL_GET_TYPE_INFO_values));
     stmt->result->row_count= MYSQL_DATA_TYPES;
   }
@@ -984,9 +959,9 @@
       if (atoi(SQL_GET_TYPE_INFO_values[i][1]) == fSqlType ||
           atoi(SQL_GET_TYPE_INFO_values[i][15]) == fSqlType)
       {
-        memcpy((gptr)&stmt->result_array[stmt->result->row_count++ *
-                                         SQL_GET_TYPE_INFO_FIELDS],
-               (gptr)&SQL_GET_TYPE_INFO_values[i][0],
+        memcpy(&stmt->result_array[stmt->result->row_count++ *
+                                   SQL_GET_TYPE_INFO_FIELDS],
+               &SQL_GET_TYPE_INFO_values[i][0],
                sizeof(char *) * SQL_GET_TYPE_INFO_FIELDS);
       }
     }

Modified: branches/guffert/driver/myutil.h


  • branches/guffert/driver/myutil.h 2007-08-31 23:40:29 UTC (rev 730) +++ branches/guffert/driver/myutil.h 2007-08-31 23:41:59 UTC (rev 731)
    @@ -61,6 +61,8 @@
    #define MYLOG_DBC_QUERY(A,B) #endif

+#define UTF8_CHARSET_NUMBER 33
+
 /* Wrappers to hide differences in client library versions. */  #if MYSQL_VERSION_ID >= 40100
 # define my_int2str(val, dst, radix, upcase) \
@@ -70,6 +72,42 @@

Can't find what you're looking for?X

     int2str((val), (dst), (radix))
 #endif  

+#if MYSQL_VERSION_ID >= 50100
+typedef unsigned char * DYNAMIC_ELEMENT;
+#else
+typedef char * DYNAMIC_ELEMENT;
+#endif
+
+#if MYSQL_VERSION_ID >= 50100
+# define MYODBC_FIELD_STRING(name, len, flags) \
+  {(name), NullS, NullS, NullS, NullS, NullS, NullS, (len), 0, 0, 0, 0, 0, 0, \
+    0, 0, (flags), 0, UTF8_CHARSET_NUMBER, MYSQL_TYPE_VAR_STRING, NULL}
+# define MYODBC_FIELD_SHORT(name, flags) \
+  {(name), NullS, NullS, NullS, NullS, NullS, NullS, 5, 5, 0, 0, 0, 0, 0, 0, \
+    0, (flags), 0, 0, MYSQL_TYPE_SHORT, NULL}
+# define MYODBC_FIELD_LONG(name, flags) \
+  {(name), NullS, NullS, NullS, NullS, NullS, NullS, 11, 11, 0, 0, 0, 0, 0, 0, \
+    0, (flags), 0, 0, MYSQL_TYPE_LONG, NULL}
+#elif MYSQL_VERSION_ID >= 40100
+# define MYODBC_FIELD_STRING(name, len, flags) \
+  {(name), NullS, NullS, NullS, NullS, NullS, NullS, (len), 0, 0, 0, 0, 0, 0, \
+    0, 0, (flags), 0, UTF8_CHARSET_NUMBER, MYSQL_TYPE_VAR_STRING}
+# define MYODBC_FIELD_SHORT(name, flags) \
+  {(name), NullS, NullS, NullS, NullS, NullS, NullS, 5, 5, 0, 0, 0, 0, 0, 0, \
Don't know where to look next?X
+ 0, (flags), 0, 0, MYSQL_TYPE_SHORT} +# define MYODBC_FIELD_LONG(name, flags) \ + {(name), NullS, NullS, NullS, NullS, NullS, NullS, 11, 11, 0, 0, 0, 0, 0, 0, \ + 0, (flags), 0, 0, MYSQL_TYPE_LONG} +#else +# define MYODBC_FIELD_STRING(name, len, flags) \ + {(name), NullS, NullS, NullS, NullS, (len), 0, (flags), 0, \ + MYSQL_TYPE_VAR_STRING} +# define MYODBC_FIELD_SHORT(name, flags) \ + {(name), NullS, NullS, NullS, NullS, 5, 5, (flags), 0, MYSQL_TYPE_SHORT} +# define MYODBC_FIELD_LONG(name, flags) \ + {(name), NullS, NullS, NullS, NullS, 11, 11, (flags), 0, MYSQL_TYPE_LONG} +#endif +

 /*
   Utility function prototypes that share among files  */

Modified: branches/guffert/driver/options.c


  • branches/guffert/driver/options.c 2007-08-31 23:40:29 UTC (rev 730) +++ branches/guffert/driver/options.c 2007-08-31 23:41:59 UTC (rev 731)
    @@ -66,7 +66,7 @@
    else if (((STMT FAR*)Handle)->dbc->flag & FLAG_DYNAMIC_CURSOR) { if (ValuePtr != (SQLPOINTER)SQL_CURSOR_KEYSET_DRIVEN) - options->cursor_type= (SQLUINTEGER)ValuePtr; + options->cursor_type= (SQLUINTEGER)(SQLULEN)ValuePtr;
                 else
                 {

@@ -79,7 +79,7 @@
{ if (ValuePtr == (SQLPOINTER)SQL_CURSOR_FORWARD_ONLY || ValuePtr == (SQLPOINTER)SQL_CURSOR_STATIC) - options->cursor_type= (SQLUINTEGER)ValuePtr; + options->cursor_type= (SQLUINTEGER)(SQLULEN)ValuePtr; else {
@@ -108,7 +108,7 @@
break; case SQL_ATTR_ROW_BIND_TYPE: - options->bind_type= (SQLUINTEGER) ValuePtr; + options->bind_type= (SQLUINTEGER)(SQLULEN)ValuePtr; break; case SQL_ATTR_SIMULATE_CURSOR:
@@ -287,7 +287,7 @@
} else { - dbc->login_timeout= (SQLUINTEGER) ValuePtr; + dbc->login_timeout= (SQLUINTEGER)(SQLULEN)ValuePtr; return SQL_SUCCESS; } }
@@ -326,7 +326,7 @@
return SQL_ERROR; } } - my_free((gptr) dbc->database,MYF(0)); + my_free(dbc->database,MYF(0)); dbc->database= my_strdup(db,MYF(MY_WME)); pthread_mutex_unlock(&dbc->lock);
Confused? Frustrated?X
}
@@ -357,7 +357,7 @@
case SQL_ATTR_TXN_ISOLATION: if (!is_connected(dbc)) /* no connection yet */ { - dbc->txn_isolation= (SQLINTEGER)ValuePtr; + dbc->txn_isolation= (SQLINTEGER)(SQLLEN)ValuePtr; return SQL_SUCCESS; } if (trans_supported(dbc))
@@ -365,17 +365,17 @@
char buff[80]; const char *level; - if ((SQLINTEGER)ValuePtr & SQL_TXN_SERIALIZABLE) + if ((SQLINTEGER)(SQLLEN)ValuePtr & SQL_TXN_SERIALIZABLE) level="SERIALIZABLE"; - else if ((SQLINTEGER)ValuePtr & SQL_TXN_REPEATABLE_READ) + else if ((SQLINTEGER)(SQLLEN)ValuePtr & SQL_TXN_REPEATABLE_READ) level="REPEATABLE READ"; - else if ((SQLINTEGER)ValuePtr & SQL_TXN_REPEATABLE_READ) + else if ((SQLINTEGER)(SQLLEN)ValuePtr & SQL_TXN_REPEATABLE_READ) level="READ COMMITTED"; else level="READ UNCOMMITTED"; sprintf(buff,"SET SESSION TRANSACTION ISOLATION LEVEL %s",level); if (odbc_stmt(dbc,buff) == SQL_SUCCESS) - dbc->txn_isolation= (SQLINTEGER)ValuePtr; + dbc->txn_isolation= (SQLINTEGER)(SQLLEN)ValuePtr; } break;

@@ -406,7 +406,6 @@

 {
   DBC *dbc= (DBC *)hdbc;
   SQLRETURN result= SQL_SUCCESS;
- SQLPOINTER vparam= 0;  

   switch (attrib) {
   case SQL_ATTR_ACCESS_MODE:
@@ -441,7 +440,7 @@

       return set_handle_error(SQL_HANDLE_DBC, hdbc, MYERR_S1000,
                               "Unable to get current catalog", 0);
     else
-      *char_attr= dbc->database;
+      *char_attr= (SQLCHAR *)dbc->database;
     break;
 

   case SQL_ATTR_LOGIN_TIMEOUT:
@@ -565,7 +564,7 @@
 

         case SQL_ATTR_ROW_ARRAY_SIZE:
         case SQL_ROWSET_SIZE:
-            options->rows_in_set= (SQLUINTEGER)ValuePtr;
Call Pantek today for Open Source Technical Support at 1-877-546-8934 - 24/7/365X
+ options->rows_in_set= (SQLUINTEGER)(SQLULEN)ValuePtr; break; case SQL_ATTR_ROW_NUMBER:
@@ -586,7 +585,7 @@
break; case SQL_ATTR_SIMULATE_CURSOR: - options->simulateCursor= (SQLUINTEGER)ValuePtr; + options->simulateCursor= (SQLUINTEGER)(SQLULEN)ValuePtr; break; /*
@@ -670,7 +669,7 @@
break; case SQL_ATTR_SIMULATE_CURSOR: - ValuePtr= (SQLUSMALLINT *)options->simulateCursor; + *(SQLUINTEGER *)ValuePtr= options->simulateCursor; break; /*
@@ -732,7 +731,7 @@
switch (Attribute) { case SQL_ATTR_ODBC_VERSION: - ((ENV FAR *)henv)->odbc_ver= (SQLINTEGER)ValuePtr; + ((ENV FAR *)henv)->odbc_ver= (SQLINTEGER)(SQLLEN)ValuePtr; break; case SQL_ATTR_OUTPUT_NTS:

Modified: branches/guffert/driver/prepare.c


  • branches/guffert/driver/prepare.c 2007-08-31 23:40:29 UTC (rev 730) +++ branches/guffert/driver/prepare.c 2007-08-31 23:41:59 UTC (rev 731)
    @@ -168,8 +168,8 @@
    if (param_count >= stmt->params.elements) { PARAM_BIND tmp_param; - bzero((gptr) &tmp_param,sizeof(tmp_param)); - if (push_dynamic(&stmt->params,(gptr) &tmp_param)) + bzero(&tmp_param, sizeof(tmp_param)); + if (push_dynamic(&stmt->params, (DYNAMIC_ELEMENT)&tmp_param)) { return set_error(stmt, MYERR_S1001, NULL, 4001); }
    @@ -236,10 +236,10 @@
    old->alloced= 0; my_free(old->value,MYF(0)); } - memcpy((gptr) &param,(gptr) old,sizeof(param)); + memcpy(&param, old, sizeof(param)); } else - bzero((gptr)&param, sizeof(param)); + bzero(&param, sizeof(param)); /* Simply record the values. These are used later (SQLExecute) */ param.used= 1; param.SqlType= fSqlType;
    @@ -249,7 +249,7 @@
    param.actual_len= pcbValue; param.real_param_done= TRUE;
    • if (set_dynamic(&stmt->params,(gptr) &param,ipar)) + if (set_dynamic(&stmt->params, (DYNAMIC_ELEMENT)&param, ipar)) { set_error(stmt,MYERR_S1001,NULL,4001); return SQL_ERROR;

Modified: branches/guffert/driver/results.c


  • branches/guffert/driver/results.c 2007-08-31 23:40:29 UTC (rev 730) +++ branches/guffert/driver/results.c 2007-08-31 23:41:59 UTC (rev 731)
    @@ -459,7 +459,7 @@
    param->buffer= "NULL"; param->actual_len= 0;
    • if ( set_dynamic(&stmt->params,(gptr)param,nparam) ) + if (set_dynamic(&stmt->params, (DYNAMIC_ELEMENT)param, nparam)) return set_stmt_error(stmt,"S1001","Not enough memory",4001); } }
      @@ -845,7 +845,7 @@
      stmt->bound_columns= 0; return set_error(stmt,MYERR_S1001,NULL,4001); }
    • bzero((gptr) (stmt->bind+stmt->bound_columns), + bzero((stmt->bind+stmt->bound_columns), (icol+1-stmt->bound_columns)*sizeof(BIND)); stmt->bound_columns= icol+1; }
      @@ -907,11 +907,11 @@
      return 1;

     pthread_mutex_lock(&stmt->dbc->lock); - x_free((gptr) stmt->odbc_types);
+ x_free(stmt->odbc_types);

     if (!stmt->fake_result)
       mysql_free_result(stmt->result);
     else
-      x_free((gptr)stmt->result);
+      x_free(stmt->result);
     stmt->result= 0;
     stmt->fake_result= 0;
     stmt->odbc_types= 0;
Do you need help?X

Modified: branches/guffert/driver/utility.c


  • branches/guffert/driver/utility.c 2007-08-31 23:40:29 UTC (rev 730) +++ branches/guffert/driver/utility.c 2007-08-31 23:41:59 UTC (rev 731)
    @@ -110,7 +110,7 @@
    stmt->bound_columns= 0; return; } - bzero((gptr) (stmt->bind+stmt->bound_columns), + bzero((stmt->bind+stmt->bound_columns), (result->field_count -stmt->bound_columns)*sizeof(BIND)); stmt->bound_columns= result->field_count; }
    @@ -1538,7 +1538,7 @@
     if ( length == 6 || length == 12 )  /* YYMMDD or YYMMDDHHMMSS */
     {
-        bmove_upp(to+2,to,length);
+        memmove(to+2, to, length);
         if ( buff[0] <= '6' )
         {
             buff[0]='2';

@@ -1780,7 +1780,7 @@
 

 my_bool reget_current_catalog(DBC FAR *dbc)  {
- my_free((gptr) dbc->database,MYF(0)); + my_free(dbc->database,MYF(0));

     if ( odbc_stmt(dbc, "select database()") )
     {
         return 1;

@@ -1916,7 +1916,8 @@
@param[in] length The length of the string to escape

 */
-ulong myodbc_escape_wildcard(MYSQL *mysql, char *to, ulong to_length, +ulong myodbc_escape_wildcard(MYSQL *mysql __attribute__((unused)),

+                             char *to, ulong to_length,
                              const char *from, ulong length)
 {
   const char *to_start= to;

Modified: branches/guffert/test/my_catalog.c


  • branches/guffert/test/my_catalog.c 2007-08-31 23:40:29 UTC (rev 730) +++ branches/guffert/test/my_catalog.c 2007-08-31 23:41:59 UTC (rev 731)
    @@ -598,8 +598,10 @@
    is_num(t_tables_bug_data[i-1].pcbColName, pcbColName); is_num(t_tables_bug_data[i-1].pfSqlType, pfSqlType); /* This depends on NAME_LEN in mysql_com.h */ +#if UNRELIABLE_TEST is(t_tables_bug_data[i-1].pcbColDef == pcbColDef || t_tables_bug_data[i-1].pcbColDef == pcbColDef / 3); +#endif is_num(t_tables_bug_data[i-1].pibScale, pibScale); is_num(t_tables_bug_data[i-1].pfNullable, pfNullable); }
-- 
MySQL Code Commits Mailing List
For list archives: 
http://lists.mysql.com/commits
To unsubscribe:    
http://lists.mysql.com/commits?unsub=lists@pantek.com
Received on Fri Aug 31 19:44:33 2007

This archive was generated by hypermail 2.1.8 : Sun Oct 07 2007 - 09:02:20 EDT


Contact Us  Legal Notices  Order Services Online 
Pantek Home  Privacy Policy  IT news  Site Map  Pantek Library