(iterNum int, d int, t RowNumber)
| 1376 | } |
| 1377 | |
| 1378 | func (j *LeftJoinIterator) seek(iterNum int, d int, t RowNumber) (err error) { |
| 1379 | d = min(d, j.defLevelsRequired[iterNum]) |
| 1380 | if EqualRowNumber(d, j.collectedThroughRequired[iterNum], t) { |
| 1381 | // Last collected value still matches. |
| 1382 | return nil |
| 1383 | } |
| 1384 | |
| 1385 | // Last collected value no longer matches. |
| 1386 | // Look at last peeked value. |
| 1387 | if j.peeksRequired[iterNum] == nil { |
| 1388 | // We don't have a peeked value to seek forward and return regardless of the outcome. |
| 1389 | j.peeksRequired[iterNum], err = j.required[iterNum].SeekTo(t, d) |
| 1390 | if err != nil { |
| 1391 | return |
| 1392 | } |
| 1393 | return nil |
| 1394 | } |
| 1395 | |
| 1396 | // We have a peeked value so see if it is valid. |
| 1397 | if CompareRowNumbers(d, j.peeksRequired[iterNum].RowNumber, t) >= 0 { |
| 1398 | // Last peeked value still matches or this iter is already higher. |
| 1399 | return nil |
| 1400 | } |
| 1401 | |
| 1402 | // Nothing matches so we have to seek forward. |
| 1403 | |
| 1404 | // Release peek if present |
| 1405 | // These results have been collected but never returned upstream, |
| 1406 | // so we know it is safe to release them. |
| 1407 | if j.peeksRequired[iterNum] != nil { |
| 1408 | j.peeksRequired[iterNum].Release() |
| 1409 | } |
| 1410 | |
| 1411 | j.peeksRequired[iterNum], err = j.required[iterNum].SeekTo(t, d) |
| 1412 | if err != nil { |
| 1413 | return err |
| 1414 | } |
| 1415 | |
| 1416 | return nil |
| 1417 | } |
| 1418 | |
| 1419 | func (j *LeftJoinIterator) seekAllRequired(t RowNumber, d int) (done bool, err error) { |
| 1420 | for iterNum, iter := range j.required { |
no test coverage detected