1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-17 06:41:09 +03:00

Back-patch fix for 'btree: failed to add item to the page in _bt_sort (2)'

failure during index creation.  This problem should be gone in current
sources, but I just thought I'd commit the 7.0.* patch in case anyone
else needs it.
This commit is contained in:
Tom Lane
2001-01-04 21:51:49 +00:00
parent a860a403a9
commit de9b43f3f5

View File

@ -28,7 +28,7 @@
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtsort.c,v 1.52 2000/04/12 17:14:49 momjian Exp $ * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtsort.c,v 1.52.2.1 2001/01/04 21:51:49 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -321,7 +321,7 @@ _bt_buildadd(Relation index, Size keysz, ScanKey scankey,
btisz, btisz,
(PageGetPageSize(npage) - sizeof(PageHeaderData) - MAXALIGN(sizeof(BTPageOpaqueData))) /3 - sizeof(ItemIdData)); (PageGetPageSize(npage) - sizeof(PageHeaderData) - MAXALIGN(sizeof(BTPageOpaqueData))) /3 - sizeof(ItemIdData));
if (pgspc < btisz) while (pgspc < btisz)
{ {
Buffer obuf = nbuf; Buffer obuf = nbuf;
Page opage = npage; Page opage = npage;
@ -436,6 +436,13 @@ _bt_buildadd(Relation index, Size keysz, ScanKey scankey,
* we aren't locking). * we aren't locking).
*/ */
_bt_wrtbuf(index, obuf); _bt_wrtbuf(index, obuf);
/*
* Recompute pgspc and loop back to check free space again. If
* we were forced to split at a bad split point, we might need
* to split again.
*/
pgspc = PageGetFreeSpace(npage);
} }
/* /*