RE: [SQL] ODBC SQL question - Mailing list pgsql-sql

From Michael J Davis
Subject RE: [SQL] ODBC SQL question
Date
Msg-id 93C04F1F5173D211A27900105AA8FCFC298FC3@lambic.prevuenet.com
Whole thread Raw
List pgsql-sql
I choose to define all booleans in Access97 as int2 in PostgreSQL.  This
eliminated the problem with any code or SQL changes.
-----Original Message-----From:    José Soares [SMTP:jose@sferacarta.com]Sent:    Tuesday, June 22, 1999 12:38 AMTo:
Hostmaster- Internet au Virtuel Inc.Cc:    pgsql-sqlSubject:    Re: [SQL] ODBC SQL question
 
The M$Access boolean value is an integer (0 or -1);     FALSE=0     TRUE=-1 while the PostgreSQL boolean is a string;
 TRUE= 'true','t','1','y','yes'     FALSE='false','f','0','n','no' 
 
You have to create an = operator for bool and int4 for compatibility
with M$Access.   This PL/pgsql script creates all what you need: 
--this function returns every zero value as FALSE otherwise as
TRUE-- create function AccessBool(bool,int4) returns bool as ' begin      if $1 is NULL then          return NULL;
endif;      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=AccessBool,         commutator='=',
      negator='!=',         restrict=eqsel,         join=eqjoinsel         );       
 
"Hostmaster - Internet au Virtuel Inc." ha scritto: 
    Hi 
    I'm running PostgreSQL v6.4.2 on Red Hat Linux 6.0. I use it
on a Windows NT     server 4.0 with service pack 5 through ODBC calls; the ODBC
driver is the     one from Insight Distributions System, v6.40.00.06. 
    Usually everything is fine. My datasource works, as I can
link tables from     MS Access 97 without problems. 
    Here is what I don't understand:     Query1: SELECT * FROM sites WHERE free = FALSE;     Query2: SELECT * FROM
sitesWHERE free IS FALSE; 
 
    When I run them within psql, both queries output the
requested rows. 
    Through the ODBC driver, query1 complains that "ERROR: There
is more one     possible operator '=' for types 'bool' and 'int4' You will
have to retype     this query using an explicit cast (#1) 
    query2 complains for "Invalid use of Is operator in query
expression 'free     IS FALSE'" 
    I tried fiddling with the ODBC driver parameters, to no
avail. What do I do     wrong? I ran the queries with MS Access 97 and also with
pgAdmin 6.4.3 beta,     they both return the same errors. Anybody could help me? 
    Here is the table definition:     +---------------------+--------------+-------+     |       Field         |
Type    | Length|     +---------------------+--------------+-------+     | site_id             | int4         |     4 |
   | name                | varchar()    |    50 |     | ip                  | varchar()    |    15 |     | parent
      | int4         |     4 |     | type                | int4         |     4 |     | owner               | int4
  |     4 |     | admin               | int4         |     4 |     | creation_date       | datetime     |     8 |     |
non_profit         | bool         |     1 |     | free                | bool         |     1 |     | reg_fee
| bool         |     1 |     | bill_period         | int2         |     2 |     | bill_date           | datetime     |
  8 |     | bill_paid           | bool         |     1 |     | paid_until          | datetime     |     8 |     | size
             | int4         |     4 |     | peek                | int4         |     4 |     | list_personal       |
bool        |     1 |     | list_organisation   | bool         |     1 |     | list_business       | bool         |
1|     | title_fr            | varchar()    |    75 |     | title_en            | varchar()    |    50 |     |
description_fr     | varchar()    |   254 |     | description_en      | varchar()    |   254 |     | free2
| bool         |     1 |     +---------------------+--------------+-------+ 
 
    Accept my apologies if I'm not in the right place to ask
this. If this is     the case, please tell me where I should direct my question. 
    Thanks, 
    Nicolas Cadou

______________________________________________________________
PostgreSQL 6.5.0 on i586-pc-linux-gnu, compiled by gcc 2.7.2.3
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^Jose'  
 


pgsql-sql by date:

Previous
From: Tom Lane
Date:
Subject: Re: [SQL] Trouble with massive select statement.
Next
From: Herouth Maoz
Date:
Subject: Re: [SQL] Trouble with massive select statement.