Re: BUG #1723: array_cat() bug when passed empty array
| От | Tom Lane |
|---|---|
| Тема | Re: BUG #1723: array_cat() bug when passed empty array |
| Дата | |
| Msg-id | 20233.1119296664@sss.pgh.pa.us обсуждение |
| Ответ на | Re: BUG #1723: array_cat() bug when passed empty array (Tom Lane <tgl@sss.pgh.pa.us>) |
| Ответы |
Re: BUG #1723: array_cat() bug when passed empty array
|
| Список | pgsql-bugs |
I wrote:
> Actually, I would say the bug is exec_assign_value's. There is nothing
> at all wrong with a function returning one of its input values; for
> example the smaller/larger functions all do that.
For that matter, you don't need a function at all:
regression=# create or replace function copyit(text) returns text as $$
regression$# declare tmp text;
regression$# begin
regression$# tmp := $1;
regression$# tmp := tmp;
regression$# return tmp;
regression$# end$$ language plpgsql stable;
CREATE FUNCTION
regression=# select copyit('foo');
ERROR: out of memory
DETAIL: Failed on request of size 1065320319.
CONTEXT: PL/pgSQL function "copyit" line 4 at assignment
regression=#
This makes it perfectly clear that the problem is that exec_assign_value
must copy the given value before it frees the old, just in case they're
the same. (Hmm, I wonder if we can shortcircuit the whole thing ...)
regards, tom lane
В списке pgsql-bugs по дате отправления: