mirror of
https://github.com/postgres/postgres.git
synced 2025-10-25 13:17:41 +03:00
Improve plpgsql's ability to cope with rowtypes containing dropped columns,
by supporting conversions in places that used to demand exact rowtype match. Since this issue is certain to come up elsewhere (in fact, already has, in ExecEvalConvertRowtype), factor out the support code into new core functions for tuple conversion. I chose to put these in a new source file since heaptuple.c is already overly long. Heavily revised version of a patch by Pavel Stehule.
This commit is contained in:
@@ -2684,6 +2684,36 @@ select * from return_dquery();
|
||||
|
||||
drop function return_dquery();
|
||||
|
||||
-- test RETURN QUERY with dropped columns
|
||||
|
||||
create table tabwithcols(a int, b int, c int, d int);
|
||||
insert into tabwithcols values(10,20,30,40),(50,60,70,80);
|
||||
|
||||
create or replace function returnqueryf()
|
||||
returns setof tabwithcols as $$
|
||||
begin
|
||||
return query select * from tabwithcols;
|
||||
return query execute 'select * from tabwithcols';
|
||||
end;
|
||||
$$ language plpgsql;
|
||||
|
||||
select * from returnqueryf();
|
||||
|
||||
alter table tabwithcols drop column b;
|
||||
|
||||
select * from returnqueryf();
|
||||
|
||||
alter table tabwithcols drop column d;
|
||||
|
||||
select * from returnqueryf();
|
||||
|
||||
alter table tabwithcols add column d int;
|
||||
|
||||
select * from returnqueryf();
|
||||
|
||||
drop function returnqueryf();
|
||||
drop table tabwithcols;
|
||||
|
||||
-- Tests for 8.4's new RAISE features
|
||||
|
||||
create or replace function raise_test() returns void as $$
|
||||
|
||||
Reference in New Issue
Block a user