docs: public Select parseSelect(MySqlSelectQueryBlock query) throws SqlParseException {
  
          Select select = new Select();
          /*zhongshu-comment SqlParser类没有成员变量，里面全是方法，所以将this传到WhereParser对象时是无状态的，
                            即SqlParser对象并没有给WhereParser传递任何属性，也不存在WhereParser修改SqlParser的成员变量值这一说
                           WhereParser只是单纯想调用SqlParser的方法而已
          */
          WhereParser whereParser = new WhereParser(this, query);
  
          /*
          zhongshu-comment 例如sql：select   a,sum(b),case when c='a' then 1 else 2 end as my_c from tbl，
          那findSelect()就是解析这一部分了：a,sum(b),case when c='a' then 1 else 2 end as my_c
           */
          findSelect(query, select, query.getFrom().getAlias()); //zhongshu-comment 看过
  
          select.getFrom().addAll(findFrom(query.getFrom())); //zhongshu-comment 看过
  
          select.setWhere(whereParser.findWhere()); //zhongshu-comment 看过
  
          //zhongshu-comment 这个应该是针对where子查询的，而不是from子查询，貌似又不是解析from子查询的，报错了
          //zhongshu-comment 也许es本身就不支持子查询，所以es-sql就没实现，那这个fillSubQueries是什么啊？？
          //todo 看不懂，测试了好几个常见的sql，都没有进去该方法，那就先不理了，看别的
          select.fillSubQueries();
  
          //zhongshu-comment 解析sql语句中的注释：select /*! USE_SCROLL(10,120000) */ * FROM spark_es_table
          //hint单词的意思是提示，即sql中的注释内容
          // /* 和 */之间是sql的注释内容，这是sql本身的语法，然后sql解析器会将注释块之间的内容“! USE_SCROLL(10,120000) ”抽取出来
          // ! USE_SCROLL是es-sql自己定义的一套规则，
          // 在不增加mysql原有语法的情况下，利用注释来灵活地扩展es-sql的功能，这样就能使用druid的mysql语法解析器了，无需自己实现
          // 注意：!叹号和USE_SCROLL之间要空且只能空一格
          select.getHints().addAll(parseHints(query.getHints()));
  
          findLimit(query.getLimit(), select);
  
          //zhongshu-comment 和那个_score有关
          findOrderBy(query, select); //zhongshu-comment 还没看
  
          findGroupBy(query, select); //zhongshu-comment aggregations
          return select;
      }