Re: Problems: Build MySQL ODBC Connector 5.1.5 with 64-Linux

Jess Balint <[email protected]>
Newsgroups gmane.comp.db.mysql.odbc
Message-ID <[email protected]>
Ida,

Thanks for bringing this to our attention. I've attached a patch to get
this to build. This patch will be included in the next release.

Jess

On Fri, Dec 05, 2008 at 03:25:28PM +0100, Ida Schonfeld wrote:
> Hello,
> 
>  
> 
> I wanted to build the sources from the MySQL ODBC connector 5.1.5.-0 but I have a problem with some function and type declarations.
> 
> I configured the sources with the following options:
> 
> ./configure -with-debug -disable-gui -with-unixODBC -with-unixODBC-libs=/usr/local/lib64 -with-unixODBC-includes=/usr/local/include -with-mysql-path=/usr
> 
>  
> 
> The configuration is successful. But when I try to build the sources with make I get the errors like in make.log below. 
> 
> I'm using the unixODBC 2.2.14 as Driver Manager. It is build with 64 bit so that SQLULEN and SQLLEN are 8 bit while SQLINTEGER, etc are 4 bit. 
> 
> Is there maybe a Flag which I forgot to set for the configuration? Is really my only solution to correct all the function declarations and the Casting Errors manually? Is there maybe a new driver version planed for the next time?
> 
> I added two extracts from the sqltypes.h and the sqlext.h. The SQL-Type definitions and the Line 1862 which causes the error.
> 
>  
> 
> I'm working on an OpenSuse 10.2 (AMD64). I downloaded the sources from here (http://mysql.holywar.net/Downloads/Connector-ODBC/5.1/mysql-connector-odbc-5.1.5-0.src.rpm <http://mysql.holywar.net/Downloads/Connector-ODBC/5.1/mysql-connector-odbc-5.1.5-0.src.rpm> ) and I think this should be the newest version of the driver sources.
> 
>  
> 
>  
> 
>  
> 
> Thanks for your help
> 
> Ida Schönfeld
> 
>  
> 
>  
> 
> make.log
> 
> make[1]: Entering directory `/usr/src/packages/SOURCES/mysql-connector-odbc-5.1.5/util'
> 
> if /bin/sh ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I../driver -I..  -I/usr/local/include  -ggdb3 -DDBUG_ON -I/usr/include/mysql -fmessage-length=0 -D_FORTIFY_SOURCE=2 -g -DPIC -fPIC -DUNDEF_HAVE_INITGROUPS -fno-strict-aliasing -g -O2 -MT stringutil.lo -MD -MP -MF ".deps/stringutil.Tpo" -c -o stringutil.lo stringutil.c; \
> 
>             then mv -f ".deps/stringutil.Tpo" ".deps/stringutil.Plo"; else rm -f ".deps/stringutil.Tpo"; exit 1; fi
> 
> mkdir .libs
> 
>  gcc -DHAVE_CONFIG_H -I. -I. -I../driver -I.. -I/usr/local/include -ggdb3 -DDBUG_ON -I/usr/include/mysql -fmessage-length=0 -D_FORTIFY_SOURCE=2 -g -DPIC -fPIC -DUNDEF_HAVE_INITGROUPS -fno-strict-aliasing -g -O2 -MT stringutil.lo -MD -MP -MF .deps/stringutil.Tpo -c stringutil.c  -fPIC -DPIC -o .libs/stringutil.o
> 
> if /bin/sh ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I../driver -I..  -I/usr/local/include  -ggdb3 -DDBUG_ON -I/usr/include/mysql -fmessage-length=0 -D_FORTIFY_SOURCE=2 -g -DPIC -fPIC -DUNDEF_HAVE_INITGROUPS -fno-strict-aliasing -g -O2 -MT installer.lo -MD -MP -MF ".deps/installer.Tpo" -c -o installer.lo installer.c; \
> 
>             then mv -f ".deps/installer.Tpo" ".deps/installer.Plo"; else rm -f ".deps/installer.Tpo"; exit 1; fi
> 
>  [ . . . ]
> 
> gcc -DHAVE_CONFIG_H -I. -I. -I. -I../util -I.. -DNONTHREADSAFE -I/usr/local/include -ggdb3 -DDBUG_ON -I/usr/include/mysql -fmessage-length=0 -D_FORTIFY_SOURCE=2 -g -DPIC -fPIC -DUNDEF_HAVE_INITGROUPS -fno-strict-aliasing -g -O2 -MT libmyodbc5_la-options.lo -MD -MP -MF .deps/libmyodbc5_la-options.Tpo -c options.c  -fPIC -DPIC -o .libs/libmyodbc5_la-options.o
> 
> options.c: In function 'MySQLSetConnectAttr':
> 
> options.c:356: warning: cast from pointer to integer of different size
> 
> if /bin/sh ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I. -I../util -I.. -DNONTHREADSAFE -I/usr/local/include  -ggdb3 -DDBUG_ON -I/usr/include/mysql -fmessage-length=0 -D_FORTIFY_SOURCE=2 -g -DPIC -fPIC -DUNDEF_HAVE_INITGROUPS -fno-strict-aliasing -g -O2 -MT libmyodbc5_la-prepare.lo -MD -MP -MF ".deps/libmyodbc5_la-prepare.Tpo" -c -o libmyodbc5_la-prepare.lo `test -f 'prepare.c' || echo './'`prepare.c; \
> 
>             then mv -f ".deps/libmyodbc5_la-prepare.Tpo" ".deps/libmyodbc5_la-prepare.Plo"; else rm -f ".deps/libmyodbc5_la-prepare.Tpo"; exit 1; fi
> 
>  gcc -DHAVE_CONFIG_H -I. -I. -I. -I../util -I.. -DNONTHREADSAFE -I/usr/local/include -ggdb3 -DDBUG_ON -I/usr/include/mysql -fmessage-length=0 -D_FORTIFY_SOURCE=2 -g -DPIC -fPIC -DUNDEF_HAVE_INITGROUPS -fno-strict-aliasing -g -O2 -MT libmyodbc5_la-prepare.lo -MD -MP -MF .deps/libmyodbc5_la-prepare.Tpo -c prepare.c  -fPIC -DPIC -o .libs/libmyodbc5_la-prepare.o
> 
> prepare.c: In function 'my_SQLBindParameter':
> 
> prepare.c:244: warning: cast to pointer from integer of different size
> 
> prepare.c:271: warning: cast to pointer from integer of different size
> 
> prepare.c:278: warning: cast to pointer from integer of different size
> 
> prepare.c:296: warning: cast to pointer from integer of different size
> 
> prepare.c:313: warning: cast to pointer from integer of different size
> 
> prepare.c: In function 'SQLSetScrollOptions':
> 
> prepare.c:492: warning: cast to pointer from integer of different size
> 
> if /bin/sh ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I. -I../util -I.. -DNONTHREADSAFE -I/usr/local/include  -ggdb3 -DDBUG_ON -I/usr/include/mysql -fmessage-length=0 -D_FORTIFY_SOURCE=2 -g -DPIC -fPIC -DUNDEF_HAVE_INITGROUPS -fno-strict-aliasing -g -O2 -MT libmyodbc5_la-results.lo -MD -MP -MF ".deps/libmyodbc5_la-results.Tpo" -c -o libmyodbc5_la-results.lo `test -f 'results.c' || echo './'`results.c; \
> 
>             then mv -f ".deps/libmyodbc5_la-results.Tpo" ".deps/libmyodbc5_la-results.Plo"; else rm -f ".deps/libmyodbc5_la-results.Tpo"; exit 1; fi
> 
>  gcc -DHAVE_CONFIG_H -I. -I. -I. -I../util -I.. -DNONTHREADSAFE -I/usr/local/include -ggdb3 -DDBUG_ON -I/usr/include/mysql -fmessage-length=0 -D_FORTIFY_SOURCE=2 -g -DPIC -fPIC -DUNDEF_HAVE_INITGROUPS -fno-strict-aliasing -g -O2 -MT libmyodbc5_la-results.lo -MD -MP -MF .deps/libmyodbc5_la-results.Tpo -c results.c  -fPIC -DPIC -o .libs/libmyodbc5_la-results.o
> 
> results.c: In function 'SQLBindCol':
> 
> results.c:846: warning: cast to pointer from integer of different size
> 
> results.c: At top level:
> 
> results.c:1390: error: conflicting types for 'SQLExtendedFetch'
> 
> /usr/local/include/sqlext.h:1862: error: previous declaration of 'SQLExtendedFetch' was here
> 
> results.c: In function 'SQLFetchScroll':
> 
> results.c:1423: warning: passing argument 4 of 'my_SQLExtendedFetch' from incompatible pointer type
> 
> results.c: In function 'SQLFetch':
> 
> results.c:1441: warning: passing argument 4 of 'my_SQLExtendedFetch' from incompatible pointer type
> 
> make[2]: *** [libmyodbc5_la-results.lo] Error 1
> 
> make[2]: Leaving directory `/usr/src/packages/SOURCES/mysql-connector-odbc-5.1.5/driver'
> 
> make[1]: *** [all] Error 2
> 
> make[1]: Leaving directory `/usr/src/packages/SOURCES/mysql-connector-odbc-5.1.5/driver'
> 
> make: *** [all-recursive] Error 1
> 
> 11/25/08 14:16 done make
> 
> exit status 2
> 
>  
> 
> sqltypes.h[...]
> 
> typedef int             SQLINTEGER;
> 
> typedef unsigned int    SQLUINTEGER;
> 
> typedef long            SQLLEN;
> 
> typedef unsigned long   SQLULEN;
> 
> typedef unsigned long   SQLSETPOSIROW;
> 
> /* 
> 
>  * These are not supprted on 64bit ODBC according to MS, removed, so use at your peril 
> 
>  */
> 
>  typedef SQLULEN                     SQLTRANSID;
> 
>  typedef SQLULEN                     SQLROWCOUNT;
> 
>  typedef SQLUINTEGER             SQLROWSETSIZE;
> 
>  typedef SQLLEN                       SQLROWOFFSET;
> 
> [...]
> 
> Sqlext.h[...]
> 
> SQLRETURN SQL_API SQLExtendedFetch(
> 
>     SQLHSTMT           hstmt,
> 
>     SQLUSMALLINT       fFetchType,
> 
>     SQLLEN             irow,
> 
>     SQLULEN                    *pcrow,
> 
>     SQLUSMALLINT           *rgfRowStatus);
> 
> [...]
>


-- 
MySQL ODBC Mailing List
For list archives: http://lists.mysql.com/myodbc
To unsubscribe:    http://lists.mysql.com/[email protected]
myodbc_unixODBC-2.2.14.diff (text/plain, 6.1 KB)
=== modified file 'driver/myutil.h'
--- driver/myutil.h	2008-10-28 18:52:50 +0000
+++ driver/myutil.h	2008-12-05 18:53:22 +0000
@@ -203,7 +203,7 @@
 				      SQLLEN cbValueMax,
 				      SQLLEN *pcbValue);
 SQLRETURN SQL_API my_SQLExtendedFetch(SQLHSTMT hstmt, SQLUSMALLINT fFetchType,
-				      SQLROWOFFSET irow, SQLULEN *pcrow,
+				      SQLLEN irow, SQLULEN *pcrow,
 				      SQLUSMALLINT FAR *rgfRowStatus, my_bool upd_status);
 SQLRETURN SQL_API my_SQLSetPos(SQLHSTMT hstmt, SQLSETPOSIROW irow,
                                SQLUSMALLINT fOption, SQLUSMALLINT fLock);

=== modified file 'driver/results.c'
--- driver/results.c	2008-10-28 18:52:50 +0000
+++ driver/results.c	2008-12-05 18:54:52 +0000
@@ -1181,7 +1181,7 @@
 */
 SQLRETURN SQL_API my_SQLExtendedFetch( SQLHSTMT             hstmt,
                                        SQLUSMALLINT         fFetchType,
-                                       SQLROWOFFSET         irow,
+                                       SQLLEN               irow,
                                        SQLULEN             *pcrow,
                                        SQLUSMALLINT FAR    *rgfRowStatus,
                                        my_bool              upd_status )
@@ -1384,8 +1384,8 @@
 
 SQLRETURN SQL_API SQLExtendedFetch( SQLHSTMT        hstmt,
                                     SQLUSMALLINT    fFetchType,
-                                    SQLROWOFFSET    irow,
-                                    SQLROWSETSIZE  *pcrow,
+                                    SQLLEN          irow,
+                                    SQLULEN        *pcrow,
                                     SQLUSMALLINT FAR *rgfRowStatus )
 {
     SQLRETURN rc;
@@ -1396,7 +1396,7 @@
 
     rc= my_SQLExtendedFetch(hstmt, fFetchType, irow, &rows, rgfRowStatus, 1);
     if (pcrow)
-      *pcrow= (SQLROWSETSIZE)rows;
+      *pcrow= (SQLULEN) rows;
 
     return rc;
 }

=== modified file 'test/my_bulk.c'
--- test/my_bulk.c	2008-08-22 22:12:25 +0000
+++ test/my_bulk.c	2008-12-05 18:55:33 +0000
@@ -91,7 +91,7 @@
 {
   SQLINTEGER nData;
   SQLLEN nlen;
-  SQLROWSETSIZE pcrow;
+  SQLULEN pcrow;
 
   ok_sql(hstmt, "DROP TABLE IF EXISTS t_mul_pkdel");
   ok_sql(hstmt, "CREATE TABLE t_mul_pkdel (a INT NOT NULL, b INT,"

=== modified file 'test/my_cursor.c'
--- test/my_cursor.c	2008-10-09 23:06:10 +0000
+++ test/my_cursor.c	2008-12-05 18:56:15 +0000
@@ -465,7 +465,7 @@
   SQLCHAR szData[20];
   SQLINTEGER nData;
   SQLLEN  pcbValue, nlen;
-  SQLROWSETSIZE pcrow;
+  SQLULEN pcrow;
   SQLUSMALLINT rgfRowStatus;
 
   ok_sql(hstmt, "DROP TABLE IF EXISTS t_pos_column_ignore");
@@ -905,7 +905,7 @@
   SQLINTEGER nData;
   SQLLEN nlen;
   SQLCHAR szData[255];
-  SQLROWSETSIZE pcrow;
+  SQLULEN pcrow;
   SQLUSMALLINT rgfRowStatus;
 
   ok_sql(hstmt, "DROP TABLE IF EXISTS tmysql_setpos_del");
@@ -978,7 +978,7 @@
   SQLINTEGER nData;
   SQLLEN nlen;
   SQLCHAR szData[255];
-  SQLROWSETSIZE pcrow;
+  SQLULEN pcrow;
   SQLUSMALLINT rgfRowStatus;
 
   ok_sql(hstmt, "DROP TABLE IF EXISTS tmysql_setpos_del1");
@@ -1038,7 +1038,7 @@
     SQLINTEGER nData = 500;
     SQLLEN nlen;
     SQLCHAR szData[255]={0};
-    SQLROWSETSIZE pcrow;
+    SQLULEN pcrow;
     SQLUSMALLINT rgfRowStatus;
 
   ok_sql(hstmt, "DROP TABLE IF EXISTS tmysql_setpos");
@@ -1146,7 +1146,7 @@
     SQLINTEGER nData= 500;
     SQLLEN nlen;
     SQLCHAR szData[255]={0};
-    SQLROWSETSIZE pcrow;
+    SQLULEN pcrow;
     SQLUSMALLINT rgfRowStatus;
 
   ok_sql(hstmt, "DROP TABLE IF EXISTS tmysql_setpos_add");
@@ -1359,7 +1359,7 @@
 DECLARE_TEST(tmysql_pos_update_ex)
 {
   SQLHSTMT hstmt1;
-  SQLROWSETSIZE pcrow;
+  SQLULEN pcrow;
   SQLUSMALLINT rgfRowStatus;
   SQLLEN rows;
   SQLCHAR cursor[30], sql[255], data[]= "tmysql_pos_update_ex";
@@ -1483,7 +1483,7 @@
 DECLARE_TEST(tmysql_pos_update_ex3)
 {
   SQLHSTMT hstmt1;
-  SQLROWSETSIZE pcrow;
+  SQLULEN pcrow;
   SQLUSMALLINT rgfRowStatus;
   SQLCHAR cursor[30], sql[255];
 
@@ -1523,7 +1523,7 @@
 
 DECLARE_TEST(tmysql_pos_update_ex4)
 {
-  SQLROWSETSIZE pcrow;
+  SQLULEN pcrow;
   SQLLEN nlen= SQL_NTS;
   SQLCHAR data[]= "venu", szData[20];
   SQLUSMALLINT rgfRowStatus;
@@ -1572,7 +1572,7 @@
 DECLARE_TEST(tmysql_pos_dyncursor)
 {
   SQLHSTMT hstmt1;
-  SQLROWSETSIZE pcrow;
+  SQLULEN pcrow;
   SQLUSMALLINT rgfRowStatus;
   SQLCHAR buff[100];
   SQLLEN rows;
@@ -1632,7 +1632,7 @@
     SQLINTEGER nData= 500;
     SQLLEN nlen;
     SQLCHAR szData[255]={0};
-    SQLROWSETSIZE pcrow;
+    SQLULEN pcrow;
     SQLUSMALLINT rgfRowStatus;
 
   ok_sql(hstmt, "DROP TABLE IF EXISTS tmysql_t1, tmysql_t2");
@@ -1704,7 +1704,7 @@
     SQLINTEGER nData= 500;
     SQLLEN nlen;
     SQLCHAR szData[255]={0};
-    SQLROWSETSIZE pcrow;
+    SQLULEN pcrow;
     SQLUSMALLINT rgfRowStatus;
 
   ok_sql(hstmt, "DROP TABLE IF EXISTS tmysql_setpos1");
@@ -1785,7 +1785,7 @@
   SQLINTEGER nData= 500;
   SQLLEN nlen;
   SQLCHAR szData[255]= {0};
-  SQLROWSETSIZE pcrow;
+  SQLULEN pcrow;
   SQLUSMALLINT rgfRowStatus;
 
   ok_sql(hstmt, "DROP TABLE IF EXISTS t_alias_setpos_pkdel");
@@ -1848,7 +1848,7 @@
   SQLINTEGER nData= 500;
   SQLLEN nlen;
   SQLCHAR szData[255]= {0};
-  SQLROWSETSIZE pcrow;
+  SQLULEN pcrow;
   SQLUSMALLINT rgfRowStatus;
 
   ok_sql(hstmt, "DROP TABLE IF EXISTS t_alias_setpos_del");
@@ -1909,7 +1909,7 @@
   SQLINTEGER nData= 500;
   SQLLEN nlen;
   SQLCHAR szData[255]= {0};
-  SQLROWSETSIZE pcrow;
+  SQLULEN pcrow;
   SQLUSMALLINT rgfRowStatus;
 
   ok_sql(hstmt, "DROP TABLE IF EXISTS tmysql_setpos_pkdel2");
@@ -2091,7 +2091,7 @@
     SQLINTEGER nData= 500;
     SQLLEN nlen;
     SQLCHAR szData[255]={0};
-    SQLROWSETSIZE pcrow;
+    SQLULEN pcrow;
     SQLUSMALLINT rgfRowStatus;
 
   ok_sql(hstmt, "DROP TABLE IF EXISTS my_setpos_upd_pk_order");
@@ -2177,7 +2177,7 @@
 {
   SQLINTEGER nData;
   SQLCHAR szData[255];
-  SQLROWSETSIZE pcrow;
+  SQLULEN pcrow;
   SQLUSMALLINT rgfRowStatus;
   SQLLEN rows;
 

=== modified file 'test/my_result.c'
--- test/my_result.c	2008-08-22 22:12:25 +0000
+++ test/my_result.c	2008-12-05 18:56:36 +0000
@@ -1473,7 +1473,7 @@
 {
     SQLRETURN rc;
     SQLHSTMT hstmt1;
-    SQLROWSETSIZE pcrow[4];
+    SQLULEN pcrow[4];
     SQLUSMALLINT rgfRowStatus[6];
     SQLINTEGER nData= 555;
     SQLCHAR szData[255] = "setpos-update";
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.