public void addValue(int rowId, int column, SpecializedGetters data,
ColumnVector output) {
if (data.isNullAt(column)) {
output.noNulls = false;
output.isNull[rowId] = true;
} else {
output.isNull[rowId] = false;
MapData map = data.getMap(column);
ArrayData key = map.keyArray();
ArrayData value = map.valueArray();
MapColumnVector cv = (MapColumnVector) output;
cv.lengths[rowId] = value.numElements();
cv.offsets[rowId] = cv.childCount;
cv.childCount += cv.lengths[rowId];
cv.keys.ensureSize(cv.childCount, true);
cv.values.ensureSize(cv.childCount, true);
for(int e=0; e < cv.lengths[rowId]; ++e) {
int pos = (int)(e + cv.offsets[rowId]);
keyConverter.addValue(pos, e, key, cv.keys);
valueConverter.addValue(pos, e, value, cv.values);
}
}
}
}