Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit3706f08

Browse files
committed
Fix recovery cache code (thanks to Peter Eisentraut for
pointing to bug).
1 parentb99ee7f commit3706f08

File tree

1 file changed

+10
-23
lines changed

1 file changed

+10
-23
lines changed

‎src/backend/access/transam/xlogutils.c

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -238,15 +238,14 @@ static XLogRelDesc *_xlrelarr = NULL;
238238
staticForm_pg_class_xlpgcarr=NULL;
239239
staticint_xlast=0;
240240
staticint_xlcnt=0;
241-
#define_XLOG_INITRELCACHESIZE32
242-
#define_XLOG_MAXRELCACHESIZE512
241+
#define_XLOG_RELCACHESIZE512
243242

244243
staticvoid
245244
_xl_init_rel_cache(void)
246245
{
247246
HASHCTLctl;
248247

249-
_xlcnt=_XLOG_INITRELCACHESIZE;
248+
_xlcnt=_XLOG_RELCACHESIZE;
250249
_xlast=0;
251250
_xlrelarr= (XLogRelDesc*)malloc(sizeof(XLogRelDesc)*_xlcnt);
252251
memset(_xlrelarr,0,sizeof(XLogRelDesc)*_xlcnt);
@@ -261,7 +260,7 @@ _xl_init_rel_cache(void)
261260
ctl.datasize=sizeof(XLogRelDesc*);
262261
ctl.hash=tag_hash;
263262

264-
_xlrelcache=hash_create(_XLOG_INITRELCACHESIZE,&ctl,
263+
_xlrelcache=hash_create(_XLOG_RELCACHESIZE,&ctl,
265264
HASH_ELEM |HASH_FUNCTION);
266265
}
267266

@@ -297,34 +296,22 @@ _xl_remove_hash_entry(XLogRelDesc **edata, int dummy)
297296
staticXLogRelDesc*
298297
_xl_new_reldesc(void)
299298
{
299+
XLogRelDesc*res;
300+
300301
_xlast++;
301302
if (_xlast<_xlcnt)
302303
{
303304
_xlrelarr[_xlast].reldata.rd_rel=&(_xlpgcarr[_xlast]);
304305
return(&(_xlrelarr[_xlast]));
305306
}
306307

307-
if (2*_xlcnt <=_XLOG_MAXRELCACHESIZE)
308-
{
309-
_xlrelarr= (XLogRelDesc*)realloc(_xlrelarr,
310-
2*sizeof(XLogRelDesc)*_xlcnt);
311-
memset(&(_xlrelarr[_xlcnt]),0,sizeof(XLogRelDesc)*_xlcnt);
312-
_xlpgcarr= (Form_pg_class)realloc(_xlpgcarr,
313-
2*sizeof(FormData_pg_class)*_xlcnt);
314-
memset(&(_xlpgcarr[_xlcnt]),0,sizeof(FormData_pg_class)*_xlcnt);
315-
_xlcnt+=_xlcnt;
316-
_xlrelarr[_xlast].reldata.rd_rel=&(_xlpgcarr[_xlast]);
317-
return(&(_xlrelarr[_xlast]));
318-
}
319-
else/* reuse */
320-
{
321-
XLogRelDesc*res=_xlrelarr[0].moreRecently;
308+
/* reuse */
309+
res=_xlrelarr[0].moreRecently;
322310

323-
_xl_remove_hash_entry(&res,0);
311+
_xl_remove_hash_entry(&res,0);
324312

325-
_xlast--;
326-
return(res);
327-
}
313+
_xlast--;
314+
return(res);
328315
}
329316

330317
externvoidCreateDummyCaches(void);

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp