Github user manishgupta88 commented on a diff in the pull request: https://github.com/apache/carbondata/pull/2902#discussion_r231016130 --- Diff: core/src/main/java/org/apache/carbondata/core/datastore/page/encoding/compress/DirectCompressCodec.java --- @@ -257,7 +265,13 @@ private void fillVector(ColumnPage columnPage, CarbonColumnVector vector, } else if (pageDataType == DataTypes.SHORT) { short[] shortData = columnPage.getShortPage(); if (vectorDataType == DataTypes.SHORT) { - vector.putShorts(0, pageSize, shortData, 0); + if (isUnderlyingVectorPresent) { + for (int i = 0; i < pageSize; i++) { + vector.putShort(i, shortData[i]); + } + } else { + vector.putShorts(0, pageSize, shortData, 0); --- End diff -- I think using `putShorts/putFloats` is common and unavoidable. In future also any new encoding class can make use of these method and then again the same problem can occur. Is it feasible to modify the vector classes implementation methods itself just like an example below `public void putShorts(int rowId, int count, short[] src, int srcIndex) { for (int i = srcIndex; i < count; i++) { putShort(rowId++, src[i]); } }` This way it will be better
---