ColumnVector is expected to be reused during the entire data loading process, to avoid allocating memory again and again.
ColumnVector is meant to maximize CPU efficiency but not to minimize storage footprint. Implementations should prefer computing efficiency over storage efficiency when design the format. Since it is expected to reuse the ColumnVector instance while loading data, the storage footprint is negligible.
ColumnVector takes the following to be created:
ColumnVector is an abstract class and cannot be created directly. It is created indirectly for the concrete ColumnVectors.