### Description

Only "search hits" based queries (no aggregations) provide a consistent view on the data when paginating through the result set. With point-in-time, it is possible to support transactional semantics for aggregation queries as well.

This issue is somewhat blocked by https://github.com/elastic/elasticsearch/issues/75528 because a PIT can not immediately be closed if the aggregation result set contains less than `fetch_size` records. This could cause some increased resource utilization due to open PITs. Especially if the client does not close the SQL cursor.
x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/execution/search/Querier.java
return new PivotCursor(
                    lastAfterKey,
                    q,
                    r.extractors(),
                    r.mask(),
                    r.remainingData(),
                    query.shouldIncludeFrozen(),
                    request.indices()
                );
            }
                : (q, r) -> new CompositeAggCursor(
                    q,
                    r.extractors(),
                    r.mask(),
                    r.remainingData,
                    query.shouldIncludeFrozen(),
                    request.indices()
                );
            CompositeAggCursor.handle(
                response,
                request.source(),
                makeRowSet,
                makeCursor,
                () -> client.search(request, this),
                listener,
                mightProducePartialPages
            );
        }
    }
    abstract static class BaseAggActionListener extends BaseActionListener {