Skip to content
This repository was archived by the owner on Jul 19, 2023. It is now read-only.

Commit fb34440

Browse files
committed
Fix bug when we iterate left iterator based on a higher right result
1 parent b59403d commit fb34440

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

pkg/phlaredb/query/iters.go

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -432,20 +432,30 @@ func (bj *BinaryJoinIterator) Next() bool {
432432
}
433433
resRight := bj.right.At()
434434

435-
if cmp := CompareRowNumbers(bj.definitionLevel, resLeft.RowNumber, resRight.RowNumber); cmp == 0 {
436-
// we have a found an element
435+
makeResult := func() {
437436
bj.res = iteratorResultPoolGet()
438437
bj.res.RowNumber = resLeft.RowNumber
439438
bj.res.Append(resLeft)
440439
bj.res.Append(resRight)
441-
// columnIteratorResultPoolPut(resLeft)
442-
// columnIteratorResultPoolPut(resRight)
440+
iteratorResultPoolPut(resLeft)
441+
iteratorResultPoolPut(resRight)
442+
}
443+
444+
if cmp := CompareRowNumbers(bj.definitionLevel, resLeft.RowNumber, resRight.RowNumber); cmp == 0 {
445+
// we have a found an element
446+
makeResult()
443447
return true
444448
} else if cmp < 0 {
445449
if !bj.left.Seek(RowNumberWithDefinitionLevel{resRight.RowNumber, bj.definitionLevel}) {
446450
bj.err = bj.left.Err()
447451
return false
448452
}
453+
resLeft = bj.left.At()
454+
455+
if cmp := CompareRowNumbers(bj.definitionLevel, resLeft.RowNumber, resRight.RowNumber); cmp == 0 {
456+
makeResult()
457+
return true
458+
}
449459

450460
} else {
451461
// the right value can't be smaller than the left one because we seeked beyond it

0 commit comments

Comments
 (0)