Github user gvramana commented on a diff in the pull request:

    https://github.com/apache/carbondata/pull/2417#discussion_r199481217
  
    --- Diff: 
core/src/main/java/org/apache/carbondata/core/datastore/chunk/store/ColumnPageWrapper.java
 ---
    @@ -77,14 +127,70 @@ public boolean isExplicitSorted() {
         return false;
       }
     
    -  @Override
    -  public int compareTo(int rowId, byte[] compareValue) {
    -    throw new UnsupportedOperationException("internal error");
    +  @Override public int compareTo(int rowId, byte[] compareValue) {
    +    throw new UnsupportedOperationException(
    +        "internal error: should be called for only dictionary columns");
       }
     
       @Override
       public void freeMemory() {
     
       }
     
    +  private void fillData(int[] rowMapping, ColumnVectorInfo 
columnVectorInfo,
    +      CarbonColumnVector vector) {
    +    int offsetRowId = columnVectorInfo.offset;
    +    int vectorOffset = columnVectorInfo.vectorOffset;
    +    int maxRowId = offsetRowId + columnVectorInfo.size;
    +    BitSet nullBitSet = columnPage.getNullBits();
    +    TableSpec.ColumnSpec columnSpec = columnPage.getColumnSpec();
    +    if (columnSpec.getColumnType() == PLAIN_VALUE) {
    +      for (int rowId = offsetRowId; rowId < maxRowId; rowId++) {
    +        int currentRowId = (rowMapping == null) ? rowId : 
rowMapping[rowId];
    +        if (nullBitSet.get(currentRowId)) {
    +          // to handle the null values
    +          vector.putNull(vectorOffset++);
    +        } else {
    +          if (columnSpec.getSchemaDataType() == DataTypes.STRING) {
    +            byte[] data = columnPage.getBytes(currentRowId);
    +            if (ByteUtil.UnsafeComparer.INSTANCE
    +                .equals(CarbonCommonConstants.MEMBER_DEFAULT_VAL_ARRAY, 
data)) {
    +              vector.putNull(vectorOffset++);
    +            } else {
    +              vector.putBytes(vectorOffset++, 0, data.length, data);
    +            }
    +          } else if (columnSpec.getSchemaDataType() == DataTypes.BOOLEAN) {
    +            boolean data = columnPage.getBoolean(currentRowId);
    +            vector.putBoolean(vectorOffset++, data);
    +          } else if (columnSpec.getSchemaDataType() == DataTypes.SHORT) {
    +            short data = columnPage.getShort(currentRowId);
    +            vector.putShort(vectorOffset++, data);
    --- End diff --
    
    Use Switch instead of ifelse


---

Reply via email to