...
对于QueryOperator内部的特殊声明部分,计划先将其抽象为一个整体,即SpeicalClauseComponent类,然后对于不同的查询特殊声明,再实现各自的子类。由此,QueryOperator包含如下图2.5所示的4个部分,简洁清晰。
图2.5 QueryOperator优化后内部成员变量图
...
此前,查询SQL解析是按照 "SELECT -> FROM -> WHERE -> SpecialClause" 的顺序进行解析,这显然不再合理,因为没办法提前知道由第四部分决定的查询类型。因此,计划修改解析顺序为,"SpecialClause -> SELECT -> FROM -> WHERE",这种解析顺序可以提前知道每一种查询的类型并新建该逻辑运算符。
当前IoTDB中共有8种查询方式种查询类型,其中由第一部分决定的查询类型有4种,分别是:原始数据查询、聚合查询、最新数据点last查询、用户自定义函数UDF查询;由第四部分决定的查询类型同样有4种,分别是:降采样查询,降采样自动填充查询、自动填充查询、按设备对齐查询。
...
最后,我们得到的整体的类图,如下图所示:
图2.9 逻辑查询计划设计总类图
...