[ 
https://issues.apache.org/jira/browse/CALCITE-4597?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17429640#comment-17429640
 ] 

Julian Hyde commented on CALCITE-4597:
--------------------------------------

{quote}How is this issue going?{quote}

No one is working on it.

{quote}Is this option belong to the output field of current relnode?{quote}

No, this option should be system-wide. Something like this, but with 
{{INSTANCE}} moved to {{CalciteSystemProperty}}:
{code}
enum EmptyRowTypePolicy {
  FORBIDDEN,
  DISCOURAGED,
  ALLOWED;

  public static final EmptyRowTypePolicy INSTANCE =
    Arrays.stream(values())
        .filter(p ->
            p.name().equals(System.getProperty("calcite.emptyRowTypePolicy")))
        .findFirst()
        .orElse(DISCOURAGED);
}
{code}

> Allow RelNodes to have an empty row type (zero fields)
> ------------------------------------------------------
>
>                 Key: CALCITE-4597
>                 URL: https://issues.apache.org/jira/browse/CALCITE-4597
>             Project: Calcite
>          Issue Type: Bug
>            Reporter: Julian Hyde
>            Priority: Major
>
> Add an option, {{EmptyRowTypePolicy}}, to allow creation of {{RelNode}}s 
> whose row type is empty. That is, contains zero fields.
> There are three values:
>  * {{FORBIDDEN}} - Calcite prevents empty row type. (For example, planner and 
> {{RelBuilder}} throw if they see one.) Rules must not produce empty row 
> types. Rules can assume that they will not encounter empty row types.
>  * {{DISCOURAGED}} - Empty row types are discouraged. (Planner and 
> {{RelBuilder}} will not throw if they see one.) Rules must not fail if they 
> encounter an empty row type. Rules should not produce empty row types (with 
> reasonable exceptions, such as if the input has an empty row type).
>  * {{ALLOWED}} - Empty row types are OK. All rules should handle {{RelNode}}s 
> with empty row types, and it's OK if they generate {{RelNode}}s with empty 
> row types.
> The current policy is effectively {{DISCOURAGED}}. We try not to create empty 
> RelNodes, but we don't check, and they crop up occasionally.
> After this change, and for a few releases, the policy will be {{DISCOURAGED}} 
> by default, but we will run tests in all three modes. All rules must run in 
> all modes.
> At some point in the future, we will change the default policy to 
> {{ALLOWED}}. All rules must continue to run in all modes.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to