mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-08-28 10:54:59 +00:00
intersectRunRun to use runAppendInterval
this avoid situations where two runs which are adjacent don't get collapsed to a single run
This commit is contained in:
parent
97346baa94
commit
8ec8fc556c
2 changed files with 5 additions and 4 deletions
|
|
@ -1684,19 +1684,20 @@ func intersectRunRun(a, b *container) *container {
|
|||
j++
|
||||
} else if va.last > vb.last && va.start >= vb.start {
|
||||
// |--vb-|-|-va--|
|
||||
output.runs = append(output.runs, interval32{start: va.start, last: vb.last})
|
||||
output.runAppendInterval(interval32{start: va.start, last: vb.last})
|
||||
j++
|
||||
} else if va.last > vb.last && va.start < vb.start {
|
||||
// |--va|--vb--|--|
|
||||
output.runs = append(output.runs, vb)
|
||||
output.runAppendInterval(vb)
|
||||
j++
|
||||
} else if va.last <= vb.last && va.start >= vb.start {
|
||||
// |--vb|--va--|--|
|
||||
output.runs = append(output.runs, va)
|
||||
output.runAppendInterval(va)
|
||||
i++
|
||||
} else if va.last <= vb.last && va.start < vb.start {
|
||||
// |--va-|-|-vb--|
|
||||
output.runs = append(output.runs, interval32{start: vb.start, last: va.last})
|
||||
output.runAppendInterval(interval32{start: vb.start, last: va.last})
|
||||
i++
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -413,7 +413,7 @@ func TestIntersectRunRun(t *testing.T) {
|
|||
{
|
||||
aruns: []interval32{{start: 1, last: 3}, {start: 5, last: 5}, {start: 7, last: 8}, {start: 9, last: 12}},
|
||||
bruns: []interval32{{start: 5, last: 10}},
|
||||
exp: []interval32{{start: 5, last: 5}, {start: 7, last: 8}, {start: 9, last: 10}},
|
||||
exp: []interval32{{start: 5, last: 5}, {start: 7, last: 10}},
|
||||
},
|
||||
}
|
||||
for i, test := range tests {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue