Hi,
I'm wondering how to create a cost-optimized plan from the Framework.
I am currently in the following phase and successfully created a
logical plan (, which I think is not optimized based on costs),
but I'm not sure how to create a plan which is optimized based on
costs from the logical plan.
FrameworkConfig calciteFrameworkConfig = Frameworks.newConfigBuilder()
.parserConfig(SqlParser.configBuilder()
.setLex(Lex.MYSQL)
.build())
.defaultSchema(schema)
.traitDefs(traitDefs)
.context(Contexts.EMPTY_CONTEXT)
.ruleSets(RuleSets.ofList())
.costFactory(null)
.typeSystem(RelDataTypeSystem.DEFAULT)
.build();
planner = Frameworks.getPlanner(calciteFrameworkConfig);
sqlNode = planner.parse(query);
SqlNode validatedSqlNode = planner.validate(sqlNode);
RelRoot root = planner.rel(validatedSqlNode)
// I don't know what to do to optimize the logical plan
// I also don't know how to modify the existing costs for each node
Would any teach me how to do that ?
(If there are some examples or documents somewhere, it would be great
if you point them.)
Also, would anyone give me some idea about how to modify the default costs ?
Best regards,
Hiro