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

Commit0ac5920

Browse files
committed
bugfix: multi-timeline pagemap
1 parent3e0c871 commit0ac5920

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

‎src/parsexlog.c‎

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,6 @@ extractPageMap(const char *archivedir, uint32 wal_seg_size,
276276
timelineInfo*end_tlinfo=NULL;
277277
timelineInfo*tmp_tlinfo=NULL;
278278
XLogRecPtrprev_switchpoint=InvalidXLogRecPtr;
279-
lsnInterval*wal_interval=NULL;
280279

281280
/* We must find TLI information about final timeline (t3 in example) */
282281
for (i=0;i<parray_num(tli_list);i++)
@@ -298,7 +297,7 @@ extractPageMap(const char *archivedir, uint32 wal_seg_size,
298297
tmp_tlinfo=end_tlinfo;
299298
while (tmp_tlinfo)
300299
{
301-
wal_interval=pgut_malloc(sizeof(lsnInterval));
300+
lsnInterval*wal_interval=pgut_malloc(sizeof(lsnInterval));
302301
wal_interval->tli=tmp_tlinfo->tli;
303302

304303
if (tmp_tlinfo->tli==end_tli)
@@ -326,25 +325,25 @@ extractPageMap(const char *archivedir, uint32 wal_seg_size,
326325
for (i=parray_num(interval_list)-1;i >=0;i--)
327326
{
328327
boolinclusive_endpoint;
329-
wal_interval=parray_get(interval_list,i);
328+
lsnInterval*tmp_interval= (lsnInterval*)parray_get(interval_list,i);
330329

331330
/* In case of replica promotion, endpoints of intermediate
332331
* timelines can be unreachable.
333332
*/
334333
inclusive_endpoint= false;
335334

336335
/* ... but not the end timeline */
337-
if (wal_interval->tli==end_tli)
336+
if (tmp_interval->tli==end_tli)
338337
inclusive_endpoint= true;
339338

340339
extract_isok=RunXLogThreads(archivedir,0,InvalidTransactionId,
341-
InvalidXLogRecPtr,wal_interval->tli,wal_seg_size,
342-
wal_interval->begin_lsn,wal_interval->end_lsn,
340+
InvalidXLogRecPtr,tmp_interval->tli,wal_seg_size,
341+
tmp_interval->begin_lsn,tmp_interval->end_lsn,
343342
false,extractPageInfo,NULL,inclusive_endpoint);
344343
if (!extract_isok)
345344
break;
346345

347-
pg_free(wal_interval);
346+
pg_free(tmp_interval);
348347
}
349348
pg_free(interval_list);
350349
}
@@ -1064,6 +1063,12 @@ RunXLogThreads(const char *archivedir, time_t target_time,
10641063
elog(ERROR,"Invalid startpoint value %X/%X",
10651064
(uint32) (startpoint >>32), (uint32) (startpoint));
10661065

1066+
if (process_record)
1067+
elog(LOG,"Extracting pagemap from tli %i on range from %X/%X to %X/%X",
1068+
tli,
1069+
(uint32) (startpoint >>32), (uint32) (startpoint),
1070+
(uint32) (endpoint >>32), (uint32) (endpoint));
1071+
10671072
if (!XLogRecPtrIsInvalid(endpoint))
10681073
{
10691074
//if (XRecOffIsNull(endpoint) && !inclusive_endpoint)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp