[ https://issues.apache.org/jira/browse/CALCITE-3166?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16876634#comment-16876634 ]
Julian Hyde edited comment on CALCITE-3166 at 7/2/19 3:25 AM: -------------------------------------------------------------- {quote}Does this mean we should always make a {{RelBuilder.Config}} instance into the {{Context}} now ? This api seems not that concise to use.{quote} The constructor for {{RelBuilder}} takes a {{Context}}, and i don't want to add other constructors. {{Context}} is capable of wrapping any other objects that we want to pass in - such as {{RelNode}} factories and a {{RexSimplifier}}. I don't expect people to need to customize {{RelBuilder.Config}} very often, so the API doesn't need to be concise. The main use case is to disable features because of bugs. We shouldn't be putting features into {{RelBuilder}} that are not globally applicable. If there are optional features - e.g. whether to decorrelate a sub-query - they are better packaged as rules. was (Author: julianhyde): {quote}Does this mean we should always make a {{RelBuilder.Config}} instance into the {{Context}} now ? This api seems not that concise to use.{quote} The constructor for {{RelBuilder}} takes a {{Context}}, and i don't want to add other constructors. I don't expect people to need to customize {{RelBuilder.Config}} very often, so the API doesn't need to be concise. The main use case is to disable features because of bugs. We shouldn't be putting features into {{RelBuilder}} that are not globally applicable. If there are optional features - e.g. whether to decorrelate a sub-query - they are better packaged as rules. > Make RelBuilder configurable > ---------------------------- > > Key: CALCITE-3166 > URL: https://issues.apache.org/jira/browse/CALCITE-3166 > Project: Calcite > Issue Type: Bug > Reporter: Julian Hyde > Assignee: Julian Hyde > Priority: Major > Labels: pull-request-available > Fix For: 1.21.0 > > > Make {{RelBuilder}} configurable, so that particular optimizations can easily > be turned off. > I propose to add a class {{RelBuilder.Config}}, which is immutable and has a > public final field for each configuration property; also a class > {{RelBuilder.ConfigBuilder}} to create a config. > {{RelBuilder.create(FrameworkConfig frameworkConfig)}} will get a config by > calling {{frameworkConfig.getContext().unwrap(RelBuilder.Config.class)}}. -- This message was sent by Atlassian JIRA (v7.6.3#76005)