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