[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;
           }