This is an automated email from the ASF dual-hosted git repository.

kunalkapoor pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/carbondata.git


The following commit(s) were added to refs/heads/master by this push:
     new 98bd41e  [HOTFIX] Fix compatibility issue with page size
98bd41e is described below

commit 98bd41ef694300c8837019537a0ad4eecd7819d7
Author: ajantha-bhat <[email protected]>
AuthorDate: Thu Jun 6 12:58:28 2019 +0530

    [HOTFIX] Fix compatibility issue with page size
    
    Problem: Array Out of bound exception when old store is read from latest 
code.
    Cause: #3239 partially fix the problem, After this change,
     For old store, length is written as zero. so in BlockletInfo,
     numberOfRowsPerPage will be array of zero elements. Hence the 
ArrayOutOfBound exception.
    Solution: Fill the numberOfRowsPerPage only when length is non-zero,
     when length is zero, it will be filled from setNumberOfRowsPerPage in
     BlockletDataRefNode as numberOfRowsPerPage is null.
    
    This closes #3260
---
 .../apache/carbondata/core/metadata/blocklet/BlockletInfo.java | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git 
a/core/src/main/java/org/apache/carbondata/core/metadata/blocklet/BlockletInfo.java
 
b/core/src/main/java/org/apache/carbondata/core/metadata/blocklet/BlockletInfo.java
index 0d5e6ac..24745e8 100644
--- 
a/core/src/main/java/org/apache/carbondata/core/metadata/blocklet/BlockletInfo.java
+++ 
b/core/src/main/java/org/apache/carbondata/core/metadata/blocklet/BlockletInfo.java
@@ -310,9 +310,13 @@ public class BlockletInfo implements Serializable, 
Writable {
     if (isSortedPresent) {
       this.isSorted = input.readBoolean();
     }
-    numberOfRowsPerPage = new int[input.readShort()];
-    for (int i = 0; i < numberOfRowsPerPage.length; i++) {
-      numberOfRowsPerPage[i] = input.readInt();
+    short pageCount = input.readShort();
+    if (pageCount != 0) {
+      // should set only for new store, old store will be set via 
setNumberOfRowsPerPage
+      numberOfRowsPerPage = new int[pageCount];
+      for (int i = 0; i < numberOfRowsPerPage.length; i++) {
+        numberOfRowsPerPage[i] = input.readInt();
+      }
     }
   }
 

Reply via email to