On Dec 17, 2007 12:24 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> "robert lazarski" <robertlazarski@gmail.com> writes:
> > Is there any way to get the above insert to work as is, via a function
> > or some other way? I tried the function of another poster but it seems
> > there is already a cast built in for 8.1.9 for integer to boolean, and
> > it didn't work for me on the above insert.
>
> You could mark the built-in cast as assignment-only (I wouldn't
> recommend setting it to implicit, as it's not clear what cases
> that might break).
>
> d1=# create table foo (f1 bool);
> CREATE TABLE
> d1=# insert into foo values(1);
> ERROR: column "f1" is of type boolean but expression is of type integer
> HINT: You will need to rewrite or cast the expression.
> d1=# update pg_cast set castcontext = 'a' where castsource = 'int'::regtype
> d1-# and casttarget = 'bool'::regtype;
> UPDATE 1
> d1=# insert into foo values(1);
> INSERT 0 1
>
> Unfortunately this is something you'd have to do over after any database
> reload, because pg_dump won't preserve changes to the definitions of
> built-in objects.
>
> regards, tom lane
>
Snoopy dance <http://www.google.com/search?q=snoopy+dance> :-) That
worked great!!!
Kind regards,
Robert