[ 
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)

Reply via email to