Thread

  1. 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
    --------------------------------------------------------------
    
    
    
  2. 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
    > --------------------------------------------------------------
    >
    > ************
    
    
    
  3. 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"
    
    
    
    
  4. 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"