[ 
https://issues.apache.org/jira/browse/CALCITE-7239?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

weihua zhang closed CALCITE-7239.
---------------------------------
    Resolution: Not A Problem

> For the HepPlanner used to execute the SubQueryRemoveRule, its noDag property 
> should be set to true
> ---------------------------------------------------------------------------------------------------
>
>                 Key: CALCITE-7239
>                 URL: https://issues.apache.org/jira/browse/CALCITE-7239
>             Project: Calcite
>          Issue Type: Test
>            Reporter: weihua zhang
>            Priority: Trivial
>              Labels: pull-request-available
>
> {code:java}
> public PreparedResult prepareSql(
>       SqlNode sqlQuery,
>       SqlNode sqlNodeOriginal,
>       Class<?> runtimeContextClass,
>       SqlValidator validator,
>       boolean needsValidation) {
>     init(runtimeContextClass);
>     final SqlToRelConverter.Config config =
>         SqlToRelConverter.config()
>             .withTrimUnusedFields(false)
>             .withExpand(false);
>     final Holder<SqlToRelConverter.Config> configHolder = Holder.of(config);
>     Hook.SQL2REL_CONVERTER_CONFIG_BUILDER.run(configHolder);
>     final SqlToRelConverter sqlToRelConverter =
>         getSqlToRelConverter(validator, catalogReader, configHolder.get());
>     // Convert the valid AST into a logical plan
>     RelRoot root = sqlToRelConverter.convertQuery(sqlQuery, needsValidation, 
> true);
>     RelNode relNode = root.project();
>     RelNode subQueryRemovedPlan =
>         runProgram(
>             ImmutableList.of(
>                 CoreRules.JOIN_SUB_QUERY_TO_CORRELATE,
>                 CoreRules.PROJECT_SUB_QUERY_TO_CORRELATE,
>                 CoreRules.FILTER_SUB_QUERY_TO_CORRELATE
>             ),
>             relNode);
>     RelBuilder relBuilder = 
> RelFactories.LOGICAL_BUILDER.create(root.rel.getCluster(), catalogReader);
>     RelNode decorrelatedPlan =
>         RelDecorrelator.decorrelateQuery(subQueryRemovedPlan, relBuilder);
>     root = root.withRel(decorrelatedPlan);
>     return implement(root);
>   }
>   private RelNode runProgram(List<RelOptRule> rules, RelNode currentNode) {
>     HepProgramBuilder builder = new HepProgramBuilder();
>     builder.addRuleCollection(rules);
>     builder.addMatchOrder(HepMatchOrder.BOTTOM_UP);
>     HepPlanner planner = new HepPlanner(builder.build(),
>         currentNode.getCluster().getPlanner().getContext(),
>         false, null, RelOptCostImpl.FACTORY);   // if noDAG=false, will throw 
> exception in some cases
>     planner.setRoot(currentNode);
>     return planner.findBestExp();
>   }
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to