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