### Elasticsearch Version

main @ 4de2ffa2bcf9eba0b8d09fb5f13c217598d025ee

### Installed Plugins

_No response_

### Java Version

openjdk version "17.0.8" 2023-07-18

### OS Version

Ubuntu 23.04

### Problem Description

- `MvExpandOperator` is [leaving behind unclosed input blocks](https://github.com/elastic/elasticsearch/blob/4de2ffa2bcf9eba0b8d09fb5f13c217598d025ee/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/operator/MvExpandOperatorTests.java#L137-L142). Should be closed by #100548
- `LimitOperator` is [leaving behind unclosed input blocks](https://github.com/elastic/elasticsearch/blob/4de2ffa2bcf9eba0b8d09fb5f13c217598d025ee/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/operator/LimitOperatorTests.java#L100-L105). #100465
- `FilterOperator` is [leaving behind unclosed input blocks](https://github.com/elastic/elasticsearch/blob/4de2ffa2bcf9eba0b8d09fb5f13c217598d025ee/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/operator/FilterOperatorTests.java#L128-L134). Should be closed by https://github.com/elastic/elasticsearch/pull/100465

### Steps to Reproduce

Remove the overridden `canLeak` implementation from `MvExpandOperatorTests`, `LimitOperatorTests` or `FilterOperatorTests` and run them.

### Logs (if relevant)

_No response_
x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/planner/LocalExecutionPlanner.java
} else if (node instanceof DissectExec dissect) {
            return planDissect(dissect, context);
        } else if (node instanceof GrokExec grok) {
            return planGrok(grok, context);
        } else if (node instanceof ProjectExec project) {
            return planProject(project, context);
        } else if (node instanceof FilterExec filter) {
            return planFilter(filter, context);
        } else if (node instanceof LimitExec limit) {
            return planLimit(limit, context);
        } else if (node instanceof MvExpandExec mvExpand) {
            return planMvExpand(mvExpand, context);
        }
        
        else if (node instanceof EsQueryExec esQuery) {
            return planEsQueryNode(esQuery, context);
        } else if (node instanceof EsStatsQueryExec statsQuery) {
            return planEsStats(statsQuery, context);
        } else if (node instanceof RowExec row) {
            return planRow(row, context);
        } else if (node instanceof LocalSourceExec localSource) {
            return planLocal(localSource, context);
        } else if (node instanceof ShowExec show) {
            return planShow(show);
        } else if (node instanceof ExchangeSourceExec exchangeSource) {
            return planExchangeSource(exchangeSource, context);
        }
        
        else if (node instanceof EnrichExec enrich) {
            return planEnrich(enrich, context);