You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Maryann Xue (JIRA)" <ji...@apache.org> on 2016/01/14 03:23:39 UTC
[jira] [Created] (CALCITE-1057) Provide an interface to allow for a
custom RelMetadataProvider in getting the standard Program
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)