Thread: OSX ?

OSX ?

From
Horacio Samaniego
Date:
Hi,
I 've tried to compile psqlODBC from  ftp://ftp.postgresql.org/pub/
odbc/versions/src/psqlodbc-08.01.0101.tar.gz  with no success... On
OSX (tiger)...

  gcc -DHAVE_CONFIG_H -I. -I. -I. -I/usr/local/pgsql/include -g -O2 -
MT bind.lo -MD -MP -MF .deps/bind.Tpo -c bind.c  -fno-common -DPIC -
o .libs/bind.o
bind.c:42: error: conflicting types for 'PGAPI_BindParameter'
pgapifunc.h:263: error: previous declaration of 'PGAPI_BindParameter'
was here
bind.c:144: error: conflicting types for 'PGAPI_BindCol'
pgapifunc.h:30: error: previous declaration of 'PGAPI_BindCol' was here
bind.c:285: error: conflicting types for 'PGAPI_DescribeParam'
pgapifunc.h:174: error: previous declaration of 'PGAPI_DescribeParam'
was here
bind.c:338: error: conflicting types for 'PGAPI_ParamOptions'
pgapifunc.h:212: error: previous declaration of 'PGAPI_ParamOptions'
was here
make[1]: *** [bind.lo] Error 1
make: *** [all] Error 2


any sugestion?

thanks

H

--
Horacio Samaniego
Dep Biology
University of New Mexico
Albuquerque 87106, NM

http://www.unm.edu/~horacio




Re: OSX ?

From
Tom Lane
Date:
Horacio Samaniego <Horacio@unm.edu> writes:
> I 've tried to compile psqlODBC from  ftp://ftp.postgresql.org/pub/
> odbc/versions/src/psqlodbc-08.01.0101.tar.gz  with no success...

Hm, it fails for me too.  I'm not sure if it's OS X's fault or
psqlodbc's fault, but the problem seems to be here:

pgapifunc.h declares PGAPI_BindParameter as taking

     SQLUINTEGER cbColDef,
     ...
     SQLINTEGER cbValueMax,
     SQLINTEGER *pcbValue);

The actual definition of PGAPI_BindParameter in bind.c uses different
typedefs:

     UDWORD cbColDef,
     ...
     SDWORD cbValueMax,
     SDWORD * pcbValue)

Darwin's /usr/include/sqltypes.h has

/*
 *  API declaration data types
 */
typedef signed int              SQLINTEGER;
typedef unsigned int            SQLUINTEGER;

/*
 *  SQL portable types for C
 */
typedef long int                SDWORD;
typedef unsigned long int       UDWORD;

and gcc is entirely within its rights to complain that "int" != "long int".

*Somebody* is not on the right page here.  I would tend to fault
psqlodbc for inconsistent declarations, but if it works on other
platforms (as it seems to) maybe there is a general convention
that SQLINTEGER == SDWORD etc?  If so, Apple didn't get the word.

            regards, tom lane

Re: OSX ?

From
"Dave Page"
Date:

> -----Original Message-----
> From: pgsql-odbc-owner@postgresql.org
> [mailto:pgsql-odbc-owner@postgresql.org] On Behalf Of Tom Lane
> Sent: 15 November 2005 03:03
> To: Horacio Samaniego
> Cc: pgsql-odbc@postgresql.org
> Subject: Re: [ODBC] OSX ?
>
> Darwin's /usr/include/sqltypes.h has
>
> /*
>  *  API declaration data types
>  */
> typedef signed int              SQLINTEGER;
> typedef unsigned int            SQLUINTEGER;
>
> /*
>  *  SQL portable types for C
>  */
> typedef long int                SDWORD;
> typedef unsigned long int       UDWORD;
>
> and gcc is entirely within its rights to complain that "int"
> != "long int".
>
> *Somebody* is not on the right page here.  I would tend to fault
> psqlodbc for inconsistent declarations, but if it works on other
> platforms (as it seems to) maybe there is a general convention
> that SQLINTEGER == SDWORD etc?  If so, Apple didn't get the word.

On Windows in SQLTypes we have:

typedef long            SQLINTEGER;
typedef unsigned long   SQLUINTEGER;

And

typedef long int                SDWORD;
typedef unsigned long int       UDWORD;

In this case I'd tend to go with Microsoft's definitions given that it's
their spec.

I do intend to work on porting psqlODBC to OSX in the not-to-distant
future, however it's not going to be right away I'm afraid, and for the
moment it will only be on Panther (which doesn't support Unicode ODBC).

Regards, Dave.