Re: Bug #548: Misleading documentation of `palloc'
От | Bruce Momjian |
---|---|
Тема | Re: Bug #548: Misleading documentation of `palloc' |
Дата | |
Msg-id | 200201030813.g038Dcc25128@candle.pha.pa.us обсуждение исходный текст |
Ответ на | Bug #548: Misleading documentation of `palloc' (pgsql-bugs@postgresql.org) |
Список | pgsql-bugs |
Developer's FAQ updated to: <P><I>palloc()</I> and <I>pfree()</I> are used in place of malloc() and free() because we find it easier to automatically free all memory allocated when a query completes. This assures us that all memory that was allocated gets freed even if we have lost track of where we allocated it. There are special non-query contexts that memory can be allocated in. These affect when the allocated memory is freed by the backend.</P> --------------------------------------------------------------------------- pgsql-bugs@postgresql.org wrote: > Holger Krug (hkrug@rationalizer.com) reports a bug with a severity of 2 > The lower the number the more severe it is. > > Short Description > Misleading documentation of `palloc' > > Long Description > In section 12.5.6 "Writing Code" of the "PostgreSQL 7.2 Programmer's > Guide" the following is said: > > "When allocating memory, use the PostgreSQL routines `palloc' and > `pfree' instead of the corresponding C library routines `malloc' and > `free'. The memory allocated by `palloc' will be freed automatically > at the end of each transaction, preventing memory leaks." > > This is not actually wrong but *misleading*, because memory allocated by `palloc' in a user-defined server-side C languagefunction is freed not only at transaction end but actually at the end of each TransactionCommand - or even more:at the end of each expression evaluation. The reason is, that the `CurrentMemoryContext' used for the evaluation ofsuch functions is `PlanExprContext', which is a > child of `TransactionCommandContext', which is a child of > `TopTransactionContext'. -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026
В списке pgsql-bugs по дате отправления: