From: | "Owen Jacobson" <ojacobson(at)osl(dot)com> |
---|---|
To: | <pgsql-sql(at)postgresql(dot)org> |
Subject: | Re: [HACKERS] ALTER TABLE ( smallinto -> boolean ) ... |
Date: | 2005-09-01 21:24:59 |
Message-ID: | 144D12D7DD4EC04F99241498BB4EEDCC08AB03@nelson.osl.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
Marc G. Fournier wrote:
> Moved off of -hackers, since its long gotten out of that realm :)
>
> On Thu, 1 Sep 2005, Tom Lane wrote:
>
> > "Marc G. Fournier" <scrappy(at)postgresql(dot)org> writes:
> >> On Mon, 29 Aug 2005, Tom Lane wrote:
> >>> No, because there's no built-in cast from smallint to bool.
> >
> >> 'k, I just took a read through the "CREATE CAST" man page,
> and don't think
> >> I can use that for this,
> >
> > Sure you can. Make a SQL or PLPGSQL function that does the
> conversion
> > you want and then create a cast using it.
>
> Ah, okay, I just re-read the man page and think I stumbled
> upon what I
> overlooked the first time ...
>
> all I want to do is:
>
> CREATE CAST ( 0 AS boolean )
> WITH FUNCTION <I have to create this>
> AS ASSIGNMENT;
>
> And then each time I try to insert a '0' into a BOOLEAN
> field, it will
> auto convert that (based on my function) to 'f' ...
>
> And I'd need to do a second one for 1 -> 't' ...
>
> Am I reading it right this time ... ?
Here's what I'm using:
CREATE OR REPLACE FUNCTION int2bool (INTEGER) RETURNS BOOLEAN AS $$
SELECT ($1 != 0);
$$ LANGUAGE 'SQL' IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION bool2int (BOOLEAN) RETURNS INTEGER AS $$
SELECT CASE WHEN $1 THEN 1
WHEN NOT $1 THEN 0
ELSE NULL END;
$$ LANGUAGE 'SQL' IMMUTABLE STRICT;
CREATE CAST (INTEGER AS BOOLEAN)
WITH FUNCTION int2bool (INTEGER)
AS ASSIGNMENT;
CREATE CAST (BOOLEAN AS INTEGER)
WITH FUNCTION bool2int (BOOLEAN)
AS ASSIGNMENT;
done.
Owen
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2005-09-01 21:25:28 | Re: [HACKERS] ALTER TABLE ( smallinto -> boolean ) ... |
Previous Message | Andrew Dunstan | 2005-09-01 21:23:08 | Re: ALTER TABLE ( smallinto -> boolean ) ... |