From: | José Soares <jose(at)sferacarta(dot)com> |
---|---|
To: | "Hostmaster - Internet au Virtuel Inc(dot)" <hostmaster(at)virtuel(dot)qc(dot)ca> |
Cc: | pgsql-sql <pgsql-sql(at)postgresql(dot)org> |
Subject: | Re: [SQL] ODBC SQL question |
Date: | 1999-06-22 06:37:53 |
Message-ID: | 376F2F41.B94E2ED8@sferacarta.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
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;
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=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 sites WHERE 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'
From | Date | Subject | |
---|---|---|---|
Next Message | Darren Greer | 1999-06-22 12:08:40 | Re: [SQL] Trouble with massive select statement. |
Previous Message | Zalman Stern | 1999-06-22 05:21:48 | Create table doesn't always respect atomicity of transactions. |