8
8
* Portions Copyright (c) 1994, Regents of the University of California
9
9
*
10
10
* IDENTIFICATION
11
- * $PostgreSQL: pgsql/src/backend/access/gin/ginbtree.c,v 1.8 2007/02/01 04:16:07 neilc Exp $
11
+ * $PostgreSQL: pgsql/src/backend/access/gin/ginbtree.c,v 1.9 2007/06/05 12:47:49 teodor Exp $
12
12
*-------------------------------------------------------------------------
13
13
*/
14
14
@@ -294,6 +294,8 @@ ginInsertValue(GinBtree btree, GinBtreeStack *stack)
294
294
START_CRIT_SECTION ();
295
295
btree -> placeToPage (btree , stack -> buffer , stack -> off , & rdata );
296
296
297
+ MarkBufferDirty (stack -> buffer );
298
+
297
299
if (!btree -> index -> rd_istemp )
298
300
{
299
301
XLogRecPtr recptr ;
@@ -303,7 +305,6 @@ ginInsertValue(GinBtree btree, GinBtreeStack *stack)
303
305
PageSetTLI (page , ThisTimeLineID );
304
306
}
305
307
306
- MarkBufferDirty (stack -> buffer );
307
308
UnlockReleaseBuffer (stack -> buffer );
308
309
END_CRIT_SECTION ();
309
310
@@ -351,6 +352,11 @@ ginInsertValue(GinBtree btree, GinBtreeStack *stack)
351
352
GinInitBuffer (stack -> buffer , GinPageGetOpaque (newlpage )-> flags & ~GIN_LEAF );
352
353
PageRestoreTempPage (newlpage , lpage );
353
354
btree -> fillRoot (btree , stack -> buffer , lbuffer , rbuffer );
355
+
356
+ MarkBufferDirty (rbuffer );
357
+ MarkBufferDirty (lbuffer );
358
+ MarkBufferDirty (stack -> buffer );
359
+
354
360
if (!btree -> index -> rd_istemp )
355
361
{
356
362
XLogRecPtr recptr ;
@@ -364,11 +370,8 @@ ginInsertValue(GinBtree btree, GinBtreeStack *stack)
364
370
PageSetTLI (rpage , ThisTimeLineID );
365
371
}
366
372
367
- MarkBufferDirty (rbuffer );
368
373
UnlockReleaseBuffer (rbuffer );
369
- MarkBufferDirty (lbuffer );
370
374
UnlockReleaseBuffer (lbuffer );
371
- MarkBufferDirty (stack -> buffer );
372
375
UnlockReleaseBuffer (stack -> buffer );
373
376
374
377
END_CRIT_SECTION ();
@@ -389,6 +392,10 @@ ginInsertValue(GinBtree btree, GinBtreeStack *stack)
389
392
390
393
START_CRIT_SECTION ();
391
394
PageRestoreTempPage (newlpage , lpage );
395
+
396
+ MarkBufferDirty (rbuffer );
397
+ MarkBufferDirty (stack -> buffer );
398
+
392
399
if (!btree -> index -> rd_istemp )
393
400
{
394
401
XLogRecPtr recptr ;
@@ -399,9 +406,7 @@ ginInsertValue(GinBtree btree, GinBtreeStack *stack)
399
406
PageSetLSN (rpage , recptr );
400
407
PageSetTLI (rpage , ThisTimeLineID );
401
408
}
402
- MarkBufferDirty (rbuffer );
403
409
UnlockReleaseBuffer (rbuffer );
404
- MarkBufferDirty (stack -> buffer );
405
410
END_CRIT_SECTION ();
406
411
}
407
412
}
0 commit comments