8
8
*
9
9
*
10
10
* IDENTIFICATION
11
- * $PostgreSQL: pgsql/src/backend/storage/page/bufpage.c,v 1.57 2003/11/29 19:51:57 pgsql Exp $
11
+ * $PostgreSQL: pgsql/src/backend/storage/page/bufpage.c,v 1.58 2004/06/08 14:00:35 momjian Exp $
12
12
*
13
13
*-------------------------------------------------------------------------
14
14
*/
@@ -151,8 +151,8 @@ PageAddItem(Page page,
151
151
if (offsetNumber < limit )
152
152
{
153
153
itemId = PageGetItemId (phdr , offsetNumber );
154
- if ((( * itemId ). lp_flags & LP_USED ) ||
155
- (( * itemId ). lp_len != 0 ))
154
+ if ((itemId -> lp_flags & LP_USED ) ||
155
+ (itemId -> lp_len != 0 ))
156
156
{
157
157
elog (WARNING , "will not overwrite a used ItemId" );
158
158
return InvalidOffsetNumber ;
@@ -172,8 +172,8 @@ PageAddItem(Page page,
172
172
for (offsetNumber = 1 ; offsetNumber < limit ; offsetNumber ++ )
173
173
{
174
174
itemId = PageGetItemId (phdr , offsetNumber );
175
- if (((( * itemId ). lp_flags & LP_USED ) == 0 ) &&
176
- (( * itemId ). lp_len == 0 ))
175
+ if (((itemId -> lp_flags & LP_USED ) == 0 ) &&
176
+ (itemId -> lp_len == 0 ))
177
177
break ;
178
178
}
179
179
/* if no free slot, we'll put it at limit (1st open slot) */
@@ -214,9 +214,9 @@ PageAddItem(Page page,
214
214
(limit - offsetNumber ) * sizeof (ItemIdData ));
215
215
216
216
/* set the item pointer */
217
- ( * itemId ). lp_off = upper ;
218
- ( * itemId ). lp_len = size ;
219
- ( * itemId ). lp_flags = flags ;
217
+ itemId -> lp_off = upper ;
218
+ itemId -> lp_len = size ;
219
+ itemId -> lp_flags = flags ;
220
220
221
221
/* copy the item's data onto the page */
222
222
memcpy ((char * ) page + upper , item , size );
@@ -278,19 +278,20 @@ PageRestoreTempPage(Page tempPage, Page oldPage)
278
278
/*
279
279
* sorting support for PageRepairFragmentation
280
280
*/
281
- struct itemIdSortData
281
+ typedef struct itemIdSortData
282
282
{
283
283
int offsetindex ; /* linp array index */
284
284
int itemoff ; /* page offset of item data */
285
285
Size alignedlen ; /* MAXALIGN(item data len) */
286
- };
286
+ } itemIdSortData ;
287
+ typedef itemIdSortData * itemIdSort ;
287
288
288
289
static int
289
290
itemoffcompare (const void * itemidp1 , const void * itemidp2 )
290
291
{
291
292
/* Sort in decreasing itemoff order */
292
- return ((struct itemIdSortData * ) itemidp2 )-> itemoff -
293
- (( struct itemIdSortData * ) itemidp1 )-> itemoff ;
293
+ return ((itemIdSort ) itemidp2 )-> itemoff -
294
+ (( itemIdSort ) itemidp1 )-> itemoff ;
294
295
}
295
296
296
297
/*
@@ -309,8 +310,8 @@ PageRepairFragmentation(Page page, OffsetNumber *unused)
309
310
Offset pd_lower = ((PageHeader ) page )-> pd_lower ;
310
311
Offset pd_upper = ((PageHeader ) page )-> pd_upper ;
311
312
Offset pd_special = ((PageHeader ) page )-> pd_special ;
312
- struct itemIdSortData * itemidbase ,
313
- * itemidptr ;
313
+ itemIdSort itemidbase ,
314
+ itemidptr ;
314
315
ItemId lp ;
315
316
int nline ,
316
317
nused ;
@@ -340,9 +341,9 @@ PageRepairFragmentation(Page page, OffsetNumber *unused)
340
341
for (i = 0 ; i < nline ; i ++ )
341
342
{
342
343
lp = PageGetItemId (page , i + 1 );
343
- if (( * lp ). lp_flags & LP_DELETE ) /* marked for deletion */
344
- ( * lp ). lp_flags &= ~(LP_USED | LP_DELETE );
345
- if (( * lp ). lp_flags & LP_USED )
344
+ if (lp -> lp_flags & LP_DELETE ) /* marked for deletion */
345
+ lp -> lp_flags &= ~(LP_USED | LP_DELETE );
346
+ if (lp -> lp_flags & LP_USED )
346
347
nused ++ ;
347
348
else if (unused )
348
349
unused [i - nused ] = (OffsetNumber ) i ;
@@ -354,37 +355,36 @@ PageRepairFragmentation(Page page, OffsetNumber *unused)
354
355
for (i = 0 ; i < nline ; i ++ )
355
356
{
356
357
lp = PageGetItemId (page , i + 1 );
357
- ( * lp ). lp_len = 0 ; /* indicate unused & deallocated */
358
+ lp -> lp_len = 0 ; /* indicate unused & deallocated */
358
359
}
359
360
((PageHeader ) page )-> pd_upper = pd_special ;
360
361
}
361
362
else
362
363
{ /* nused != 0 */
363
364
/* Need to compact the page the hard way */
364
- itemidbase = (struct itemIdSortData * )
365
- palloc (sizeof (struct itemIdSortData ) * nused );
365
+ itemidbase = (itemIdSort ) palloc (sizeof (itemIdSortData ) * nused );
366
366
itemidptr = itemidbase ;
367
367
totallen = 0 ;
368
368
for (i = 0 ; i < nline ; i ++ )
369
369
{
370
370
lp = PageGetItemId (page , i + 1 );
371
- if (( * lp ). lp_flags & LP_USED )
371
+ if (lp -> lp_flags & LP_USED )
372
372
{
373
373
itemidptr -> offsetindex = i ;
374
- itemidptr -> itemoff = ( * lp ). lp_off ;
374
+ itemidptr -> itemoff = lp -> lp_off ;
375
375
if (itemidptr -> itemoff < (int ) pd_upper ||
376
376
itemidptr -> itemoff >= (int ) pd_special )
377
377
ereport (ERROR ,
378
378
(errcode (ERRCODE_DATA_CORRUPTED ),
379
379
errmsg ("corrupted item pointer: %u" ,
380
380
itemidptr -> itemoff )));
381
- itemidptr -> alignedlen = MAXALIGN (( * lp ). lp_len );
381
+ itemidptr -> alignedlen = MAXALIGN (lp -> lp_len );
382
382
totallen += itemidptr -> alignedlen ;
383
383
itemidptr ++ ;
384
384
}
385
385
else
386
386
{
387
- ( * lp ). lp_len = 0 ; /* indicate unused & deallocated */
387
+ lp -> lp_len = 0 ; /* indicate unused & deallocated */
388
388
}
389
389
}
390
390
@@ -395,7 +395,7 @@ PageRepairFragmentation(Page page, OffsetNumber *unused)
395
395
(unsigned int ) totallen , pd_special - pd_lower )));
396
396
397
397
/* sort itemIdSortData array into decreasing itemoff order */
398
- qsort ((char * ) itemidbase , nused , sizeof (struct itemIdSortData ),
398
+ qsort ((char * ) itemidbase , nused , sizeof (itemIdSortData ),
399
399
itemoffcompare );
400
400
401
401
/* compactify page */
@@ -408,7 +408,7 @@ PageRepairFragmentation(Page page, OffsetNumber *unused)
408
408
memmove ((char * ) page + upper ,
409
409
(char * ) page + itemidptr -> itemoff ,
410
410
itemidptr -> alignedlen );
411
- ( * lp ). lp_off = upper ;
411
+ lp -> lp_off = upper ;
412
412
}
413
413
414
414
((PageHeader ) page )-> pd_upper = upper ;
@@ -538,8 +538,9 @@ PageIndexTupleDelete(Page page, OffsetNumber offnum)
538
538
nline -- ; /* there's one less than when we started */
539
539
for (i = 1 ; i <= nline ; i ++ )
540
540
{
541
- if (PageGetItemId (phdr , i )-> lp_off <= offset )
542
- PageGetItemId (phdr , i )-> lp_off += size ;
541
+ ItemId ii = PageGetItemId (phdr , i );
542
+ if (ii -> lp_off <= offset )
543
+ ii -> lp_off += size ;
543
544
}
544
545
}
545
546
}
0 commit comments