### 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
List<Attribute> output,
            QueryContainer query,
            SearchSourceBuilder source
        ) {
            super(listener, client, cfg, output);
            this.query = query;
            this.mask = query.columnMask(output);
            this.multiValueFieldLeniency = cfg.multiValueFieldLeniency();
            this.source = source;
        }
        @Override
        protected void handleResponse(SearchResponse response, ActionListener<Page> listener) {
            
            List<QueryContainer.FieldInfo> refs = query.fields();
            List<HitExtractor> exts = new ArrayList<>(refs.size());
            for (QueryContainer.FieldInfo ref : refs) {
                exts.add(createExtractor(ref.extraction()));
            }
            SearchHitCursor.handle(
                client,
                response,
                source,
                () -> new SchemaSearchHitRowSet(schema, exts, mask, source.size(), query.limit(), response),
                listener,
                query.shouldIncludeFrozen()
            );
        }
        private HitExtractor createExtractor(FieldExtraction ref) {
            if (ref instanceof SearchHitFieldRef f) {
                return new FieldHitExtractor(f.name(), f.getDataType(), cfg.zoneId(), f.hitName(), multiValueFieldLeniency);