[CALCITE-4215] Handle nulls in RelMdCollation#enumerableJoin0
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdCollation.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdCollation.java
index 0be433b..8de0275 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdCollation.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdCollation.java
@@ -519,6 +519,9 @@
// (i) join type is INNER or LEFT;
// (ii) RelCollation always orders nulls last.
final ImmutableList<RelCollation> leftCollations = mq.collations(left);
+ if (leftCollations == null) {
+ return null;
+ }
switch (joinType) {
case SEMI:
case ANTI:
@@ -530,12 +533,12 @@
for (RelCollation collation : leftCollations) {
for (RelFieldCollation field : collation.getFieldCollations()) {
if (!(RelFieldCollation.NullDirection.LAST == field.nullDirection)) {
- return ImmutableList.of();
+ return null;
}
}
}
return leftCollations;
}
- return ImmutableList.of();
+ return null;
}
}