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