hudi-flink-datasource/hudi-flink1.14.x/src/main/java/org/apache/hudi/table/format/cow/vector/reader/AbstractColumnReader.java [165:213]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  public final void readToVector(int readNumber, V vector) throws IOException {
    int rowId = 0;
    WritableIntVector dictionaryIds = null;
    if (dictionary != null) {
      dictionaryIds = vector.reserveDictionaryIds(readNumber);
    }
    while (readNumber > 0) {
      // Compute the number of values we want to read in this page.
      int leftInPage = (int) (endOfPageValueCount - valuesRead);
      if (leftInPage == 0) {
        DataPage page = pageReader.readPage();
        if (page instanceof DataPageV1) {
          readPageV1((DataPageV1) page);
        } else if (page instanceof DataPageV2) {
          readPageV2((DataPageV2) page);
        } else {
          throw new RuntimeException("Unsupported page type: " + page.getClass());
        }
        leftInPage = (int) (endOfPageValueCount - valuesRead);
      }
      int num = Math.min(readNumber, leftInPage);
      if (isCurrentPageDictionaryEncoded) {
        // Read and decode dictionary ids.
        runLenDecoder.readDictionaryIds(
            num, dictionaryIds, vector, rowId, maxDefLevel, this.dictionaryIdsDecoder);

        if (vector.hasDictionary() || (rowId == 0 && supportLazyDecode())) {
          // Column vector supports lazy decoding of dictionary values so just set the dictionary.
          // We can't do this if rowId != 0 AND the column doesn't have a dictionary (i.e. some
          // non-dictionary encoded values have already been added).
          vector.setDictionary(new ParquetDictionary(dictionary));
        } else {
          readBatchFromDictionaryIds(rowId, num, vector, dictionaryIds);
        }
      } else {
        if (vector.hasDictionary() && rowId != 0) {
          // This batch already has dictionary encoded values but this new page is not. The batch
          // does not support a mix of dictionary and not so we will decode the dictionary.
          readBatchFromDictionaryIds(0, rowId, vector, vector.getDictionaryIds());
        }
        vector.setDictionary(null);
        readBatch(rowId, num, vector);
      }

      valuesRead += num;
      rowId += num;
      readNumber -= num;
    }
  }
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



hudi-flink-datasource/hudi-flink1.17.x/src/main/java/org/apache/hudi/table/format/cow/vector/reader/AbstractColumnReader.java [165:213]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  public final void readToVector(int readNumber, V vector) throws IOException {
    int rowId = 0;
    WritableIntVector dictionaryIds = null;
    if (dictionary != null) {
      dictionaryIds = vector.reserveDictionaryIds(readNumber);
    }
    while (readNumber > 0) {
      // Compute the number of values we want to read in this page.
      int leftInPage = (int) (endOfPageValueCount - valuesRead);
      if (leftInPage == 0) {
        DataPage page = pageReader.readPage();
        if (page instanceof DataPageV1) {
          readPageV1((DataPageV1) page);
        } else if (page instanceof DataPageV2) {
          readPageV2((DataPageV2) page);
        } else {
          throw new RuntimeException("Unsupported page type: " + page.getClass());
        }
        leftInPage = (int) (endOfPageValueCount - valuesRead);
      }
      int num = Math.min(readNumber, leftInPage);
      if (isCurrentPageDictionaryEncoded) {
        // Read and decode dictionary ids.
        runLenDecoder.readDictionaryIds(
            num, dictionaryIds, vector, rowId, maxDefLevel, this.dictionaryIdsDecoder);

        if (vector.hasDictionary() || (rowId == 0 && supportLazyDecode())) {
          // Column vector supports lazy decoding of dictionary values so just set the dictionary.
          // We can't do this if rowId != 0 AND the column doesn't have a dictionary (i.e. some
          // non-dictionary encoded values have already been added).
          vector.setDictionary(new ParquetDictionary(dictionary));
        } else {
          readBatchFromDictionaryIds(rowId, num, vector, dictionaryIds);
        }
      } else {
        if (vector.hasDictionary() && rowId != 0) {
          // This batch already has dictionary encoded values but this new page is not. The batch
          // does not support a mix of dictionary and not so we will decode the dictionary.
          readBatchFromDictionaryIds(0, rowId, vector, vector.getDictionaryIds());
        }
        vector.setDictionary(null);
        readBatch(rowId, num, vector);
      }

      valuesRead += num;
      rowId += num;
      readNumber -= num;
    }
  }
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



hudi-flink-datasource/hudi-flink1.16.x/src/main/java/org/apache/hudi/table/format/cow/vector/reader/AbstractColumnReader.java [165:213]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  public final void readToVector(int readNumber, V vector) throws IOException {
    int rowId = 0;
    WritableIntVector dictionaryIds = null;
    if (dictionary != null) {
      dictionaryIds = vector.reserveDictionaryIds(readNumber);
    }
    while (readNumber > 0) {
      // Compute the number of values we want to read in this page.
      int leftInPage = (int) (endOfPageValueCount - valuesRead);
      if (leftInPage == 0) {
        DataPage page = pageReader.readPage();
        if (page instanceof DataPageV1) {
          readPageV1((DataPageV1) page);
        } else if (page instanceof DataPageV2) {
          readPageV2((DataPageV2) page);
        } else {
          throw new RuntimeException("Unsupported page type: " + page.getClass());
        }
        leftInPage = (int) (endOfPageValueCount - valuesRead);
      }
      int num = Math.min(readNumber, leftInPage);
      if (isCurrentPageDictionaryEncoded) {
        // Read and decode dictionary ids.
        runLenDecoder.readDictionaryIds(
            num, dictionaryIds, vector, rowId, maxDefLevel, this.dictionaryIdsDecoder);

        if (vector.hasDictionary() || (rowId == 0 && supportLazyDecode())) {
          // Column vector supports lazy decoding of dictionary values so just set the dictionary.
          // We can't do this if rowId != 0 AND the column doesn't have a dictionary (i.e. some
          // non-dictionary encoded values have already been added).
          vector.setDictionary(new ParquetDictionary(dictionary));
        } else {
          readBatchFromDictionaryIds(rowId, num, vector, dictionaryIds);
        }
      } else {
        if (vector.hasDictionary() && rowId != 0) {
          // This batch already has dictionary encoded values but this new page is not. The batch
          // does not support a mix of dictionary and not so we will decode the dictionary.
          readBatchFromDictionaryIds(0, rowId, vector, vector.getDictionaryIds());
        }
        vector.setDictionary(null);
        readBatch(rowId, num, vector);
      }

      valuesRead += num;
      rowId += num;
      readNumber -= num;
    }
  }
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



hudi-flink-datasource/hudi-flink1.18.x/src/main/java/org/apache/hudi/table/format/cow/vector/reader/AbstractColumnReader.java [165:213]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  public final void readToVector(int readNumber, V vector) throws IOException {
    int rowId = 0;
    WritableIntVector dictionaryIds = null;
    if (dictionary != null) {
      dictionaryIds = vector.reserveDictionaryIds(readNumber);
    }
    while (readNumber > 0) {
      // Compute the number of values we want to read in this page.
      int leftInPage = (int) (endOfPageValueCount - valuesRead);
      if (leftInPage == 0) {
        DataPage page = pageReader.readPage();
        if (page instanceof DataPageV1) {
          readPageV1((DataPageV1) page);
        } else if (page instanceof DataPageV2) {
          readPageV2((DataPageV2) page);
        } else {
          throw new RuntimeException("Unsupported page type: " + page.getClass());
        }
        leftInPage = (int) (endOfPageValueCount - valuesRead);
      }
      int num = Math.min(readNumber, leftInPage);
      if (isCurrentPageDictionaryEncoded) {
        // Read and decode dictionary ids.
        runLenDecoder.readDictionaryIds(
            num, dictionaryIds, vector, rowId, maxDefLevel, this.dictionaryIdsDecoder);

        if (vector.hasDictionary() || (rowId == 0 && supportLazyDecode())) {
          // Column vector supports lazy decoding of dictionary values so just set the dictionary.
          // We can't do this if rowId != 0 AND the column doesn't have a dictionary (i.e. some
          // non-dictionary encoded values have already been added).
          vector.setDictionary(new ParquetDictionary(dictionary));
        } else {
          readBatchFromDictionaryIds(rowId, num, vector, dictionaryIds);
        }
      } else {
        if (vector.hasDictionary() && rowId != 0) {
          // This batch already has dictionary encoded values but this new page is not. The batch
          // does not support a mix of dictionary and not so we will decode the dictionary.
          readBatchFromDictionaryIds(0, rowId, vector, vector.getDictionaryIds());
        }
        vector.setDictionary(null);
        readBatch(rowId, num, vector);
      }

      valuesRead += num;
      rowId += num;
      readNumber -= num;
    }
  }
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



hudi-flink-datasource/hudi-flink1.15.x/src/main/java/org/apache/hudi/table/format/cow/vector/reader/AbstractColumnReader.java [165:213]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  public final void readToVector(int readNumber, V vector) throws IOException {
    int rowId = 0;
    WritableIntVector dictionaryIds = null;
    if (dictionary != null) {
      dictionaryIds = vector.reserveDictionaryIds(readNumber);
    }
    while (readNumber > 0) {
      // Compute the number of values we want to read in this page.
      int leftInPage = (int) (endOfPageValueCount - valuesRead);
      if (leftInPage == 0) {
        DataPage page = pageReader.readPage();
        if (page instanceof DataPageV1) {
          readPageV1((DataPageV1) page);
        } else if (page instanceof DataPageV2) {
          readPageV2((DataPageV2) page);
        } else {
          throw new RuntimeException("Unsupported page type: " + page.getClass());
        }
        leftInPage = (int) (endOfPageValueCount - valuesRead);
      }
      int num = Math.min(readNumber, leftInPage);
      if (isCurrentPageDictionaryEncoded) {
        // Read and decode dictionary ids.
        runLenDecoder.readDictionaryIds(
            num, dictionaryIds, vector, rowId, maxDefLevel, this.dictionaryIdsDecoder);

        if (vector.hasDictionary() || (rowId == 0 && supportLazyDecode())) {
          // Column vector supports lazy decoding of dictionary values so just set the dictionary.
          // We can't do this if rowId != 0 AND the column doesn't have a dictionary (i.e. some
          // non-dictionary encoded values have already been added).
          vector.setDictionary(new ParquetDictionary(dictionary));
        } else {
          readBatchFromDictionaryIds(rowId, num, vector, dictionaryIds);
        }
      } else {
        if (vector.hasDictionary() && rowId != 0) {
          // This batch already has dictionary encoded values but this new page is not. The batch
          // does not support a mix of dictionary and not so we will decode the dictionary.
          readBatchFromDictionaryIds(0, rowId, vector, vector.getDictionaryIds());
        }
        vector.setDictionary(null);
        readBatch(rowId, num, vector);
      }

      valuesRead += num;
      rowId += num;
      readNumber -= num;
    }
  }
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



