Lists: | pgsql-bugs |
---|
From: | "Gray Watson" <gray(dot)pg(at)mailnull(dot)com> |
---|---|
To: | pgsql-bugs(at)postgresql(dot)org |
Subject: | BUG #5372: insert into fails with integer expression type char error |
Date: | 2010-03-12 01:01:42 |
Message-ID: | 201003120101.o2C11glP075577@wwwmaster.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-bugs |
The following bug has been logged online:
Bug reference: 5372
Logged by: Gray Watson
Email address: gray(dot)pg(at)mailnull(dot)com
PostgreSQL version: 8.3.9
Operating system: debian linux
Description: insert into fails with integer expression type char
error
Details:
I have 2 tables which have the same schema (as far as I can see) but when I
try to do the following in psql:
INSERT INTO old_log SELECT * FROM log WHERE time < '2010-02-01';
I get the error:
ERROR: column "port" is of type integer but expression is of type character
old_log is:
Column | Type | Modifiers
---------+-----------------------------+------------------------------------
----------------
port | integer |
session | character(32) |
account | text |
slot | text |
comment | text | not null
time | timestamp without time zone | default ('now'::text)::timestamp(6)
with time zone
extra | text |
addr | text |
log is:
Column | Type | Modifiers
---------+-----------------------------+------------------------------------
----------------
port | integer |
session | character(32) |
account | text |
slot | text |
comment | text | not null
time | timestamp without time zone | default ('now'::text)::timestamp(6)
with time zone
extra | text |
addr | text |
Indexes:
"log_account" btree (account)
"log_time" btree ("time")
I tried making port have a default 0 and converting the null port values in
log to be 0. I also dumped the table and looked at the fields and could not
see a text one.
Various different web searches leave me baffled. I see some array casting
bullets in the 8.4.X release notes. If that is the fix, is there a 8.3.10
in the works?
Thanks.
From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | "Gray Watson" <gray(dot)pg(at)mailnull(dot)com> |
Cc: | pgsql-bugs(at)postgresql(dot)org |
Subject: | Re: BUG #5372: insert into fails with integer expression type char error |
Date: | 2010-03-12 17:07:29 |
Message-ID: | 20214.1268413649@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-bugs |
"Gray Watson" <gray(dot)pg(at)mailnull(dot)com> writes:
> I have 2 tables which have the same schema (as far as I can see) but when I
> try to do the following in psql:
> INSERT INTO old_log SELECT * FROM log WHERE time < '2010-02-01';
> I get the error:
> ERROR: column "port" is of type integer but expression is of type character
That's just bizarre. The only thought that comes to mind is that the
error is in a trigger or rule attached to old_log, but you aren't
showing any such thing in your psql \d output.
If you pg_dump the tables and restore into another database, can you
still replicate the misbehavior? In any case it might be helpful to
look at "pg_dump -s -t table" output for these two tables.
Another thing that might be relevant is whether you've ever dropped
any columns in either table?
regards, tom lane