|
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 | /*
|
|