Re: Bug #548: Misleading documentation of `palloc' - Mailing list pgsql-bugs

From Bruce Momjian
Subject Re: Bug #548: Misleading documentation of `palloc'
Date
Msg-id 200201030813.g038Dcc25128@candle.pha.pa.us
Whole thread Raw
In response to Bug #548: Misleading documentation of `palloc'  (pgsql-bugs@postgresql.org)
List 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 by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: After ~Crash Sequence not correct
Next
From: Mikko Vierula
Date:
Subject: Re: Serializable access giving wrong error messages?