Maryann Xue created CALCITE-1057:
------------------------------------
Summary: Provide an interface to allow for a custom
RelMetadataProvider in getting the standard Program
Key: CALCITE-1057
URL: https://issues.apache.org/jira/browse/CALCITE-1057
Project: Calcite
Issue Type: Improvement
Reporter: Maryann Xue
Assignee: Maryann Xue
Priority: Minor
The Programs class has a static method standard() used by the default Calcite
driver. So far Calcite-Phoenix is using the same sql prepare logic with some
slight customization, like plugging in a set of its own rules. The static
standard(), though, does not work properly for Phoenix since some sub-programs
it returns are initiated with the default RelMetadataProvider while Phoenix
needs to plug-in its own, otherwise it just could not work.
{code}
/** Program that converts filters and projects to {@link Calc}s. */
public static final Program CALC_PROGRAM =
hep(CALC_RULES, true, new DefaultRelMetadataProvider());
/** Program that expands sub-queries. */
public static final Program SUB_QUERY_PROGRAM =
hep(
ImmutableList.of((RelOptRule) SubQueryRemoveRule.FILTER,
SubQueryRemoveRule.PROJECT,
SubQueryRemoveRule.JOIN), true, new DefaultRelMetadataProvider());
{code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)