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.
---