wp
This commit is contained in:
@@ -43,14 +43,14 @@ func (s *ReplayMetric) MeasuresAppend(rec MeasuresAppendRecord) {
|
||||
rec.Values, rec.ValuesRewindOffset)
|
||||
}
|
||||
|
||||
type AppendMeasuresResult struct {
|
||||
type ReplayMeasuresAppendWithGrowResult struct {
|
||||
IndexPagesToRewrite []PageToWrite
|
||||
DataPagesToRewrite []PageToWrite
|
||||
ReusedIndexPagesCount int
|
||||
ReusedDataPagesCount int
|
||||
}
|
||||
|
||||
func (s *ReplayMetric) MeasuresAppendWithGrow(rec MeasuresAppendWithGrowRecord, isLastPacket bool) (_ AppendMeasuresResult) {
|
||||
func (s *ReplayMetric) MeasuresAppendWithGrow(rec MeasuresAppendWithGrowRecord, isLastPacket bool) (_ ReplayMeasuresAppendWithGrowResult) {
|
||||
var (
|
||||
reusedIndexPages int
|
||||
reusedDataPages int
|
||||
@@ -82,6 +82,7 @@ func (s *ReplayMetric) MeasuresAppendWithGrow(rec MeasuresAppendWithGrowRecord,
|
||||
if head != nil {
|
||||
// попередній хвіст індексного рівня перетворився на head сторінку,
|
||||
// отже TailRecords - це новий хвіст
|
||||
clear(level.Buffer)
|
||||
copy(level.Buffer, change.TailRecords)
|
||||
level.RecordsCount = newRecordsCount
|
||||
} else {
|
||||
@@ -138,6 +139,7 @@ func (s *ReplayMetric) MeasuresAppendWithGrow(rec MeasuresAppendWithGrowRecord,
|
||||
}
|
||||
// HeadDataPage є полюбому, оскільки це транзакція із мінімум однією заповненою
|
||||
// data сторінкою. Отже TailTimestamps і TailValues - це нові хвости data рівня.
|
||||
clear(s.Buf)
|
||||
copy(s.Buf, rec.TailValues)
|
||||
s.ValuesSize = len(rec.TailValues)
|
||||
|
||||
@@ -151,7 +153,7 @@ func (s *ReplayMetric) MeasuresAppendWithGrow(rec MeasuresAppendWithGrowRecord,
|
||||
s.LastPageNo = rec.DataPages[len(rec.DataPages)-1].PageNo
|
||||
}
|
||||
|
||||
return AppendMeasuresResult{
|
||||
return ReplayMeasuresAppendWithGrowResult{
|
||||
IndexPagesToRewrite: indexPages,
|
||||
DataPagesToRewrite: dataPages,
|
||||
ReusedIndexPagesCount: reusedIndexPages,
|
||||
@@ -192,9 +194,9 @@ func (s *ReplayMetric) composeHeadDataPage(head DataPageTail) PageToWrite {
|
||||
page := make([]byte, DataPageSize)
|
||||
copy(page, s.Buf)
|
||||
// append data
|
||||
timestampsSize := writeTimestampsWithRewind(s.Buf, s.TimestampsSize,
|
||||
timestampsSize := writeTimestampsWithRewind(page, s.TimestampsSize,
|
||||
head.Timestamps, head.TimestampsRewindOffset)
|
||||
valuesSize := writeValuesWithRewind(s.Buf, s.ValuesSize,
|
||||
valuesSize := writeValuesWithRewind(page, s.ValuesSize,
|
||||
head.Values, head.ValuesRewindOffset)
|
||||
// запечатати сторінку
|
||||
calculatedCRC := SealDataPage(SealDataPageIn{
|
||||
|
||||
Reference in New Issue
Block a user