Search Postgresql Archives

Need to check palloc() return value?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Do user-defined functions need to check palloc()'s return value,
or does return guarantee success?  The latter appears to be the
case:

Datum
palloctest(PG_FUNCTION_ARGS)
{
    int32  nbytes = PG_GETARG_INT32(0);
    char  *p;
    ereport(INFO, (errmsg("calling palloc")));
    p = palloc(nbytes);
    ereport(INFO, (errmsg("palloc returned")));
    PG_RETURN_INT32(nbytes);
}

SELECT palloctest(1000);
INFO:  calling palloc
INFO:  palloc returned
 palloctest 
------------
       1000
(1 row)

\set VERBOSITY verbose
SELECT palloctest(1000000000);
INFO:  00000: calling palloc
LOCATION:  palloctest, palloctest.c:34
ERROR:  53200: out of memory
DETAIL:  Failed on request of size 1000000000.
LOCATION:  AllocSetAlloc, aset.c:505

Control doesn't return to the user-defined function if the allocation
fails, so checking palloc()'s return value seems superfluous.  Is it
safe to rely on this behavior?

-- 
Michael Fuhr
http://www.fuhr.org/~mfuhr/

---------------------------(end of broadcast)---------------------------
TIP 8: explain analyze is your friend

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux