[ 
https://issues.apache.org/jira/browse/CALCITE-3825?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17047085#comment-17047085
 ] 

Jesus Camacho Rodriguez commented on CALCITE-3825:
--------------------------------------------------

Thanks for the feedback [~julianhyde]. Public classes was for the purpose of 
making them extensible by other engines if necessary 
({{AbstractMaterializedViewRule}} was public too). Their constructors are 
public for non-abstract classes and protected for the abstract ones. I guess 
they could all be made protected as they were in the past, although on the 
other hand, I am not sure we need to force an engine relying in Calcite to 
extend a certain rule if we can just instantiate it?
I realize there may be some concern because we are making all those methods a 
public API in Calcite now; however, the rules have been stable for some time, 
so I am hoping it is OK. Please, let me know what you think.

> Split AbstractMaterializedViewRule into multiple classes
> --------------------------------------------------------
>
>                 Key: CALCITE-3825
>                 URL: https://issues.apache.org/jira/browse/CALCITE-3825
>             Project: Calcite
>          Issue Type: Improvement
>          Components: core
>            Reporter: Jesus Camacho Rodriguez
>            Assignee: Jesus Camacho Rodriguez
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.23.0
>
>          Time Spent: 40m
>  Remaining Estimate: 0h
>
> AbstractMaterializedViewRule contains a materialized view-based rewriting 
> algorithm that has been there for multiple releases and it is used by some 
> engines relying in Calcite, e.g., Apache Hive.
> The main reason to have a single file/class for the rule was to make the 
> logic self-contained instead of spreading it between multiple files from the 
> onset, as it was experimental and we were not sure how far the implementation 
> would go. In retrospective, we should have refactored that code sooner rather 
> than later, since it makes very difficult to understand and maintain logic 
> that is already complicated enough.
> This issue is to split AbstractMaterializedViewRule into multiple 
> files/classes (it already contained multiple internal classes).



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to