Github user sachouche commented on a diff in the pull request: https://github.com/apache/drill/pull/1060#discussion_r161039122 --- Diff: exec/vector/src/main/codegen/templates/FixedValueVectors.java --- @@ -874,6 +880,46 @@ public void setSafe(int index, BigDecimal value) { set(index, value); } + /** + * Copies the bulk input into this value vector and extends its capacity if necessary. + * @param input bulk input + */ + public <T extends VLBulkEntry> void setSafe(VLBulkInput<T> input) { + setSafe(input, null); + } + + /** + * Copies the bulk input into this value vector and extends its capacity if necessary. The callback + * mechanism allows decoration as caller is invoked for each bulk entry. + * + * @param input bulk input + * @param callback a bulk input callback object (optional) + */ + public <T extends VLBulkEntry> void setSafe(VLBulkInput<T> input, VLBulkInput.BulkInputCallback<T> callback) { --- End diff -- This code is not Parquet specific. Instead, it can be triggered by any Reader which desires to load data in a bulk fashion. Vectors currently expose Mutator APIs for loading single values; I see no good reason which prevent us from passing bulk values instead of a single one at a time which prevent us from code optimization. Look at ByBuffer APIs they allow you to pass single byte values but also byte arrays.
---