Github user paul-rogers commented on a diff in the pull request: https://github.com/apache/drill/pull/984#discussion_r145556819 --- Diff: exec/vector/src/main/codegen/templates/FixedValueVectors.java --- @@ -908,6 +908,15 @@ public void generateTestData(int count) { } <#else> <#-- type.width <= 8 --> + @Override + public void add(Object value) { + int index = accessor.getValueCount(); + int valueCount = index + 1; + setValueCount(valueCount); + + set(index, (${type.javaType}) value); --- End diff -- I don't think this will work as you hope it will -- for obscure reasons that we've all learned the hard way... * The accessor does not keep an ongoing count of values. Rather, the value count comes from the writer index which is set only at the end of a write. * This method sets the value count, but doing so is, in general, expensive. * Vectors in a batch must be kept in sync. This adds a value to one vector, but does not coordinate across a set of vectors. * Not all values can be set by casting. Works for some numeric values, but does not handle, say, `add(10)` when the item is a byte or a short because of the need for a two-step cast: `(byte)(int) value`. * Does not handle conversions for date or decimal. Yes, this is all a colossal pain in the neck. But, it is the reason that the `RowSet` classes were created. We can talk in person about how to move this idea forward effectively.
---