8
8
*
9
9
*
10
10
* IDENTIFICATION
11
- * $PostgreSQL: pgsql/src/backend/access/heap/heapam.c,v 1.192 2005/06/06 17:01:22 tgl Exp $
11
+ * $PostgreSQL: pgsql/src/backend/access/heap/heapam.c,v 1.193 2005/06/06 20:22:56 tgl Exp $
12
12
*
13
13
*
14
14
* INTERFACE ROUTINES
@@ -1107,9 +1107,9 @@ heap_insert(Relation relation, HeapTuple tup, CommandId cid)
1107
1107
1108
1108
xlrec .target .node = relation -> rd_node ;
1109
1109
xlrec .target .tid = tup -> t_self ;
1110
- rdata [0 ].buffer = InvalidBuffer ;
1111
1110
rdata [0 ].data = (char * ) & xlrec ;
1112
1111
rdata [0 ].len = SizeOfHeapInsert ;
1112
+ rdata [0 ].buffer = InvalidBuffer ;
1113
1113
rdata [0 ].next = & (rdata [1 ]);
1114
1114
1115
1115
xlhdr .t_natts = tup -> t_data -> t_natts ;
@@ -1121,15 +1121,17 @@ heap_insert(Relation relation, HeapTuple tup, CommandId cid)
1121
1121
* decides to write the whole page to the xlog, we don't need to
1122
1122
* store xl_heap_header in the xlog.
1123
1123
*/
1124
- rdata [1 ].buffer = buffer ;
1125
1124
rdata [1 ].data = (char * ) & xlhdr ;
1126
1125
rdata [1 ].len = SizeOfHeapHeader ;
1126
+ rdata [1 ].buffer = buffer ;
1127
+ rdata [1 ].buffer_std = true;
1127
1128
rdata [1 ].next = & (rdata [2 ]);
1128
1129
1129
- rdata [2 ].buffer = buffer ;
1130
1130
/* PG73FORMAT: write bitmap [+ padding] [+ oid] + data */
1131
1131
rdata [2 ].data = (char * ) tup -> t_data + offsetof(HeapTupleHeaderData , t_bits );
1132
1132
rdata [2 ].len = tup -> t_len - offsetof(HeapTupleHeaderData , t_bits );
1133
+ rdata [2 ].buffer = buffer ;
1134
+ rdata [2 ].buffer_std = true;
1133
1135
rdata [2 ].next = NULL ;
1134
1136
1135
1137
/*
@@ -1378,14 +1380,15 @@ heap_delete(Relation relation, ItemPointer tid,
1378
1380
1379
1381
xlrec .target .node = relation -> rd_node ;
1380
1382
xlrec .target .tid = tp .t_self ;
1381
- rdata [0 ].buffer = InvalidBuffer ;
1382
1383
rdata [0 ].data = (char * ) & xlrec ;
1383
1384
rdata [0 ].len = SizeOfHeapDelete ;
1385
+ rdata [0 ].buffer = InvalidBuffer ;
1384
1386
rdata [0 ].next = & (rdata [1 ]);
1385
1387
1386
- rdata [1 ].buffer = buffer ;
1387
1388
rdata [1 ].data = NULL ;
1388
1389
rdata [1 ].len = 0 ;
1390
+ rdata [1 ].buffer = buffer ;
1391
+ rdata [1 ].buffer_std = true;
1389
1392
rdata [1 ].next = NULL ;
1390
1393
1391
1394
recptr = XLogInsert (RM_HEAP_ID , XLOG_HEAP_DELETE , rdata );
@@ -2226,14 +2229,15 @@ heap_lock_tuple(Relation relation, HeapTuple tuple, Buffer *buffer,
2226
2229
xlrec .target .node = relation -> rd_node ;
2227
2230
xlrec .target .tid = tuple -> t_self ;
2228
2231
xlrec .shared_lock = (mode == LockTupleShared );
2229
- rdata [0 ].buffer = InvalidBuffer ;
2230
2232
rdata [0 ].data = (char * ) & xlrec ;
2231
2233
rdata [0 ].len = SizeOfHeapLock ;
2234
+ rdata [0 ].buffer = InvalidBuffer ;
2232
2235
rdata [0 ].next = & (rdata [1 ]);
2233
2236
2234
- rdata [1 ].buffer = * buffer ;
2235
2237
rdata [1 ].data = NULL ;
2236
2238
rdata [1 ].len = 0 ;
2239
+ rdata [1 ].buffer = * buffer ;
2240
+ rdata [1 ].buffer_std = true;
2237
2241
rdata [1 ].next = NULL ;
2238
2242
2239
2243
recptr = XLogInsert (RM_HEAP_ID , XLOG_HEAP_LOCK , rdata );
@@ -2330,17 +2334,16 @@ log_heap_clean(Relation reln, Buffer buffer, OffsetNumber *unused, int uncnt)
2330
2334
xlrec .node = reln -> rd_node ;
2331
2335
xlrec .block = BufferGetBlockNumber (buffer );
2332
2336
2333
- rdata [0 ].buffer = InvalidBuffer ;
2334
2337
rdata [0 ].data = (char * ) & xlrec ;
2335
2338
rdata [0 ].len = SizeOfHeapClean ;
2339
+ rdata [0 ].buffer = InvalidBuffer ;
2336
2340
rdata [0 ].next = & (rdata [1 ]);
2337
2341
2338
2342
/*
2339
2343
* The unused-offsets array is not actually in the buffer, but pretend
2340
2344
* that it is. When XLogInsert stores the whole buffer, the offsets
2341
2345
* array need not be stored too.
2342
2346
*/
2343
- rdata [1 ].buffer = buffer ;
2344
2347
if (uncnt > 0 )
2345
2348
{
2346
2349
rdata [1 ].data = (char * ) unused ;
@@ -2351,6 +2354,8 @@ log_heap_clean(Relation reln, Buffer buffer, OffsetNumber *unused, int uncnt)
2351
2354
rdata [1 ].data = NULL ;
2352
2355
rdata [1 ].len = 0 ;
2353
2356
}
2357
+ rdata [1 ].buffer = buffer ;
2358
+ rdata [1 ].buffer_std = true;
2354
2359
rdata [1 ].next = NULL ;
2355
2360
2356
2361
recptr = XLogInsert (RM_HEAP_ID , XLOG_HEAP_CLEAN , rdata );
@@ -2388,14 +2393,15 @@ log_heap_update(Relation reln, Buffer oldbuf, ItemPointerData from,
2388
2393
xlrec .target .node = reln -> rd_node ;
2389
2394
xlrec .target .tid = from ;
2390
2395
xlrec .newtid = newtup -> t_self ;
2391
- rdata [0 ].buffer = InvalidBuffer ;
2392
2396
rdata [0 ].data = (char * ) & xlrec ;
2393
2397
rdata [0 ].len = SizeOfHeapUpdate ;
2398
+ rdata [0 ].buffer = InvalidBuffer ;
2394
2399
rdata [0 ].next = & (rdata [1 ]);
2395
2400
2396
- rdata [1 ].buffer = oldbuf ;
2397
2401
rdata [1 ].data = NULL ;
2398
2402
rdata [1 ].len = 0 ;
2403
+ rdata [1 ].buffer = oldbuf ;
2404
+ rdata [1 ].buffer_std = true;
2399
2405
rdata [1 ].next = & (rdata [2 ]);
2400
2406
2401
2407
xlhdr .hdr .t_natts = newtup -> t_data -> t_natts ;
@@ -2420,15 +2426,17 @@ log_heap_update(Relation reln, Buffer oldbuf, ItemPointerData from,
2420
2426
* As with insert records, we need not store the rdata[2] segment if
2421
2427
* we decide to store the whole buffer instead.
2422
2428
*/
2423
- rdata [2 ].buffer = newbuf ;
2424
2429
rdata [2 ].data = (char * ) & xlhdr ;
2425
2430
rdata [2 ].len = hsize ;
2431
+ rdata [2 ].buffer = newbuf ;
2432
+ rdata [2 ].buffer_std = true;
2426
2433
rdata [2 ].next = & (rdata [3 ]);
2427
2434
2428
- rdata [3 ].buffer = newbuf ;
2429
2435
/* PG73FORMAT: write bitmap [+ padding] [+ oid] + data */
2430
2436
rdata [3 ].data = (char * ) newtup -> t_data + offsetof(HeapTupleHeaderData , t_bits );
2431
2437
rdata [3 ].len = newtup -> t_len - offsetof(HeapTupleHeaderData , t_bits );
2438
+ rdata [3 ].buffer = newbuf ;
2439
+ rdata [3 ].buffer_std = true;
2432
2440
rdata [3 ].next = NULL ;
2433
2441
2434
2442
/* If new tuple is the single and first tuple on page... */
0 commit comments