The following bug has been logged on the website:
Bug reference: 10836
Logged by: Matthias Raffelsieper
Email address: hoschiraffel@freenet.de
PostgreSQL version: 9.3.4
Operating system: Mac OSX
Description:
Hi all.
While trying to create rules, I hit a situation that I figure might be a
bug.
In essence, I observe that when explicitly listing columns in a RETURNING
statement of a rule, the type checking is somehow thrown off. When using the
'*' all is fine. Please see below for a small example session that exhibits
this bug.
$ psql test
psql (9.3.4)
Type "help" for help.
test=# \set VERBOSITY verbose
test=# create table foobar (id int, info text);
CREATE TABLE
test=# create view test_me as select id as foo, info as bar from foobar;
CREATE VIEW
test=# create rule test_me_ins as on insert to test_me do instead insert
into foobar values (new.foo,new.bar) returning (id,info);
ERROR: 42P17: RETURNING list's entry 1 has different type from column
"foo"
LOCATION: checkRuleResultList, rewriteDefine.c:682
test=# create rule test_me_ins as on insert to test_me do instead insert
into foobar values (new.foo,new.bar) returning *;
CREATE RULE
test=# insert into test_me VALUES (1,'hello');
INSERT 0 1
test=# insert into test_me VALUES (2,'world') returning bar;
bar
-------
world
(1 row)
INSERT 0 1
test=# select * from test_me;
foo | bar
-----+-------
1 | hello
2 | world
(2 rows)
test=#
Cheers,
Matt