blob: d3953f3eda8feccecb229b68d636ede8b4dcbc6f [file] [log] [blame]
(window.webpackJsonp=window.webpackJsonp||[]).push([[41],{611:function(e,a,t){"use strict";t.r(a);var r=t(71),i=Object(r.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"execution-plan-generator"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#execution-plan-generator"}},[e._v("#")]),e._v(" Execution plan generator")]),e._v(" "),t("ul",[t("li",[e._v("org.apache.iotdb.db.qp.Planner")])]),e._v(" "),t("p",[e._v("Transform the syntax tree parsed by SQL into logical plans, logical optimizations, and physical plans.")]),e._v(" "),t("h2",{attrs:{id:"sql-parsing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sql-parsing"}},[e._v("#")]),e._v(" SQL parsing")]),e._v(" "),t("p",[e._v("SQL parsing using Antlr4")]),e._v(" "),t("ul",[t("li",[e._v("server/src/main/antlr4/org/apache/iotdb/db/qp/strategy/SqlBase.g4")])]),e._v(" "),t("p",[e._v("mvn clean compile")]),e._v(" "),t("p",[e._v("Generated code location :server/target/generated-sources/antlr4")]),e._v(" "),t("h2",{attrs:{id:"logical-plan-generator"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#logical-plan-generator"}},[e._v("#")]),e._v(" Logical plan generator")]),e._v(" "),t("ul",[t("li",[e._v("org.apache.iotdb.db.qp.strategy.LogicalGenerator")])]),e._v(" "),t("h2",{attrs:{id:"logical-plan-optimizer"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#logical-plan-optimizer"}},[e._v("#")]),e._v(" Logical plan optimizer")]),e._v(" "),t("p",[e._v("There are currently three logical plan optimizers")]),e._v(" "),t("ul",[t("li",[t("p",[e._v("org.apache.iotdb.db.qp.strategy.optimizer.ConcatPathOptimizer")]),e._v(" "),t("p",[e._v("The path optimizer splices query paths in SQL, interacts with MManager, removes wildcards, and performs path checking.")])]),e._v(" "),t("li",[t("p",[e._v("org.apache.iotdb.db.qp.strategy.optimizer.RemoveNotOptimizer")]),e._v(" "),t("p",[e._v("The predicate de-optimizer removes the non-operators in the predicate logic.")])]),e._v(" "),t("li",[t("p",[e._v("org.apache.iotdb.db.qp.strategy.optimizer.DnfFilterOptimizer")]),e._v(" "),t("p",[e._v("Turn predicates into disjunctive normal form.")])]),e._v(" "),t("li",[t("p",[e._v("org.apache.iotdb.db.qp.strategy.optimizer.MergeSingleFilterOptimizer")]),e._v(" "),t("p",[e._v("Combine predicates of the same path logically.")])])]),e._v(" "),t("h2",{attrs:{id:"physical-plan-generator"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#physical-plan-generator"}},[e._v("#")]),e._v(" Physical plan generator")]),e._v(" "),t("ul",[t("li",[e._v("org.apache.iotdb.db.qp.strategy.PhysicalGenerator")])])])}),[],!1,null,null,null);a.default=i.exports}}]);