You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@carbondata.apache.org by ja...@apache.org on 2017/10/10 03:08:00 UTC

[13/50] [abbrv] carbondata git commit: [CARBONDATA-1278] Data Mismatch issue when dictionary column filter values doesn't exists in dictionary

[CARBONDATA-1278] Data Mismatch issue when dictionary column filter values doesn't exists in dictionary

Root cause: when filter value is not present in dictionary, end key for that column is updated with 0,and hence btree jump is not selecting all the leaf node.
Fix:
To handle this issue end key should be updated with Integer max value, so that it can go till last leafnode of btree

This closes #1383


Project: http://git-wip-us.apache.org/repos/asf/carbondata/repo
Commit: http://git-wip-us.apache.org/repos/asf/carbondata/commit/d5dd78af
Tree: http://git-wip-us.apache.org/repos/asf/carbondata/tree/d5dd78af
Diff: http://git-wip-us.apache.org/repos/asf/carbondata/diff/d5dd78af

Branch: refs/heads/streaming_ingest
Commit: d5dd78afd237f10593c4403d9bf1d3bc482d3636
Parents: 6627cac
Author: kumarvishal <ku...@gmail.com>
Authored: Mon Sep 25 18:15:20 2017 +0530
Committer: Ravindra Pesala <ra...@gmail.com>
Committed: Wed Sep 27 14:12:00 2017 +0530

----------------------------------------------------------------------
 .../apache/carbondata/core/scan/filter/FilterUtil.java  | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/carbondata/blob/d5dd78af/core/src/main/java/org/apache/carbondata/core/scan/filter/FilterUtil.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/scan/filter/FilterUtil.java b/core/src/main/java/org/apache/carbondata/core/scan/filter/FilterUtil.java
index 497ca8c..e8488f9 100644
--- a/core/src/main/java/org/apache/carbondata/core/scan/filter/FilterUtil.java
+++ b/core/src/main/java/org/apache/carbondata/core/scan/filter/FilterUtil.java
@@ -1066,12 +1066,16 @@ public final class FilterUtil {
         continue;
       }
       int keyOrdinalOfDimensionFromCurrentBlock = dimensionFromCurrentBlock.getKeyOrdinal();
+      int endFilterValue = 0;
       for (ColumnFilterInfo info : values) {
         if (keyOrdinalOfDimensionFromCurrentBlock < endKey.length) {
-          if (endKey[keyOrdinalOfDimensionFromCurrentBlock] > info.getFilterList()
-              .get(info.getFilterList().size() - 1)) {
-            endKey[keyOrdinalOfDimensionFromCurrentBlock] =
-                info.getFilterList().get(info.getFilterList().size() - 1);
+          endFilterValue = info.getFilterList().get(info.getFilterList().size() - 1);
+          if (endFilterValue == 0) {
+            endFilterValue =
+                segmentProperties.getDimColumnsCardinality()[keyOrdinalOfDimensionFromCurrentBlock];
+          }
+          if (endKey[keyOrdinalOfDimensionFromCurrentBlock] > endFilterValue) {
+            endKey[keyOrdinalOfDimensionFromCurrentBlock] = endFilterValue;
           }
         }
       }