public boolean hasMatchedRightValueToProbeLeft() {
    int tmpBlockIdx = rightBlockListIdx;
    int tmpIdx = rightIndex;
    boolean hasMatched = false;
    long matchedTime = Long.MIN_VALUE;
    while (equalsIgnoreAsof(
            leftBlock,
            leftJoinKeyPositions,
            leftIndex,
            rightBlockList.get(tmpBlockIdx),
            rightJoinKeyPositions,
            tmpIdx)
        && asofComparator
            .lessThan(
                leftBlock,
                leftAsofJoinKeyIndex,
                leftIndex,
                rightBlockList.get(rightBlockListIdx),
                rightAsofJoinKeyIndex,
                rightIndex)
            .orElse(false)) {
      long currentTime =
          rightBlockList.get(tmpBlockIdx).getColumn(rightAsofJoinKeyIndex).getLong(tmpIdx);
      if (matchedTime == Long.MIN_VALUE) {
        matchedTime = currentTime;
      } else if (currentTime != matchedTime) {
        break;
      }

      hasMatched = true;
      appendValueToResultWhenMatches(tmpBlockIdx, tmpIdx);

      tmpIdx++;
      if (tmpIdx >= rightBlockList.get(tmpBlockIdx).getPositionCount()) {
        tmpIdx = 0;
        tmpBlockIdx++;
      }

      if (tmpBlockIdx >= rightBlockList.size()) {
        break;
      }
    }
    return hasMatched;
  }
Examine if stop this round and rebuild rightBlockLists.

@return true if rightBlockListIdx more than zero.
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/AbstractAsofMergeSortJoinOperator.java