private ListenableFuture<?> tryGetNext() {
    ISchemaRegion schemaRegion = getSchemaRegion();
    if (schemaSource.hasSchemaStatistic(schemaRegion)) {
      next = constructTsBlock(schemaSource.getSchemaStatistic(schemaRegion));
      return NOT_BLOCKED;
    } else {
      if (schemaReader == null) {
        schemaReader = createSchemaReader();
      }
      while (true) {
        try {
          ListenableFuture<?> readerBlocked = schemaReader.isBlocked();
          if (!readerBlocked.isDone()) {
            return readerBlocked;
          } else if (schemaReader.hasNext()) {
            schemaReader.next();
            count++;
          } else {
            next = constructTsBlock(count);
            return NOT_BLOCKED;
          }
        } catch (Exception e) {
          throw new SchemaExecutionException(e);
        }
      }
    }
  }
Try to get next TsBlock. If the next is not ready, return a future. After success, {@link
SchemaCountOperator#next} will be set.
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaCountOperator.java