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

Commit5e6641b

Browse files
author
Alexander Korotkov
committed
Fix bug while form toast tuple. Also make support of arbitratry initial values for SLRU.
1 parentf255954 commit5e6641b

File tree

5 files changed

+28
-7
lines changed

5 files changed

+28
-7
lines changed

‎src/backend/access/heap/tuptoaster.c‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1026,7 +1026,7 @@ toast_insert_or_update(Relation rel, HeapTuple newtup, HeapTuple oldtup,
10261026
result_tuple->t_len=new_tuple_len;
10271027
result_tuple->t_self=newtup->t_self;
10281028
result_tuple->t_tableOid=newtup->t_tableOid;
1029-
HeapTupleSetInvalidEpoch(result_tuple);
1029+
HeapTupleCopyEpoch(result_tuple,newtup);
10301030
new_data= (HeapTupleHeader) ((char*)result_tuple+HEAPTUPLESIZE);
10311031
result_tuple->t_data=new_data;
10321032

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -461,6 +461,9 @@ void
461461
BootStrapCLOG(void)
462462
{
463463
intslotno;
464+
int64pageno;
465+
466+
pageno=TransactionIdToPage(ShmemVariableCache->nextXid);
464467

465468
LWLockAcquire(CLogControlLock,LW_EXCLUSIVE);
466469

@@ -471,6 +474,16 @@ BootStrapCLOG(void)
471474
SimpleLruWritePage(ClogCtl,slotno);
472475
Assert(!ClogCtl->shared->page_dirty[slotno]);
473476

477+
if (pageno!=0)
478+
{
479+
/* Create and zero the first page of the commit log */
480+
slotno=ZeroCLOGPage(pageno, false);
481+
482+
/* Make sure it's written out */
483+
SimpleLruWritePage(ClogCtl,slotno);
484+
Assert(!ClogCtl->shared->page_dirty[slotno]);
485+
}
486+
474487
LWLockRelease(CLogControlLock);
475488
}
476489

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1666,22 +1666,28 @@ void
16661666
BootStrapMultiXact(void)
16671667
{
16681668
intslotno;
1669+
int64multiOffsetPageno;
1670+
int64multiMemberPageno;
1671+
1672+
multiOffsetPageno=MultiXactIdToOffsetPage(MultiXactState->nextMXact);
16691673

16701674
LWLockAcquire(MultiXactOffsetControlLock,LW_EXCLUSIVE);
16711675

16721676
/* Create and zero the first page of the offsets log */
1673-
slotno=ZeroMultiXactOffsetPage(0, false);
1677+
slotno=ZeroMultiXactOffsetPage(multiOffsetPageno, false);
16741678

16751679
/* Make sure it's written out */
16761680
SimpleLruWritePage(MultiXactOffsetCtl,slotno);
16771681
Assert(!MultiXactOffsetCtl->shared->page_dirty[slotno]);
16781682

16791683
LWLockRelease(MultiXactOffsetControlLock);
16801684

1685+
multiMemberPageno=MXOffsetToMemberPage(MultiXactState->nextOffset);
1686+
16811687
LWLockAcquire(MultiXactMemberControlLock,LW_EXCLUSIVE);
16821688

16831689
/* Create and zero the first page of the members log */
1684-
slotno=ZeroMultiXactMemberPage(0, false);
1690+
slotno=ZeroMultiXactMemberPage(multiMemberPageno, false);
16851691

16861692
/* Make sure it's written out */
16871693
SimpleLruWritePage(MultiXactMemberCtl,slotno);

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,11 +198,14 @@ void
198198
BootStrapSUBTRANS(void)
199199
{
200200
intslotno;
201+
int64pageno;
202+
203+
pageno=TransactionIdToPage(ShmemVariableCache->nextXid);
201204

202205
LWLockAcquire(SubtransControlLock,LW_EXCLUSIVE);
203206

204207
/* Create and zero the first page of the subtrans log */
205-
slotno=ZeroSUBTRANSPage(0);
208+
slotno=ZeroSUBTRANSPage(pageno);
206209

207210
/* Make sure it's written out */
208211
SimpleLruWritePage(SubTransCtl,slotno);

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4806,13 +4806,12 @@ BootStrapXLOG(void)
48064806
checkPoint.ThisTimeLineID=ThisTimeLineID;
48074807
checkPoint.PrevTimeLineID=ThisTimeLineID;
48084808
checkPoint.fullPageWrites=fullPageWrites;
4809-
checkPoint.nextXid=FirstNormalTransactionId;
4810-
TransactionIdAdvance(checkPoint.nextXid);
4809+
checkPoint.nextXid=FirstNormalTransactionId+1;
48114810
checkPoint.nextOid=FirstBootstrapObjectId;
48124811
checkPoint.nextMulti=FirstMultiXactId;
48134812
checkPoint.nextMultiOffset=0;
48144813
checkPoint.nextMulti++;
4815-
checkPoint.oldestXid=FirstNormalTransactionId;
4814+
checkPoint.oldestXid=checkPoint.nextXid-1;
48164815
checkPoint.oldestXidDB=TemplateDbOid;
48174816
checkPoint.oldestMulti=FirstMultiXactId;
48184817
checkPoint.oldestMultiDB=TemplateDbOid;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp