Re: sig 11 in RC3
| От | Tom Lane |
|---|---|
| Тема | Re: sig 11 in RC3 |
| Дата | |
| Msg-id | 5238.1010160124@sss.pgh.pa.us обсуждение |
| Ответ на | sig 11 in RC3 (mlw <markw@mohawksoft.com>) |
| Ответы |
Re: sig 11 in RC3
|
| Список | pgsql-hackers |
mlw <markw@mohawksoft.com> writes:
> I have a couple functions which form the basis of an aggregate.
You can't lie to the system by claiming your state value is an integer
when it's really a pointer to palloc'd memory. The memory will get
recycled out from under you.
Try declaring the aggregate as using int4[] as the transition type,
and make sure that the intermediate states are valid at least to the
point of having a correct varlena length word. This will allow the
system to copy the values around when it needs to.
Alternatively, keep the data structure in a longer-lived context
(TransactionCommandContext should work) instead of the per-tuple
context. That's uglier but would avoid a lot of copying.
See src/backend/executor/nodeAgg.c if you are wondering why the state
values need to be copied around.
regards, tom lane
В списке pgsql-hackers по дате отправления: