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:
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user