首页 > 数据库 > > Apache IoTDB代码极简阅读
IoTDB是时序数据库, 可接入其他数据处理系统, 比如Hive, Flink等. 详细介绍, 开发动机, workload请参考官网. 本文只给出看代码的步骤.
盲搜的全部命令如下:
javatree.pl '\w+' ''
javatree.pl 'Oparator' ''
javatree.pl 'Operator' '' 1
javatree.pl 'Operator' '' 1 'spark/tsfile'
javatree.pl 'Operator' '' 1 'iotdb/db/qp/logical'
javatree.pl 'PhysicalPlan' '' 1
javatree.pl 'PhysicalPlan' 'Projection' 1
javatree.pl 'PhysicalPlan' 'Project' 1
javatree.pl 'Expr' '' 1
javatree.pl 'Expression' '' 1
javatree.pl 'IExpression' '' 1
javatree.pl '\w+' 'IExpression' 1
javatree.pl '\w+' 'Expression' 1
javatree.pl '\w+' '^Expression' 1
javatree.pl '\w+' '^Expression$' 1
javatree.pl '^Expression$' '' 1
javatree.pl '^Scan$' '' 1
javatree.pl 'Scan' '' 1
javatree.pl '(?)Scan' '' 1
javatree.pl 'Join' '' 1
javatree.pl '(?i)Join' '' 1
javatree.pl '(?i)aggregate' '' 1
javatree.pl '(?i)exec' '' 1
javatree.pl 'GroupByExecutor' '' 1
javatree.pl '\w+' 'GroupByExecutor' 1
vim server/src/main/java/org/apache/iotdb/db/query/dataset/groupby/GroupByExecutor.java +30
javatree.pl '(?i)Physical' '' 1
vim server/src/main/java/org/apache/iotdb/db/qp/physical/PhysicalPlan.java +9
javatree.pl '(?i)select' '' 1
javatree.pl '(?i)UDTF' '' 1
vim server/src/main/java/org/apache/iotdb/db/query/udf/api/UDTF.java +58
javatree.pl 'Encoder' '' 1
javatree.pl 'Decoder' '' 1
vim tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/GorillaDecoderV2.java +35
vim tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/Decoder.java +31
java_calltree.pl 'nextBatch' '' 1 1 2
java_calltree.pl 'fetchSingleSeries' '' 1 1 2
java_calltree.pl 'fetchSingleSeries' '' 1 1 3
java_calltree.pl 'fetchSingleSeries' '' 1 1 -3
java_calltree.pl 'getValuesInTimestamps' '' 1 1 -3
java_calltree.pl 'execute' '' 1 1 -3
java_calltree.pl 'execute' '' 1 1 -2
vim tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileReader.java +50
javatree.pl 'Executor' '' 1
javatree.pl 'Executor$' '' 1
javatree.pl 'IPlanExecutor' '' 1
vim server/src/main/java/org/apache/iotdb/db/qp/executor/IPlanExecutor.java +44
java_calltree.pl 'PlanExecutor' '' 1 1 2
java_calltree.pl 'PlanExecutor' '' 1 1 -4
java_calltree.pl 'PlanExecutor' '' 1 1 -3
java_calltree.pl 'ClusterPlanExecutor' '' 1 1 -3
java_calltree.pl 'TsFileExecutor' '' 1 1 -3
java_calltree.pl 'TsFileExecutor' '' 1 1 -4
java_calltree.pl 'TsFileExecutor' '' 1 1 -4
javatree.pl 'UDTF' '' 1
vim server/src/main/java/org/apache/iotdb/db/query/udf/api/UDTF.java +58
javatree.pl '(?i)UDTF\w*executor' '' 1
java_calltree.pl 'ClusterUDTFQueryExecutor' '' 1 1 -4
vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +567
javatree.pl 'QueryPlan' '' 1
javatree.pl '\w+' 'QueryPlan' 1
java_calltree.pl 'LastQueryPlan' '' 1 1 1javatree.pl 'PhysicalPlan' '' 1 0
javatree.pl 'PhysicalPlan' 'QueryPlan' 1 0
javatree.pl 'QueryPlan' '' 1 0
java_calltree.pl 'generatePhysicalPlan' '' 0 1 1输出结果
+ generatePhysicalPlan
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/crud/GroupByQueryOperator.java +32]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/crud/QueryOperator.java +188]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/crud/FillQueryOperator.java +66]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/crud/AggregationQueryOperator.java +90]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/crud/UDTFQueryOperator.java +38]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/crud/UDAFQueryOperator.java +102]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/crud/InsertOperator.java +89]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/crud/GroupByFillQueryOperator.java +32]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/crud/DeleteDataOperator.java +73]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/crud/LastQueryOperator.java +60]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/UnSetTTLOperator.java +48]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/crud/SelectIntoOperator.java +48]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/SetTTLOperator.java +57]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/SetStorageGroupOperator.java +45]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/RemoveFileOperator.java +45]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/LoadConfigurationOperator.java +48]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ShowNodesInTemplateOperator.java +38]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ShowDevicesOperator.java +69]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/CreateIndexOperator.java +80]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/DeleteTimeSeriesOperator.java +48]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ShowPathsSetTemplateOperator.java +38]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/AlterTimeSeriesOperator.java +103]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/CreateContinuousQueryOperator.java +96]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/SetTemplateOperator.java +56]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ShowQueryResourceOperate.java +35]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/StartTriggerOperator.java +46]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/CreateTriggerOperator.java +88]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ShowChildPathsOperator.java +43]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/DropTriggerOperator.java +46]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/DropContinuousQueryOperator.java +46]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/SetSystemModeOperator.java +49]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/LoadDataOperator.java +51]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ActivateTemplateOperator.java +47]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ShowPathsUsingTemplateOperator.java +38]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/AuthorOperator.java +119]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/CreateSnapshotOperator.java +36]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/TracingOperator.java +42]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ShowTTLOperator.java +45]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ShowOperator.java +46]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/LoadFilesOperator.java +77]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ShowFunctionsOperator.java +34]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/CountOperator.java +55]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/StopTriggerOperator.java +46]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/CreateTemplateOperator.java +104]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/KillQueryOperator.java +48]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/DeleteStorageGroupOperator.java +47]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ShowTimeSeriesOperator.java +94]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/CreateTimeSeriesOperator.java +114]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/DeletePartitionOperator.java +58]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/SettleOperator.java +63]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ShowChildNodesOperator.java +43]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/DropFunctionOperator.java +46]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/CreateAlignedTimeSeriesOperator.java +120]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/DropTemplateOperator.java +45]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/CreateFunctionOperator.java +55]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ClearCacheOperator.java +35]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ShowStorageGroupOperator.java +43]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/UnloadFileOperator.java +51]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/DropIndexOperator.java +61]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/Operator.java +85]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/MergeOperator.java +36]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/UnsetTemplateOperator.java +56]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ShowTriggersOperator.java +34]
├── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/DataAuthOperator.java +48]
└── generatePhysicalPlan [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/FlushOperator.java +58]
javatree.pl 'Operator' '' 1 0 'spark/tsfile'输出结果
^Operator$
└── Operator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/Operator.java +28]
├── ActivateTemplateOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ActivateTemplateOperator.java +29]
├── AlterTimeSeriesOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/AlterTimeSeriesOperator.java +31]
├── AuthorOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/AuthorOperator.java +32]
├── ClearCacheOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ClearCacheOperator.java +27]
├── CreateAlignedTimeSeriesOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/CreateAlignedTimeSeriesOperator.java +37]
├── CreateContinuousQueryOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/CreateContinuousQueryOperator.java +30]
├── CreateFunctionOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/CreateFunctionOperator.java +28]
├── CreateIndexOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/CreateIndexOperator.java +34]
├── CreateSnapshotOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/CreateSnapshotOperator.java +28]
├── CreateTemplateOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/CreateTemplateOperator.java +34]
├── CreateTimeSeriesOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/CreateTimeSeriesOperator.java +33]
├── CreateTriggerOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/CreateTriggerOperator.java +33]
├── DataAuthOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/DataAuthOperator.java +29]
├── DeleteDataOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/crud/DeleteDataOperator.java +35]
├── DeletePartitionOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/DeletePartitionOperator.java +31]
├── DeleteStorageGroupOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/DeleteStorageGroupOperator.java +29]
├── DeleteTimeSeriesOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/DeleteTimeSeriesOperator.java +30]
├── DropContinuousQueryOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/DropContinuousQueryOperator.java +28]
├── DropFunctionOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/DropFunctionOperator.java +28]
├── DropIndexOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/DropIndexOperator.java +33]
├── DropTemplateOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/DropTemplateOperator.java +27]
├── DropTriggerOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/DropTriggerOperator.java +28]
├── FlushOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/FlushOperator.java +30]
├── InsertOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/crud/InsertOperator.java +33]
├── KillQueryOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/KillQueryOperator.java +27]
├── LoadConfigurationOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/LoadConfigurationOperator.java +28]
├── LoadDataOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/LoadDataOperator.java +29]
├── LoadFilesOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/LoadFilesOperator.java +35]
├── MergeOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/MergeOperator.java +28]
├── RemoveFileOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/RemoveFileOperator.java +30]
├── SelectIntoOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/crud/SelectIntoOperator.java +35]
├── SetStorageGroupOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/SetStorageGroupOperator.java +27]
├── SetSystemModeOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/SetSystemModeOperator.java +28]
├── SetTTLOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/SetTTLOperator.java +30]
├── SetTemplateOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/SetTemplateOperator.java +29]
├── SettleOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/SettleOperator.java +28]
├── ShowQueryResourceOperate [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ShowQueryResourceOperate.java +27]
├── StartTriggerOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/StartTriggerOperator.java +28]
├── StopTriggerOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/StopTriggerOperator.java +28]
├── TracingOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/TracingOperator.java +27]
├── UnSetTTLOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/UnSetTTLOperator.java +30]
├── UnloadFileOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/UnloadFileOperator.java +30]
├── UnsetTemplateOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/UnsetTemplateOperator.java +29]
├── ShowOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ShowOperator.java +34]
│ ├── CountOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/CountOperator.java +31]
│ ├── ShowChildNodesOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ShowChildNodesOperator.java +29]
│ ├── ShowChildPathsOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ShowChildPathsOperator.java +29]
│ ├── ShowContinuousQueriesOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ShowContinuousQueriesOperator.java +22]
│ ├── ShowDevicesOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ShowDevicesOperator.java +28]
│ ├── ShowFunctionsOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ShowFunctionsOperator.java +27]
│ ├── ShowLockInfoOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ShowLockInfoOperator.java +24]
│ ├── ShowNodesInTemplateOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ShowNodesInTemplateOperator.java +28]
│ ├── ShowPathsSetTemplateOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ShowPathsSetTemplateOperator.java +28]
│ ├── ShowPathsUsingTemplateOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ShowPathsUsingTemplateOperator.java +28]
│ ├── ShowStorageGroupOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ShowStorageGroupOperator.java +29]
│ ├── ShowTTLOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ShowTTLOperator.java +31]
│ ├── ShowTemplatesOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ShowTemplatesOperator.java +22]
│ ├── ShowTimeSeriesOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ShowTimeSeriesOperator.java +28]
│ └── ShowTriggersOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ShowTriggersOperator.java +27]
└── QueryOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/crud/QueryOperator.java +56]
├── FillQueryOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/crud/FillQueryOperator.java +34]
├── LastQueryOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/crud/LastQueryOperator.java +31]
├── UDAFQueryOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/crud/UDAFQueryOperator.java +44]
├── UDTFQueryOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/crud/UDTFQueryOperator.java +27]
└── AggregationQueryOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/crud/AggregationQueryOperator.java +41]
└── GroupByQueryOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/crud/GroupByQueryOperator.java +29]
└── GroupByFillQueryOperator [vim server/src/main/java/org/apache/iotdb/db/qp/logical/crud/GroupByFillQueryOperator.java +29]javatree.pl 'IPlanExecutor' '' 1 0
java_calltree.pl 'processQuery' '' 0 1 2
java_calltree.pl 'processQuery' 'process' 0 1 2输出结果如下,包含了很多query和show相关的PhysicalPlan的执行逻辑
+ processQuery
├── processQuery [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +217]
│ ├── processDataQuery [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +567]
│ ├── processAuthorQuery [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +1978]
│ └── processShowQuery [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +615]
│ ├── processShowTTLQuery [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +893]
│ ├── processShowFlushTaskInfo [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +939]
│ ├── processShowVersion [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +926]
│ ├── processShowTimeseries [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +884]
│ ├── processShowStorageGroup [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +829]
│ ├── processShowLockInfo [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +851]
│ ├── processShowDevices [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +776]
│ ├── processShowChildPaths [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +781]
│ ├── processShowChildNodes [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +802]
│ ├── processCountTimeSeries [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +771]
│ ├── processCountNodeTimeSeries [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +674]
│ ├── processCountDevices [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +695]
│ ├── processCountStorageGroup [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +700]
│ ├── processCountNodes [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +667]
│ ├── processShowQueryProcesslist [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +2200]
│ ├── processShowFunctions [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +965]
│ ├── processShowTriggers [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +1149]
│ ├── processShowContinuousQueries [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +1019]
│ ├── processShowSchemaTemplates [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +1054]
│ ├── processShowNodesInSchemaTemplate [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +1068]
│ ├── processShowPathsSetSchemaTemplate [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +1118]
│ └── processShowPathsUsingSchemaTemplate [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +1099]
└── processQuery [vim cluster/src/main/java/org/apache/iotdb/cluster/query/ClusterPlanExecutor.java +98]
├── processDataQuery [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +567]
├── processShowQuery [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +615]
│ ├── processShowTTLQuery [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +893]
│ ├── processShowFlushTaskInfo [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +939]
│ ├── processShowVersion [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +926]
│ ├── processShowTimeseries [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +884]
│ ├── processShowStorageGroup [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +829]
│ ├── processShowLockInfo [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +851]
│ ├── processShowDevices [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +776]
│ ├── processShowChildPaths [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +781]
│ ├── processShowChildNodes [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +802]
│ ├── processCountTimeSeries [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +771]
│ ├── processCountNodeTimeSeries [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +674]
│ ├── processCountDevices [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +695]
│ ├── processCountStorageGroup [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +700]
│ ├── processCountNodes [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +667]
│ ├── processShowQueryProcesslist [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +2200]
│ ├── processShowFunctions [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +965]
│ ├── processShowTriggers [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +1149]
│ ├── processShowContinuousQueries [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +1019]
│ ├── processShowSchemaTemplates [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +1054]
│ ├── processShowNodesInSchemaTemplate [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +1068]
│ ├── processShowPathsSetSchemaTemplate [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +1118]
│ └── processShowPathsUsingSchemaTemplate [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +1099]
└── processAuthorQuery [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +1978]vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +567
protected QueryDataSet processDataQuery(QueryPlan queryPlan, QueryContext context)
throws StorageEngineException, QueryFilterOptimizationException, QueryProcessException,
IOException, InterruptedException {
QueryDataSet queryDataSet;
if (queryPlan instanceof AlignByDevicePlan) {
queryDataSet = getAlignByDeviceDataSet((AlignByDevicePlan) queryPlan, context, queryRouter);
} else {
if (queryPlan.getPaths() == null || queryPlan.getPaths().isEmpty()) {
// no time series are selected, return EmptyDataSet
return new EmptyDataSet();
} else if (queryPlan instanceof UDAFPlan) {
UDAFPlan udafPlan = (UDAFPlan) queryPlan;
queryDataSet = queryRouter.udafQuery(udafPlan, context);
} else if (queryPlan instanceof UDTFPlan) {
UDTFPlan udtfPlan = (UDTFPlan) queryPlan;
queryDataSet = queryRouter.udtfQuery(udtfPlan, context);
} else if (queryPlan instanceof GroupByTimeFillPlan) {
GroupByTimeFillPlan groupByFillPlan = (GroupByTimeFillPlan) queryPlan;
queryDataSet = queryRouter.groupByFill(groupByFillPlan, context);
} else if (queryPlan instanceof GroupByTimePlan) {
GroupByTimePlan groupByTimePlan = (GroupByTimePlan) queryPlan;
queryDataSet = queryRouter.groupBy(groupByTimePlan, context);
} else if (queryPlan instanceof QueryIndexPlan) {
throw new QueryProcessException("Query index hasn't been supported yet");
} else if (queryPlan instanceof AggregationPlan) {
AggregationPlan aggregationPlan = (AggregationPlan) queryPlan;
queryDataSet = queryRouter.aggregate(aggregationPlan, context);
} else if (queryPlan instanceof FillQueryPlan) {
FillQueryPlan fillQueryPlan = (FillQueryPlan) queryPlan;
queryDataSet = queryRouter.fill(fillQueryPlan, context);
} else if (queryPlan instanceof LastQueryPlan) {
queryDataSet = queryRouter.lastQuery((LastQueryPlan) queryPlan, context);
} else {
queryDataSet = queryRouter.rawDataQuery((RawDataQueryPlan) queryPlan, context);
}
}
queryDataSet.setRowLimit(queryPlan.getRowLimit());
queryDataSet.setRowOffset(queryPlan.getRowOffset());
queryDataSet.setWithoutAllNull(queryPlan.isWithoutAllNull());
queryDataSet.setWithoutAnyNull(queryPlan.isWithoutAnyNull());
return queryDataSet;
}
javatree.pl 'Gorilla' '' 1 0
javatree.pl 'Encoder' '' 1 0

java_calltree.pl 'GroupByFillQueryOperator' '' 1 1 3
java_calltree.pl '\w+Operator' 'visit\w+Statement' 1 1 3输出结果为:
\w+Operator
├── AggregationQueryOperator
│ ├── visitGroupByLevelStatement [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +1170]
│ └── parseSelectClause [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +2625]
│ └── visitSelectStatement [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +1032]
├── DeleteDataOperator
│ └── visitDeleteStatement [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +1665]
├── FillQueryOperator
│ └── visitFillStatement [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +1183]
├── FilterOperator
│ └── parseWhereClause [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +2693]
│ ├── visitSelectStatement [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +1032]
│ └── visitDeleteStatement [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +1665]
├── GroupByFillQueryOperator
│ └── visitGroupByFillStatement [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +1157]
├── GroupByQueryOperator
│ └── visitGroupByTimeStatement [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +1144]
├── InsertOperator
│ └── visitInsertStatement [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +1596]
├── LastQueryOperator
│ └── parseSelectClause [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +2625]
│ └── visitSelectStatement [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +1032]
├── QueryOperator
│ ├── visitSelectStatement [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +1032]
│ ├── visitOrderByTimeStatement [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +1134]
│ ├── visitLimitStatement [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +1196]
│ ├── visitSlimitStatement [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +1211]
│ ├── visitWithoutNullStatement [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +1226]
│ └── visitAlignByDeviceClauseOrDisableAlignStatement [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +1244]
├── SelectIntoOperator
│ └── parseAndConstructSelectIntoOperator [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +1055]
│ └── visitSelectStatement [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +1032]
├── UDAFQueryOperator
│ └── parseSelectClause [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +2625]
│ └── visitSelectStatement [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +1032]
├── UDTFQueryOperator
│ └── parseSelectClause [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +2625]
│ └── visitSelectStatement [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +1032]
├── addChildOperator
│ └── parseWhereClause [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +2693]
│ ├── visitSelectStatement [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +1032]
│ └── visitDeleteStatement [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +1665]
├── calcOperatorInterval
│ └── parseDeleteTimeInterval [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +1683]
│ └── visitDeleteStatement [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +1665]
├── getFilterOperator
│ └── visitDeleteStatement [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +1665]
├── parseAndConstructSelectIntoOperator
│ └── visitSelectStatement [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +1032]
└── setQueryOperator
└── parseAndConstructSelectIntoOperator [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +1055]
└── visitSelectStatement [vim server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +1032]
java_calltree.pl 'createTimeSeries' '' 1 2
java_calltree.pl 'processNonQuery' '' 0 1 1输出结果为:
processNonQuery [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +232]
├── plan.getOperatorType @ getOperatorType [vim server/src/main/java/org/apache/iotdb/db/qp/physical/PhysicalPlan.java +139]
├── + insert
├── + insertTablet
├── operateAuthor [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +1737]
├── operateWatermarkEmbedding [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +1797]
├── + getUsers
├── deleteTimeSeries [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +1862]
├── createTimeSeries [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +1809]
├── + createAlignedTimeSeries
├── createMultiTimeSeries [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +1830]
├── alterTimeSeries [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +1899]
├── + setStorageGroup
├── + deleteStorageGroups
├── operateTTL [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +1460]
├── + loadConfiguration
├── operateLoadFiles [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +1182]
├── operateRemoveFile [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +1429]
├── operateUnloadFile [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +1441]
├── operateFlush [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +511]
├── operateMerge [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +470]
├── operateSetSystemMode [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +507]
├── operateClearCache [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +474]
├── + getFullPath
├── + p.getPartitionId
├── + StorageEngine.getInstance
├── + removePartitions
├── + getStorageGroupName
├── operateCreateSnapshot [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +479]
├── operateCreateFunction [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +438]
├── operateDropFunction [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +443]
├── operateCreateTrigger [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +448]
├── operateDropTrigger [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +454]
├── operateStartTrigger [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +459]
├── operateStopTrigger [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +465]
├── operateKillQuery [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +483]
├── + QueryProcessException
├── + e.getMessage
├── + createTemplate
├── + dropTemplate
├── + appendTemplate
├── + pruneTemplate
├── + setTemplate
├── activateTemplate [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +419]
├── + unsetTemplate
├── operateCreateContinuousQuery [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +528]
├── operateDropContinuousQuery [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +533]
├── + settle
├── processShowQueryResource [vim server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +2192]
├── UnsupportedOperationException
└── + plan.getOperatorNamejavatree.pl 'UDF' '' 0 0 ^UDF$
└── UDF
└── UDTF
├── Accumulator
├── Adder
├── Max
├── Multiplier
├── SlidingSizeWindowConstructorTester0
├── SlidingSizeWindowConstructorTester1
├── SlidingTimeWindowConstructionTester
├── TerminateTester
├── UDTFCast
├── UDTFConst
├── UDTFConstE
├── UDTFConstPi
├── UDTFContains
├── UDTFExample
├── UDTFMatches
├── UDTFTimeDifference
├── ValidateTester
├── Counter
│ ├── DoNothingCounter
│ ├── DropwizardCounter
│ └── MicrometerCounter
├── UDTFMath
│ ├── UDTFAbs
│ ├── UDTFAcos
│ ├── UDTFAsin
│ ├── UDTFAtan
│ ├── UDTFCeil
│ ├── UDTFCos
│ ├── UDTFCosh
│ ├── UDTFDegrees
│ ├── UDTFExp
│ ├── UDTFFloor
│ ├── UDTFLog
│ ├── UDTFLog10
│ ├── UDTFRadians
│ ├── UDTFRound
│ ├── UDTFSign
│ ├── UDTFSin
│ ├── UDTFSinh
│ ├── UDTFSqrt
│ ├── UDTFTan
│ └── UDTFTanh
├── UDTFSelectK
│ ├── UDTFBottomK
│ └── UDTFTopK
└── UDTFValueTrend
├── UDTFDerivative
│ ├── UDTFCommonDerivative
│ └── UDTFNonNegativeDerivative
└── UDTFValueDifference
├── UDTFCommonValueDifference
└── UDTFNonNegativeValueDifference细节略过,有兴趣的同学可以继续深入.
理论通识和工程落地之间是细节鸿沟,只有深入钻研细节, 才能感受代码之美.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69946831/viewspace-3157664/ ,如需转载,请注明出处,否则将追究法律责任。