Re: [GSoC] Question about returning bytea array
От | Pavel Stehule |
---|---|
Тема | Re: [GSoC] Question about returning bytea array |
Дата | |
Msg-id | CAFj8pRD1u1Jxn6ZiX-=jOp6f_V37S6Ddu0vM-TbHk-LQsQr0GQ@mail.gmail.com обсуждение исходный текст |
Ответ на | [GSoC] Question about returning bytea array (Charles Cui <charles.cui1984@gmail.com>) |
Список | pgsql-hackers |
2018-05-17 7:03 GMT+02:00 Charles Cui <charles.cui1984@gmail.com>:
Hi Aleksander,I have the requirements to return a bytea array for some functions in pg_thrift plugin.What I did was similar to the following,bytea** ret = palloc(len * sizeof(bytea*));for (int i = 0; i < len; i++) {// allocate spaceret[i] = palloc(size);// fill in ret[i]...}PG_RETURN_POINTER(ret);I can verify each ret[i] is correct by logging, but server crash whenexecuted PG_RETURN_POINTER(ret).So, I am wondering what's the reason of the crash?and what's the recommended way (best practice) to construct a return value to be bytea array?
You should to set a size of any varlena structure.
check postgresql/src/backend/utils/adt/varlena.c code
When I started with PostgreSQL hacking my often problem was memory allocation in bad (deallocated) context. Good to use own self compiled version of PostgreSQL configured with --enable-cassert option.
Regards
Pavel
В списке pgsql-hackers по дате отправления: