[ https://issues.apache.org/jira/browse/CALCITE-3723?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17013972#comment-17013972 ]
Shuo Cheng commented on CALCITE-3723: ------------------------------------- In current design, when we create a `Hintable` relnode through `RelBuilder`, we have to call `withHints` method to attach specific hints to the relnode, which is also error-prone. So +1 to deprecate the old constructor of the `Hintable` relnode and make corresponding changes to relFactory and `RelBuilder`. > Following the change to add hints to RelNode, deprecate the old constructors > ---------------------------------------------------------------------------- > > Key: CALCITE-3723 > URL: https://issues.apache.org/jira/browse/CALCITE-3723 > Project: Calcite > Issue Type: Bug > Reporter: Julian Hyde > Priority: Major > > In CALCITE-482 and CALCITE-3590 we added constructors for various sub-classes > RelNode ({{LogicalProject}}, {{LogicalAggregate}}, and others) that take a > list of hints. But now those classes have two constructors. Our practice has > been to have only one (public, non-deprecated) constructor in each RelNode > class. (Otherwise we would have dozens.) So, please deprecate the old > constructors and change code that uses them. > Can we do this before 1.22? > Also note that the new and old constructors have exactly the same comment. > You should avoid that. But in this case, just remove the comment of the > deprecated constructor. > The non-hints constructor does {{new ArrayList<>()}}. Please change to use > {{ImmutableList.of()}}, which saves a malloc. > cc [~danny0405] and [~icshuo]. -- This message was sent by Atlassian Jira (v8.3.4#803005)