Github user kumarvishal09 commented on a diff in the pull request:
https://github.com/apache/carbondata/pull/2654#discussion_r214809720
--- Diff:
core/src/main/java/org/apache/carbondata/core/datastore/chunk/store/ColumnPageWrapper.java
---
@@ -58,26 +70,64 @@ public int fillSurrogateKey(int rowId, int chunkIndex,
int[] outputSurrogateKey)
@Override
public int fillVector(ColumnVectorInfo[] vectorInfo, int chunkIndex) {
- throw new UnsupportedOperationException("internal error");
+ ColumnVectorInfo columnVectorInfo = vectorInfo[chunkIndex];
+ CarbonColumnVector vector = columnVectorInfo.vector;
+ int offset = columnVectorInfo.offset;
+ int vectorOffset = columnVectorInfo.vectorOffset;
+ int len = offset + columnVectorInfo.size;
+ for (int i = offset; i < len; i++) {
+ fillRow(i, vector, vectorOffset++);
+ }
+ return chunkIndex + 1;
+ }
+
+ /**
+ * Fill the data to the vector
+ *
+ * @param rowId
+ * @param vector
+ * @param vectorRow
+ */
+ private void fillRow(int rowId, CarbonColumnVector vector, int
vectorRow) {
+ byte[] value = getChunkData(rowId);
+ int length = value.length;
+ DimensionDataVectorProcessor.putDataToVector(vector, value, vectorRow,
length);
}
@Override
public int fillVector(int[] filteredRowId, ColumnVectorInfo[]
vectorInfo, int chunkIndex) {
- throw new UnsupportedOperationException("internal error");
+ ColumnVectorInfo columnVectorInfo = vectorInfo[chunkIndex];
+ CarbonColumnVector vector = columnVectorInfo.vector;
+ int offset = columnVectorInfo.offset;
+ int vectorOffset = columnVectorInfo.vectorOffset;
+ int len = offset + columnVectorInfo.size;
+ for (int i = offset; i < len; i++) {
+ fillRow(filteredRowId[i], vector, vectorOffset++);
+ }
+ return chunkIndex + 1;
}
@Override public byte[] getChunkData(int rowId) {
+ int rowIdCopy = rowId;
--- End diff --
Can u add comment why we need to store actual rowid, and please change the
variable name
---