[
https://issues.apache.org/jira/browse/CALCITE-6571?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17881005#comment-17881005
]
Stamatis Zampetakis commented on CALCITE-6571:
----------------------------------------------
The {{RelOptRule}} class has public non-deprecated constructors so it is
technically possible to extend and implement it.
In fact, Apache Hive, which is currently using calcite 1.25.0 (with the
{{RelRule}}) interface, has many rules that extend directly from {{RelOptRule}}
and there are also new rules that are following this pattern.
If we want to forbid/discourage users from using the {{RelOptRule}} interface
we should discuss more and take further actions.
> Impossible to create/extend RelOptRule without using deprecated APIs
> --------------------------------------------------------------------
>
> Key: CALCITE-6571
> URL: https://issues.apache.org/jira/browse/CALCITE-6571
> Project: Calcite
> Issue Type: Bug
> Affects Versions: 1.37.0
> Reporter: Stamatis Zampetakis
> Priority: Major
>
> The {{RelOptRule}} class is not deprecated but all the static factories that
> create operands were deprecated as part of CALCITE-3923.
> The deprecation link instructs the user to use {{RelRule.OperandBuilder}} butÂ
> the latter is an interface and its concrete implementations is private and
> inaccessible outside the {{RelRule}} class.
> In a nutshell, any rule that extends directly from {{RelOptRule}} is forced
> to use deprecated APIs.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)