You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2016/12/23 23:34:21 UTC
kylin git commit: KYLIN-2320 fix getSizeOfId() for empty
TrieDictionaryForest
Repository: kylin
Updated Branches:
refs/heads/KYLIN-2314 9ef51f593 -> ab65bd56e
KYLIN-2320 fix getSizeOfId() for empty TrieDictionaryForest
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/ab65bd56
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/ab65bd56
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/ab65bd56
Branch: refs/heads/KYLIN-2314
Commit: ab65bd56edd14fa5fb84b51826a7cd1f8307bb4f
Parents: 9ef51f5
Author: Yang Li <li...@apache.org>
Authored: Sat Dec 24 07:34:12 2016 +0800
Committer: Yang Li <li...@apache.org>
Committed: Sat Dec 24 07:34:12 2016 +0800
----------------------------------------------------------------------
.../apache/kylin/dict/TrieDictionaryForest.java | 4 +-
.../kylin/dict/TrieDictionaryForestTest.java | 41 ++++++++++++++++----
2 files changed, 35 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/ab65bd56/core-dictionary/src/main/java/org/apache/kylin/dict/TrieDictionaryForest.java
----------------------------------------------------------------------
diff --git a/core-dictionary/src/main/java/org/apache/kylin/dict/TrieDictionaryForest.java b/core-dictionary/src/main/java/org/apache/kylin/dict/TrieDictionaryForest.java
index 1015b11..e746348 100755
--- a/core-dictionary/src/main/java/org/apache/kylin/dict/TrieDictionaryForest.java
+++ b/core-dictionary/src/main/java/org/apache/kylin/dict/TrieDictionaryForest.java
@@ -87,7 +87,7 @@ public class TrieDictionaryForest<T> extends Dictionary<T> {
@Override
public int getSizeOfId() {
if (trees.isEmpty())
- return -1;
+ return 1;
int maxOffset = accuOffset.get(accuOffset.size() - 1);
TrieDictionary<T> lastTree = trees.get(trees.size() - 1);
int sizeOfId = BytesUtil.sizeForValue(baseId + maxOffset + lastTree.getMaxId() + 1);
@@ -96,7 +96,7 @@ public class TrieDictionaryForest<T> extends Dictionary<T> {
@Override
public int getSizeOfValue() {
- int maxValue = -1;
+ int maxValue = 0;
for (TrieDictionary<T> tree : trees)
maxValue = Math.max(maxValue, tree.getSizeOfValue());
return maxValue;
http://git-wip-us.apache.org/repos/asf/kylin/blob/ab65bd56/core-dictionary/src/test/java/org/apache/kylin/dict/TrieDictionaryForestTest.java
----------------------------------------------------------------------
diff --git a/core-dictionary/src/test/java/org/apache/kylin/dict/TrieDictionaryForestTest.java b/core-dictionary/src/test/java/org/apache/kylin/dict/TrieDictionaryForestTest.java
index 32a6ab5..238bb31 100755
--- a/core-dictionary/src/test/java/org/apache/kylin/dict/TrieDictionaryForestTest.java
+++ b/core-dictionary/src/test/java/org/apache/kylin/dict/TrieDictionaryForestTest.java
@@ -52,6 +52,14 @@ import org.junit.Test;
public class TrieDictionaryForestTest {
@Test
+ public void testEmptyDict() {
+ ArrayList<String> strs = new ArrayList<String>();
+ TrieDictionaryForestBuilder<String> builder = newDictBuilder(strs, 0);
+ TrieDictionaryForest<String> dict = builder.build();
+ assertSameBehaviorAsTrie(dict, strs, 0);
+ }
+
+ @Test
public void testBasicFound() {
ArrayList<String> strs = new ArrayList<String>();
strs.add("part");
@@ -67,11 +75,11 @@ public class TrieDictionaryForestTest {
dict.dump(System.out);
int expectId = baseId;
for (String s : strs) {
- System.out.println("value:" + s + " expect id:" + expectId);
assertEquals(expectId, dict.getIdFromValue(s));
expectId++;
}
- System.out.println("test ok");
+
+ assertSameBehaviorAsTrie(dict, strs, baseId);
}
@Test //one string one tree
@@ -95,11 +103,11 @@ public class TrieDictionaryForestTest {
assertEquals(strs.size(), dict.getTrees().size());
int expectId = baseId;
for (String s : strs) {
- System.out.println("value:" + s + " expect id:" + expectId);
assertEquals(expectId, dict.getIdFromValue(s));
expectId++;
}
- System.out.println("test ok");
+
+ assertSameBehaviorAsTrie(dict, strs, baseId);
}
@Test
@@ -115,11 +123,13 @@ public class TrieDictionaryForestTest {
dict.dump(System.out);
//null value query
int id = dict.getIdFromValue(null, 0);
- System.out.println(id);
+ assertEquals(255, id);
id = dict.getIdFromValue(null, 1);
- System.out.println(id);
+ assertEquals(255, id);
id = dict.getIdFromValue(null, -1);
- System.out.println(id);
+ assertEquals(255, id);
+
+ assertSameBehaviorAsTrie(dict, strs, 0);
}
@Test
@@ -940,7 +950,7 @@ public class TrieDictionaryForestTest {
b.addValue(strs.next());
return b;
}
-
+
private static class RandomStrings implements Iterable<String> {
final private int size;
@@ -1022,4 +1032,19 @@ public class TrieDictionaryForestTest {
return testData;
}
+ private void assertSameBehaviorAsTrie(TrieDictionaryForest<String> dict, ArrayList<String> strs, int baseId) {
+ TrieDictionaryBuilder<String> trieBuilder = new TrieDictionaryBuilder<>(new StringBytesConverter());
+ for (String s : strs) {
+ if (s != null)
+ trieBuilder.addValue(s);
+ }
+ TrieDictionary<String> trie = trieBuilder.build(baseId);
+
+ assertEquals(trie.getMaxId(), dict.getMaxId());
+ assertEquals(trie.getMinId(), dict.getMinId());
+ assertEquals(trie.getSize(), dict.getSize());
+ assertEquals(trie.getSizeOfId(), dict.getSizeOfId());
+ assertEquals(trie.getSizeOfValue(), dict.getSizeOfValue());
+ }
+
}