Re: [QUESTIONS] Postgresql dies with "FATAL 1: palloc failure: memory exhausted"

Vadim B. Mikheev <vadim@sable.krasnoyarsk.su>

From: "Vadim B. Mikheev" <vadim@sable.krasnoyarsk.su>
To: Chris Albertson <chris@topdog.pas1.logicon.com>
Cc: pgsql-questions@hub.org, hackers@postgresql.org
Date: 1998-04-02T01:37:27Z
Lists: pgsql-hackers
Chris Albertson wrote:
> 
> This is just one example.  ++Every time++ I do a SELECT where
> the expected result is a large number of rows I get a
> failure of some type.
> 
> testdb=> select count(*) from tassm16
> testdb-> where 15.5 < b_mag::float4 - (0.375 * (b_mag -
>          r_mag)::float4);
> FATAL 1:  palloc failure: memory exhausted
> testdb=>
> 
> I can make Postgresql 6.3 fail every time.  Just do a SELECT
> where the number of rows returned is > a few million.  The

0.375 above is float8 and so server uses two float8 funcs to
calculate right op of '<' ==> 2 * palloc(8) for each row.
palloc(8) eats more than 8 bytes of memmory (~ 24): 2 * 24 = 48,
48 * 1_million_of_rows = 48 Mb.

This is problem of all data types passed by ref !!!
And this is old problem.

Vadim