Skip site navigation (1) Skip section navigation (2)

Re: [SQL] char(19) to varchar(32)

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Marc Tardif <admin(at)wtbwts(dot)com>
Cc: Jose Soares <jose(at)sferacarta(dot)com>, pgsql-sql(at)postgreSQL(dot)org
Subject: Re: [SQL] char(19) to varchar(32)
Date: 2000-01-19 17:24:33
Message-ID: 10207.948302673@sss.pgh.pa.us (view raw or flat)
Thread:
Lists: pgsql-sql
Marc Tardif <admin(at)wtbwts(dot)com> writes:
> Actually, here's my complete rule and error message:
> CREATE RULE prod_company AS ON UPDATE
>   TO company_base WHERE OLD.company <> NEW.company
>   DO UPDATE prod_base set company = NEW.company
>     WHERE prod_base.cid = OLD.oid;
> ERROR:  Type of 'company' does not match target column 'company'
>
> company in prod_base is char(19);
> company in company_baase is varchar(32);

Interesting.  You can get the same error from just doing the UPDATE
by hand --- so it's not got anything to do with the rule environment:

create table prod_base (company  char(19));
create table company_base (company  varchar(32));
update prod_base set company =  company_base.company;
ERROR:  Type of 'company' does not match target column 'company'

but
update prod_base set company =  company_base.company::char;
is accepted.  Even more interesting, so is
update prod_base set company =  company_base.company::text;

so it's not simply a matter of UPDATE missing automatic coercion
support; it's willing to do a coercion if you hand it an expression,
but seemingly not if you hand it a simple field reference.

This sure looks like a bug to me... I recommend a CAST as a workaround
for now, but I'll try to fix it for 7.0.

			regards, tom lane

In response to

Responses

pgsql-sql by date

Next:From: Marten FeldtmannDate: 2000-01-19 17:46:26
Subject: Re: [SQL] index usage ... strange !?
Previous:From: Bruce MomjianDate: 2000-01-19 17:07:15
Subject: Re: [GENERAL] Re: [SQL] Bug in CEIL?

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group