Re: ERROR: out of free buffers: time to abort!

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Joseph Shraibman <jks(at)selectacast(dot)net>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: ERROR: out of free buffers: time to abort!
Date: 2003-03-23 21:58:13
Message-ID: 3618.1048456693@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Joseph Shraibman <jks(at)selectacast(dot)net> writes:
> My update looks like:
> UPDATE tablename SET intfield = 2 WHERE keyfield IN( ... )

> If I lowered the number of items in the IN() then I didn't get the
> error, but what that number is is a moving target.

I've applied the attached patch to prevent this problem in 7.3.*.
A better solution will appear in 7.4, but I don't want to stick it into
the stable branch with no beta testing ...

regards, tom lane

*** src/backend/access/index/indexam.c.orig Wed Jan 8 14:41:57 2003
--- src/backend/access/index/indexam.c Sun Mar 23 16:44:37 2003
***************
*** 415,421 ****
--- 415,426 ----
*
* Note that we hold the pin on the single tuple's buffer throughout
* the scan once we are in this state.
+ *
+ * XXX disabled for 7.3.3 because it results in intra-query buffer leak
+ * when a multi-index indexscan is done. Full fix seems too risky to
+ * backpatch.
*/
+ #ifdef NOT_USED
if (scan->keys_are_unique && scan->got_tuple)
{
if (ScanDirectionIsForward(direction))
***************
*** 433,438 ****
--- 438,444 ----
else
return NULL;
}
+ #endif

/* Release any previously held pin */
if (BufferIsValid(scan->xs_cbuf))

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Daniel R. Anderson 2003-03-23 23:04:55 Re: postgreSQL as MSSQL2000 server?
Previous Message Daniel R. Anderson 2003-03-23 21:42:21 Re: PostgreSQL downloads compressed with bzip2 instead of