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

Reply via email to