Skip to content

Commit 3a5a168

Browse files
authored
fix: time disorder of order files after merge unordered data (openGemini#586)
Signed-off-by: fx408 <[email protected]>
1 parent 7ede3cd commit 3a5a168

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

engine/immutable/merge_out_of_order.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ func (m *MmsTables) matchOrderFiles(ctx *MergeContext) {
279279
continue
280280
}
281281

282-
if ctx.tr.Overlaps(min, max) || min > ctx.tr.Max {
282+
if ctx.order.Len() > 0 || ctx.tr.Overlaps(min, max) || min > ctx.tr.Max {
283283
ctx.order.add(f)
284284
}
285285
}

engine/immutable/merge_tool_test.go

+31
Original file line numberDiff line numberDiff line change
@@ -576,6 +576,37 @@ func TestMergeTool_Merge_mod17(t *testing.T) {
576576
}
577577
}
578578

579+
func TestMergeTool_Merge_mod18(t *testing.T) {
580+
var begin int64 = 1e12
581+
defer beforeTest(t, 10)()
582+
schemas := getDefaultSchemas()
583+
584+
immutable.SetMergeFlag4TsStore(1)
585+
mh := NewMergeTestHelper(immutable.NewTsStoreConfig())
586+
defer mh.store.Close()
587+
rg := newRecordGenerator(begin, defaultInterval, false)
588+
589+
rg.setBegin(begin)
590+
mh.addRecord(100, rg.generate(schemas, 1))
591+
mh.addRecord(101, rg.generate(schemas, 10))
592+
require.NoError(t, mh.saveToOrder())
593+
594+
rg.setBegin(begin).incrBegin(2)
595+
mh.addRecord(100, rg.generate(schemas, 1))
596+
require.NoError(t, mh.saveToOrder())
597+
598+
rg.setBegin(begin).incrBegin(5)
599+
mh.addRecord(100, rg.generate(schemas, 1))
600+
require.NoError(t, mh.saveToUnordered())
601+
602+
assert.NoError(t, mh.mergeAndCompact(true))
603+
assert.NoError(t, mh.store.FullCompact(1))
604+
mh.store.Wait()
605+
for _, rec := range mh.readMergedRecord() {
606+
record.CheckTimes(rec.Times())
607+
}
608+
}
609+
579610
func TestMergeTool_recentFile(t *testing.T) {
580611
var begin int64 = 1e12
581612
defer beforeTest(t, 0)()

0 commit comments

Comments
 (0)