Re: convert integer to bool implicitly

From: Sim Zacks <sim(at)compulab(dot)co(dot)il>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: convert integer to bool implicitly
Date: 2005-12-18 19:29:42
Message-ID: do4ddf$2cf3$1@news.hub.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

I got it working.
This has been bothering me for a long time, but now that it was listed
as an official bug in my system, I had to deal with it.

I'll post the solution under a new post, because I think this will help
a lot of people.

Sim Zacks wrote:
> I know I can do it explicitly, I need to do it implicitly.
> I am having a problem with a Microsoft Access front-end , that uses -1
> as true and 0 as false.
> I have everything worked around all the places where I could find it by
> using a cbool(), but this doesn't work with filters, which probably call
> a "select where field =-1 or =0." automatically by access.
>
> I get an ODBC error saying that "Operator does not exist: boolean=integer.
>
> I would like to create the implicit conversion, so that it works both
> without the cbool from now on, and that filters should work fine.
> I have tried a number of different ODBC settings, and no matter what
> setting there is always one problem or another that has to be overcome.
> I can get it all to work if I put a Before Insert and Update trigger and
> change the -1 to true, but I would have to do that for every boolean
> field in my application. It would be a lot easier and make sense
> system-wise to implicitly convert the integer to bool.
>
> Andreas Kretschmer wrote:
>> Sim Zacks <sim(at)compulab(dot)co(dot)il> schrieb:
>>
>>> How easy would it be to write a small type extension to have integer
>>> automatically convert to bool?
>>> For example, I want an implicit conversion that 0 is false and
>>> everything else is true.
>>
>> test=# \d foo;
>> Table "public.foo"
>> Column | Type | Modifiers
>> --------+---------+-----------
>> val | integer |
>>
>> test=# select * from foo;
>> val
>> -----
>> 0
>> 1
>> 2
>> 3
>> (4 rows)
>>
>> test=# select val::bool from foo;
>> val
>> -----
>> f
>> t
>> t
>> t
>> (4 rows)
>>
>>
>>> Is this C programming or can you do it with a local procedural language?
>>
>> You can use regular casts.
>>
>>
>> HTH, Andreas

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Sim Zacks 2005-12-18 19:36:09 Access bool integer solution
Previous Message Sim Zacks 2005-12-18 19:01:01 Re: convert integer to bool implicitly