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

    https://github.com/apache/carbondata/pull/2529#discussion_r203754026
  
    --- Diff: 
core/src/main/java/org/apache/carbondata/core/datastore/page/UnsafeFixLengthColumnPage.java
 ---
    @@ -355,16 +361,33 @@ public BigDecimal getDecimal(int rowId) {
     
       @Override
       public byte[][] getByteArrayPage() {
    -    throw new UnsupportedOperationException("invalid data type: " + 
dataType);
    +    byte[][] data = new byte[getEndLoop()][eachRowSize];
    +    long offset = baseOffset;
    +    for (int i = 0; i < data.length; i++) {
    +      //copy the row from memory block based on offset
    +      // offset position will be index * each column value length
    +      CarbonUnsafe.getUnsafe().copyMemory(memoryBlock.getBaseObject(), 
offset, data[i],
    +          CarbonUnsafe.BYTE_ARRAY_OFFSET, eachRowSize);
    +      offset += eachRowSize;
    +    }
    +    return data;
       }
     
       @Override
       public byte[] getLVFlattenedBytePage() {
         throw new UnsupportedOperationException("invalid data type: " + 
dataType);
       }
    -  @Override
    -  public byte[] getComplexChildrenLVFlattenedBytePage() throws IOException 
{
    -    throw new UnsupportedOperationException("invalid data type: " + 
dataType);
    +
    +  @Override public byte[] getComplexChildrenLVFlattenedBytePage() {
    +    byte[] data = new byte[totalLength];
    +    int numberOfRows = getEndLoop();
    +    int destOffset = 0;
    +    for (int i = 0; i < numberOfRows; i++) {
    --- End diff --
    
    Directly get single byte array


---

Reply via email to