[
https://issues.apache.org/jira/browse/CALCITE-3916?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17175352#comment-17175352
]
Ruben Q L commented on CALCITE-3916:
------------------------------------
Thanks for checking [~hyuan], grosso modo the situation is as follows:
I have an IndexScan operator which can perform an scan with filter and/or sort
within. With a certain rule, the first IndexScan is created with a filter
inside:
{{Filter + Scan => IndexScan[id 38, filter]}}
Then, the method "passThrough" is called on this IndexScan38. The required
traiset contains a collation, so a new IndexScan is created (using 38 as
"base"), ending up with IndexScan45, which contains the filter and sort
(collation):
{{createdSortedIndexScan(IndexScan38, collation) => IndexScan[id 45, filter,
collation]}}
Since "passThrough" requires also ENUMERABLE Convention, and my IndexScan
operator belongs to a different one, this method returns a
MyConventionToEnumerableConverter(with IndexScan45 inside).
The {{ClassCastException}} is thrown when this IndexScan45 is tried to be cast
as RelSubset inside {{TopDownRuleDriver#getOptimizeInputTask}}.
> Support cascades style top-down driven rule apply
> -------------------------------------------------
>
> Key: CALCITE-3916
> URL: https://issues.apache.org/jira/browse/CALCITE-3916
> Project: Calcite
> Issue Type: Improvement
> Components: core
> Reporter: Haisheng Yuan
> Assignee: Jinpeng Wu
> Priority: Major
> Labels: pull-request-available
> Fix For: 1.24.0
>
> Time Spent: 15.5h
> Remaining Estimate: 0h
>
> Apply rules by leaf RelSet -> root RelSet order. For every RelNode in a
> RelSet, rule is matched and applied sequentially. No RuleQueue and
> DeferringRuleCall is needed anymore. This will make space pruning and rule
> mutual exclusivity check possible.
> Rule that use AbstractConverter as operand is an exception, to keep backward
> compatibility, this kind of rule still needs top-down apply.
> This should be done after CALCITE-3896.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)