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
---