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

    https://github.com/apache/carbondata/pull/2901#discussion_r230818772
  
    --- Diff: 
hadoop/src/main/java/org/apache/carbondata/hadoop/util/CarbonVectorizedRecordReader.java
 ---
    @@ -171,13 +171,20 @@ public Object getCurrentValue() throws IOException, 
InterruptedException {
         rowCount += 1;
         Object[] row = new Object[carbonColumnarBatch.columnVectors.length];
         for (int i = 0; i < carbonColumnarBatch.columnVectors.length; i ++) {
    +      Object data = carbonColumnarBatch.columnVectors[i].getData(batchIdx 
- 1);
           if (carbonColumnarBatch.columnVectors[i].getType() == 
DataTypes.STRING
               || carbonColumnarBatch.columnVectors[i].getType() == 
DataTypes.VARCHAR) {
    -        byte[] data = (byte[]) 
carbonColumnarBatch.columnVectors[i].getData(batchIdx - 1);
    -        row[i] = ByteUtil.toString(data, 0, data.length);
    +        if (data == null) {
    +          row[i] = null;
    +        } else {
    +          row[i] = ByteUtil.toString((byte[]) data, 0, (((byte[]) 
data).length));
    +        }
           } else if (carbonColumnarBatch.columnVectors[i].getType() == 
DataTypes.BOOLEAN) {
    -        byte data = (byte) 
carbonColumnarBatch.columnVectors[i].getData(batchIdx - 1);
    -        row[i] = ByteUtil.toBoolean(data);
    +        if (data == null) {
    +          row[i] = null;
    +        } else {
    +          row[i] = ByteUtil.toBoolean((byte) data);
    +        }
    --- End diff --
    
    For other dataTypes is the same handling of null required?...If required 
then you can move the if check for `data == null` before first if check and set 
the row to null if data is null and continue


---

Reply via email to