Casts question - Mailing list pgsql-hackers

From Shachar Shemesh
Subject Casts question
Date
Msg-id 40D1CDBF.2060300@shemesh.biz
Whole thread Raw
Responses Re: Casts question
List pgsql-hackers
Hi all,

I have defined a datatype called "varcharci", shamelessly yanking the 
input, output, recv and send functions from varchar. This means (as far 
as I understand things) that this type is binary compatible with varchar.

As such, I used the following two lines:
create cast ( varcharci AS varchar ) WITHOUT FUNCTION AS IMPLICIT;
create cast ( varchar AS varcharci ) WITHOUT FUNCTION AS ASSIGNMENT;

I defined two tables. Both have a column called "name". One is a 
varchar, and the other is a varcharci. When I try to do the following 
select, I get an error:
test=# select test2.id as "id-1", test3.id as "id-2", test2.name from 
test2 inner join test3 on test2.name=test3.name;
ERROR:  operator does not exist: character varying = varcharci
HINT:  No operator matches the given name and argument type(s). You may 
need to add explicit type casts.

When I add an explicit cast, everything works:
sun=# select test2.id as "id-1", test3.id as "id-2", test2.name from 
test2 inner join test3 on test2.name=cast(test3.name as varchar);
results go here

Why is that? Being as it is that no operator = is defined for varcharci, 
and that the cast from varchar to varcharci is "as assignment" anyways, 
shouldn't postgres be able to do the cast implicitly?
            Shachar

-- 
Shachar Shemesh
Lingnu Open Source Consulting ltd.
http://www.lingnu.com/



pgsql-hackers by date:

Previous
From: Andrew Sullivan
Date:
Subject: Re: signal 11 on AIX: 7.4.2
Next
From: markw@osdl.org
Date:
Subject: Re: Status in 7.5 patches