Avoid NullPointerException when FlatList contains null elements
Project: http://git-wip-us.apache.org/repos/asf/calcite/repo Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/ef822607 Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/ef822607 Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/ef822607 Branch: refs/heads/master Commit: ef822607649ad157568f868086923b2c62a316dc Parents: 3183f2c Author: Vladimir Sitnikov <[email protected]> Authored: Fri Sep 21 18:47:29 2018 +0300 Committer: Vladimir Sitnikov <[email protected]> Committed: Fri Sep 21 18:48:01 2018 +0300 ---------------------------------------------------------------------- .../org/apache/calcite/runtime/FlatLists.java | 84 ++++++++++---------- .../java/org/apache/calcite/util/UtilTest.java | 6 ++ 2 files changed, 48 insertions(+), 42 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/calcite/blob/ef822607/core/src/main/java/org/apache/calcite/runtime/FlatLists.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/calcite/runtime/FlatLists.java b/core/src/main/java/org/apache/calcite/runtime/FlatLists.java index 2dce103..d491e14 100644 --- a/core/src/main/java/org/apache/calcite/runtime/FlatLists.java +++ b/core/src/main/java/org/apache/calcite/runtime/FlatLists.java @@ -350,7 +350,7 @@ public class FlatLists { return 0; } } else { - if (t0.equals(o)) { + if (o.equals(t0)) { return 0; } } @@ -363,7 +363,7 @@ public class FlatLists { return 0; } } else { - if (t0.equals(o)) { + if (o.equals(t0)) { return 0; } } @@ -473,10 +473,10 @@ public class FlatLists { return 1; } } else { - if (t0.equals(o)) { + if (o.equals(t0)) { return 0; } - if (t1.equals(o)) { + if (o.equals(t1)) { return 1; } } @@ -492,10 +492,10 @@ public class FlatLists { return 0; } } else { - if (t1.equals(o)) { + if (o.equals(t1)) { return 1; } - if (t0.equals(o)) { + if (o.equals(t0)) { return 0; } } @@ -613,13 +613,13 @@ public class FlatLists { return 2; } } else { - if (t0.equals(o)) { + if (o.equals(t0)) { return 0; } - if (t1.equals(o)) { + if (o.equals(t1)) { return 1; } - if (t2.equals(o)) { + if (o.equals(t2)) { return 2; } } @@ -638,13 +638,13 @@ public class FlatLists { return 0; } } else { - if (t2.equals(o)) { + if (o.equals(t2)) { return 2; } - if (t1.equals(o)) { + if (o.equals(t1)) { return 1; } - if (t0.equals(o)) { + if (o.equals(t0)) { return 0; } } @@ -772,16 +772,16 @@ public class FlatLists { return 3; } } else { - if (t0.equals(o)) { + if (o.equals(t0)) { return 0; } - if (t1.equals(o)) { + if (o.equals(t1)) { return 1; } - if (t2.equals(o)) { + if (o.equals(t2)) { return 2; } - if (t3.equals(o)) { + if (o.equals(t3)) { return 3; } } @@ -803,16 +803,16 @@ public class FlatLists { return 0; } } else { - if (t3.equals(o)) { + if (o.equals(t3)) { return 3; } - if (t2.equals(o)) { + if (o.equals(t2)) { return 2; } - if (t1.equals(o)) { + if (o.equals(t1)) { return 1; } - if (t0.equals(o)) { + if (o.equals(t0)) { return 0; } } @@ -950,19 +950,19 @@ public class FlatLists { return 4; } } else { - if (t0.equals(o)) { + if (o.equals(t0)) { return 0; } - if (t1.equals(o)) { + if (o.equals(t1)) { return 1; } - if (t2.equals(o)) { + if (o.equals(t2)) { return 2; } - if (t3.equals(o)) { + if (o.equals(t3)) { return 3; } - if (t4.equals(o)) { + if (o.equals(t4)) { return 4; } } @@ -987,19 +987,19 @@ public class FlatLists { return 0; } } else { - if (t4.equals(o)) { + if (o.equals(t4)) { return 4; } - if (t3.equals(o)) { + if (o.equals(t3)) { return 3; } - if (t2.equals(o)) { + if (o.equals(t2)) { return 2; } - if (t1.equals(o)) { + if (o.equals(t1)) { return 1; } - if (t0.equals(o)) { + if (o.equals(t0)) { return 0; } } @@ -1148,22 +1148,22 @@ public class FlatLists { return 5; } } else { - if (t0.equals(o)) { + if (o.equals(t0)) { return 0; } - if (t1.equals(o)) { + if (o.equals(t1)) { return 1; } - if (t2.equals(o)) { + if (o.equals(t2)) { return 2; } - if (t3.equals(o)) { + if (o.equals(t3)) { return 3; } - if (t4.equals(o)) { + if (o.equals(t4)) { return 4; } - if (t5.equals(o)) { + if (o.equals(t5)) { return 5; } } @@ -1191,22 +1191,22 @@ public class FlatLists { return 0; } } else { - if (t5.equals(o)) { + if (o.equals(t5)) { return 5; } - if (t4.equals(o)) { + if (o.equals(t4)) { return 4; } - if (t3.equals(o)) { + if (o.equals(t3)) { return 3; } - if (t2.equals(o)) { + if (o.equals(t2)) { return 2; } - if (t1.equals(o)) { + if (o.equals(t1)) { return 1; } - if (t0.equals(o)) { + if (o.equals(t0)) { return 0; } } http://git-wip-us.apache.org/repos/asf/calcite/blob/ef822607/core/src/test/java/org/apache/calcite/util/UtilTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/calcite/util/UtilTest.java b/core/src/test/java/org/apache/calcite/util/UtilTest.java index 72a8554..f7a71ca 100644 --- a/core/src/test/java/org/apache/calcite/util/UtilTest.java +++ b/core/src/test/java/org/apache/calcite/util/UtilTest.java @@ -1113,6 +1113,12 @@ public class UtilTest { final List<String> anb0 = Arrays.asList("A", null, "B"); assertEquals(anb, anb0); assertEquals(anb.hashCode(), anb0.hashCode()); + assertEquals(anb + ".indexOf(null)", 1, anb.indexOf(null)); + assertEquals(anb + ".lastIndexOf(null)", 1, anb.lastIndexOf(null)); + assertEquals(anb + ".indexOf(B)", 2, anb.indexOf("B")); + assertEquals(anb + ".lastIndexOf(A)", 0, anb.lastIndexOf("A")); + assertEquals(anb + ".indexOf(Z)", -1, anb.indexOf("Z")); + assertEquals(anb + ".lastIndexOf(Z)", -1, anb.lastIndexOf("Z")); // Comparisons assertThat(emp, instanceOf(Comparable.class));
