Thread
-
ODBC-client->Linux-server: datatype boolean not recognized?
Jelle Ruttenberg <ruttenberg@neroc.nl> — 1999-09-30T10:39:13Z
Hello all, I'm trying to connect from a ODBC-client to PostgreSQL on a Linux-server. All is going well, except that the ODBC-client seems not to recognize the PostgreSQL boolean-datatype. Is this really caused by PostgreSQL? If yes: is there a workaround, like altering the datatypename in the proper places (pg_type?)? If no: then it is another problem and can somebody give a hint? Thanks, Jelle. I tested and encountered it in the following testsituations: Situation 1: Client: Mac via OpenLink ODBC-Client Server: Linux RH 6.0 via OpenLink Requestbroker Result: it looks like PostgreSQL-boolean is converted to SQL_C_CHAR Situation 2: Client: NT with psqlODBC Server: same Linux Result: in MS-Query: - viewing the table-definitions, it comes with the message that it doesn't recognize datatype 'bool' - selecting values it looks like PostgreSQL-boolean is converted to a numeric PostgreSQL: 6.5.1 -------------------------------------------------------------- NEROC Publishing Solutions Jelle Ruttenberg De Run 1131, 5503 LB Veldhoven Phone : +31-(0)40-2586641 P.O.Box 133, 5500 AC Veldhoven Fax : +31-(0)40-2541893 The Netherlands E-mail : ruttenberg@neroc.nl -------------------------------------------------------------- -
Re: [GENERAL] ODBC-client->Linux-server: datatype boolean not recognized?
Jose Soares <jose@sferacarta.com> — 1999-09-30T12:47:47Z
I had the same problem using m$access as client because m$access treats the boolean value like an integer 0=false and -1=true while PostgreSQL treats the same value like a string ( 'true','t','1','y','yes','false','f','0','n','no'). I created the following function and operator and now it works. create function MsAccessBool(bool,int4) returns bool as '' language 'internal'; create operator = ( leftarg=bool, rightarg=int4, procedure=MsAccessBool, commutator='=', negator='<>', restrict=eqsel, join=eqjoinsel ); José PS: remember to uncheck the field: "Bools as char" in the ODBC manager. Jelle Ruttenberg ha scritto: > Hello all, > > I'm trying to connect from a ODBC-client to PostgreSQL on a Linux-server. > All is going well, except that the ODBC-client seems not to recognize the > PostgreSQL boolean-datatype. > > Is this really caused by PostgreSQL? If yes: is there a workaround, like > altering the datatypename in the proper places (pg_type?)? If no: then it > is another problem and can somebody give a hint? > > Thanks, > Jelle. > > I tested and encountered it in the following testsituations: > > Situation 1: > Client: Mac via OpenLink ODBC-Client > Server: Linux RH 6.0 via OpenLink Requestbroker > Result: it looks like PostgreSQL-boolean is converted to SQL_C_CHAR > > Situation 2: > Client: NT with psqlODBC > Server: same Linux > Result: in MS-Query: > - viewing the table-definitions, it comes with the message that it > doesn't recognize datatype 'bool' > - selecting values it looks like PostgreSQL-boolean is converted to a > numeric > > PostgreSQL: 6.5.1 > > -------------------------------------------------------------- > NEROC Publishing Solutions > > Jelle Ruttenberg > > De Run 1131, 5503 LB Veldhoven Phone : +31-(0)40-2586641 > P.O.Box 133, 5500 AC Veldhoven Fax : +31-(0)40-2541893 > The Netherlands E-mail : ruttenberg@neroc.nl > -------------------------------------------------------------- > > ************ -
Re: [GENERAL] ODBC-client->Linux-server: datatype boolean not recognized?
Moray McConnachie <moray.mcconnachie@computing-services.oxford.ac.uk> — 1999-09-30T15:24:58Z
>create function MsAccessBool(bool,int4) returns bool > as '' language 'internal'; There is surely something missing here, between the empty single quotes? When I execute that, I get "There is no internal function msaccessbool"
-
Re: [GENERAL] ODBC-client->Linux-server: datatype boolean not recognized?
Jose Soares <jose@sferacarta.com> — 1999-10-01T15:14:33Z
oh! this was for old releases, now I'm using the following: create function MsBool(bool,int4) returns bool as ' declare bool_int int4; begin if $1 is NULL then return NULL; end if; if $1 is TRUE then if $2 <> 0 then return TRUE; end if; else if $2 = 0 then return TRUE; end if; end if; return FALSE; end; ' language 'plpgsql'; create operator = ( leftarg=bool, rightarg=int4, procedure=MsBool, commutator='=', negator='!=', restrict=eqsel, join=eqjoinsel ); Moray McConnachie ha scritto: > >create function MsAccessBool(bool,int4) returns bool > > as '' language 'internal'; > > There is surely something missing here, between the empty single > quotes? When I execute that, I get "There is no internal function > msaccessbool"