[CALCITE-6251] InnerEnumerator in EnumerableDefaults::correlateBatchJoin is not closed
diff --git a/linq4j/src/main/java/org/apache/calcite/linq4j/EnumerableDefaults.java b/linq4j/src/main/java/org/apache/calcite/linq4j/EnumerableDefaults.java
index 3d2c141..3481955 100644
--- a/linq4j/src/main/java/org/apache/calcite/linq4j/EnumerableDefaults.java
+++ b/linq4j/src/main/java/org/apache/calcite/linq4j/EnumerableDefaults.java
@@ -1717,6 +1717,8 @@
if (innerEnumerable == null) {
innerEnumerable = Linq4j.emptyEnumerable();
}
+ closeInner();
+ Enumerable<TInner> innerEnumerable = requireNonNull(this.innerEnumerable);
innerEnumerator = innerEnumerable.enumerator();
innerEnumHasNext = innerEnumerator.moveNext();
@@ -1799,11 +1801,16 @@
i = -1;
}
- @Override public void close() {
- outerEnumerator.close();
+ private void closeInner() {
if (innerEnumerator != null) {
innerEnumerator.close();
+ innerEnumerator = null;
}
+ }
+
+ @Override public void close() {
+ outerEnumerator.close();
+ closeInner();
outerValue = null;
innerValue = null;
}