Ruben Q L created CALCITE-3828: ---------------------------------- Summary: MergeJoin throws NPE in case of null keys Key: CALCITE-3828 URL: https://issues.apache.org/jira/browse/CALCITE-3828 Project: Calcite Issue Type: Bug Components: core Affects Versions: 1.21.0 Reporter: Ruben Q L Assignee: Ruben Q L
Problem can be reproduced with the following test (to be added to EnumerablesTest.java): {code} @Test public void testMergeJoinWithNullKeys() { assertThat( EnumerableDefaults.mergeJoin( Linq4j.asEnumerable( Arrays.asList( new Emp(30, "Fred"), new Emp(20, "Sebastian"), new Emp(30, "Theodore"), new Emp(20, "Theodore"), new Emp(40, null), new Emp(30, null))), Linq4j.asEnumerable( Arrays.asList( new Dept(15, "Marketing"), new Dept(20, "Sales"), new Dept(30, "Theodore"), new Dept(40, null))), e -> e.name, d -> d.name, (v0, v1) -> v0 + ", " + v1, false, false).toList().toString(), equalTo("[Emp(30, Theodore), Dept(30, Theodore)," + " Emp(20, Theodore), Dept(30, Theodore)]")); } {code} which throws a NPE inside EnumerableDefaults#MergeJoinEnumerator when trying to compare null keys: {code} java.lang.NullPointerException at java.lang.String.compareTo(String.java:1155) at java.lang.String.compareTo(String.java:111) at org.apache.calcite.linq4j.EnumerableDefaults$MergeJoinEnumerator.advance(EnumerableDefaults.java:3861) {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)