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

Reply via email to