[
https://issues.apache.org/jira/browse/CALCITE-3409?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17297855#comment-17297855
]
xzh_dz commented on CALCITE-3409:
---------------------------------
[~zabetak]
I agree with you, but I don't think it's succinct to create another abstract
class or interface. Different users have different requirements for
normalization rules. It's hard to say that we should completely control it. I
think we should expose the original calling interface to users. Adding new
methods in `RelOptPlanner` is only used in the single test of calcite. In fact,
we directly call the
`org.apache.calcite.plan.RelOptMaterializations#useMaterializedViews(RelNode,
List<RelOptMaterialization>, List<SubstitutionVisitor.UnifyRule>)` for
materialized view recognition and materialized view registration. It's very
simple and convenient to use, and the normalization rules before materialized
view recognition are the same. I think it's a better way to extend the existing
interface. What do you think?
> Add an interface in MaterializedViewSubstitutionVisitor to allow registering
> UnifyRule
> --------------------------------------------------------------------------------------
>
> Key: CALCITE-3409
> URL: https://issues.apache.org/jira/browse/CALCITE-3409
> Project: Calcite
> Issue Type: Improvement
> Reporter: Jin Xing
> Assignee: Jin Xing
> Priority: Major
> Labels: pull-request-available
> Time Spent: 5h 40m
> Remaining Estimate: 0h
>
> In current code of MaterializedViewSubstitutionVisitor, all matching rules
> are internal defined. The existing rules support the most popular scenarios.
> But my customers sometimes ask for the ability to self define some matching
> rules, thus to support some special scenarios.
> I take below example as an illustration:
> {code:java}
> Query:
> select * from table
> where from_unixtime(_EVENT_TIME_, "yyyymmdd hh") >= "20190909 00"
> and from_unixtime(_EVENT_TIME_, "yyyymmdd hh") <= "20190909 23" ;
> Materialized View:
> select * from table
> where from_unixtime(_EVENT_TIME_, "yyyymmdd") = "20190909";{code}
> It's hard to enumerate the matching pattern for different functions in
> internal matching rules. We can expose a method to register new UnifyRules
> and allow user to extend the ability of MV matching
--
This message was sent by Atlassian Jira
(v8.3.4#803005)