[
https://issues.apache.org/jira/browse/CALCITE-4461?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17263140#comment-17263140
]
Vladimir Ozerov commented on CALCITE-4461:
------------------------------------------
Hi [~julianhyde], let me clarify the intent of the ticket. The goal is only to
change the lines like {{LogicalFilter filter = (LogicalFilter) rel}} to
{{Filter filter = (Filter) rel}}. This way, it becomes possible to create a
custom config for the rule and apply it to non-logical operators. The default
configuration pattern remains the same, so by default enumerable rules will
fire only for {{Logical}} operators.
Does it make sense?
I realize, that my changes to JavaDoc in the PR bring confusion, I can
reformulate them like "Converts LogicalSomething to EnumerabeSomething. You may
provide a custom configuration to match non-Logical operators."
> Do not cast to logical node inside Enumerable rules
> ---------------------------------------------------
>
> Key: CALCITE-4461
> URL: https://issues.apache.org/jira/browse/CALCITE-4461
> Project: Calcite
> Issue Type: Task
> Components: core
> Affects Versions: 1.26.0
> Reporter: Vladimir Ozerov
> Assignee: Vladimir Ozerov
> Priority: Minor
> Labels: pull-request-available
> Fix For: 1.27.0
>
> Time Spent: 1h 10m
> Remaining Estimate: 0h
>
> Currently, some {{Enumerable}} rules work with the base operator classes,
> such as {{Join}}, while others have an explicit cast to {{Logical}}
> counterparts, such as `LogicalJoin`, {{LogicalProject}}, etc. This makes it
> impossible to convert custom non-logical nodes into {{Enumerable}} using the
> built-in rules because such an invocation will fail with a
> {{ClassCastException}}.
> The proposal is to change all existing rules so that they work with the base
> {{RelNode}} classes.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)