|
28 | 28 | * Portions Copyright (c) 1994, Regents of the University of California |
29 | 29 | * |
30 | 30 | * IDENTIFICATION |
31 | | - * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtsort.c,v 1.52 2000/04/12 17:14:49momjian Exp $ |
| 31 | + * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtsort.c,v 1.52.2.1 2001/01/04 21:51:49tgl Exp $ |
32 | 32 | * |
33 | 33 | *------------------------------------------------------------------------- |
34 | 34 | */ |
@@ -321,7 +321,7 @@ _bt_buildadd(Relation index, Size keysz, ScanKey scankey, |
321 | 321 | btisz, |
322 | 322 | (PageGetPageSize(npage)-sizeof(PageHeaderData)-MAXALIGN(sizeof(BTPageOpaqueData))) /3-sizeof(ItemIdData)); |
323 | 323 |
|
324 | | -if (pgspc<btisz) |
| 324 | +while (pgspc<btisz) |
325 | 325 | { |
326 | 326 | Bufferobuf=nbuf; |
327 | 327 | Pageopage=npage; |
@@ -436,6 +436,13 @@ _bt_buildadd(Relation index, Size keysz, ScanKey scankey, |
436 | 436 | * we aren't locking). |
437 | 437 | */ |
438 | 438 | _bt_wrtbuf(index,obuf); |
| 439 | + |
| 440 | +/* |
| 441 | + * Recompute pgspc and loop back to check free space again. If |
| 442 | + * we were forced to split at a bad split point, we might need |
| 443 | + * to split again. |
| 444 | + */ |
| 445 | +pgspc=PageGetFreeSpace(npage); |
439 | 446 | } |
440 | 447 |
|
441 | 448 | /* |
|