private void appendRightWithEmptyLeft() {
    while (rightBlockListIdx < rightBlockList.size()) {

      // if `lastMatchedRightBlock` is not null, the value in `lastMatchedRightBlock` must not be
      // NULL,
      // if current right value is null, the right row with empty left will be appended in the join
      // result.
      if (lastMatchedRightBlock == null
          || !equalsTo(
              lastMatchedRightBlock,
              lastMatchedBlockPositions,
              0,
              rightBlockList.get(rightBlockListIdx),
              rightJoinKeyPositions,
              rightIndex)) {
        for (int i = 0; i < leftOutputSymbolIdx.length; i++) {
          ColumnBuilder columnBuilder = resultBuilder.getColumnBuilder(i);
          columnBuilder.appendNull();
        }

        appendRightBlockData(
            rightBlockList,
            rightBlockListIdx,
            rightIndex,
            leftOutputSymbolIdx,
            rightOutputSymbolIdx,
            resultBuilder);

        resultBuilder.declarePosition();
      }

      rightIndex++;
      if (rightIndex >= rightBlockList.get(rightBlockListIdx).getPositionCount()) {
        rightIndex = 0;
        rightBlockListIdx++;
      }
    }
  }
This method will be invoked only when `allRightLessThanLeft` or `leftFinished`.
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/MergeSortFullOuterJoinOperator.java