### 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/qa/server/src/main/java/org/elasticsearch/xpack/sql/qa/rest/RestSqlTestCase.java
if (format.equals("text/plain")) {
                    expected.append("---------------+---------------+---------------\n");
                }
            }
            cursor = response.v2();
            if (i < 20) {
                expected.append(String.format(Locale.ROOT, expectedLineFormat, "text" + i, i, i + 5));
                expected.append(String.format(Locale.ROOT, expectedLineFormat, "text" + (i + 1), i + 1, i + 6));
                assertEquals(expected.toString(), response.v1());
                assertNotNull(cursor);
            } else {
                assertNull(cursor);
            }
        }
        assertEquals(0, getNumberOfSearchContexts(provisioningClient(), "test"));
    }
    private static void bulkLoadTestData(int count) throws IOException {
        Request request = new Request("POST", "/test/_bulk");
        request.addParameter("refresh", "true");
        StringBuilder bulk = new StringBuilder();
        for (int i = 0; i < count; i++) {
            bulk.append("""
                {"index":{"_id":"%s"}}
                {"text":"text%s", "number":%s}
                """.formatted(i, i, i));
        }
        request.setJsonEntity(bulk.toString());
        provisioningClient().performRequest(request);
    }
    private void loadUnsignedLongTestData() throws IOException {