Alima777 commented on a change in pull request #825: [IOTDB-499] Add query
engine decument
URL: https://github.com/apache/incubator-iotdb/pull/825#discussion_r381263227
##########
File path: docs/Documentation-CHN/SystemDesign/2-QueryEngine/2-Planner.md
##########
@@ -50,14 +68,193 @@ mvn clean compile
之后生成代码位置:server/target/generated-sources/ant
谓词去非优化器,将谓词逻辑中的非操作符去掉。
* org.apache.iotdb.db.qp.strategy.optimizer.DnfFilterOptimizer
-
+
将谓词转化为析取范式。
-
+
* org.apache.iotdb.db.qp.strategy.optimizer.MergeSingleFilterOptimizer
将相同路径的谓词逻辑合并。
-
+
+### ConcatPathOptimizer
+
+ConcatPathOptimizer 使用其中的 transform() 方法将给定查询中 SELECT 子句、FROM 子句和 WHERE
子句中的路径进行合并。该方法的申明如下:
+
+ Operator transform(Operator operator)
+ 输入:待转化的 SFWOperator
+ 输出:路径经过连接处理后的 SFWOperator
+
+
+该方法的主要步骤如下:
+
+1. 取出 FROM 子句和 SELECT 子句中的路径,前者称为前缀路径,后者称为后缀路径。进入步骤2.
+2. 判断该查询是否包含 ALIGN BY DEVICE 子句。如果不包含,则可进入步骤3;否则,进入步骤4.
+3. 则调用 concatSelect() 方法将前缀路径和后缀路径合并补全(包括带 * 的路径),形成全路径。如果查询中包含 SLIMIT 子句,则对
SELECT 子句中的路径做相应的筛选。进入步骤5.
+4. 对每一条 FROM 子句中的路径分析其设备名,如果不为空则抛出异常。进入步骤5.
+5. 对 WHERE 子句中过滤条件里包含的路径做补全。此时,SELECT 子句和 WHERE 子句中的路径都是完整的路径。
+
+### RemoveNotOptimizer
+
+RemoveNotOptimizer 类中的 removeNot() 和 reverseFilter()
方法共同实现了删去NOT关键字的功能。removeNot() 方法的申明如下:
Review comment:
```suggestion
RemoveNotOptimizer 类中的 removeNot() 和 reverseFilter() 方法共同实现了删去 NOT
关键字的功能。removeNot() 方法的申明如下:
```
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services