[ 
https://issues.apache.org/jira/browse/CALCITE-4721?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Enze Liu updated CALCITE-4721:
------------------------------
    Labels: pull-requests-available  (was: pull-request-available)

> SqlSelect's setOperand method cannot set `hints`, failed with AssertionError
> ----------------------------------------------------------------------------
>
>                 Key: CALCITE-4721
>                 URL: https://issues.apache.org/jira/browse/CALCITE-4721
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.27.0
>            Reporter: Enze Liu
>            Priority: Minor
>              Labels: pull-requests-available
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> in SqlSelect, 
> getOperandList() returns with 
> {code:java}
> return ImmutableNullableList.of(keywordList, selectList, from, where,
>  groupBy, having, windowDecls, orderBy, offset, fetch, hints);
> {code}
> while we trying to setOperand() by the returned list, we have AssertionError.
> seems the setOperand only set the first ten operands. 
> {code:java}
>   @Override public void setOperand(int i, @Nullable SqlNode operand) {
>     switch (i) {
>     case 0:
>       keywordList = requireNonNull((SqlNodeList) operand);
>       break;
>     case 1:
>       selectList = requireNonNull((SqlNodeList) operand);
>       break;
>     case 2:
>       from = operand;
>       break;
>     case 3:
>       where = operand;
>       break;
>     case 4:
>       groupBy = (SqlNodeList) operand;
>       break;
>     case 5:
>       having = operand;
>       break;
>     case 6:
>       windowDecls = requireNonNull((SqlNodeList) operand);
>       break;
>     case 7:
>       orderBy = (SqlNodeList) operand;
>       break;
>     case 8:
>       offset = operand;
>       break;
>     case 9:
>       fetch = operand;
>       break;
>     default:
>       throw new AssertionError(i);
>     }
>   }
> {code}
>  
> a minor modification could be:
> {code:java}
>   @Override public void setOperand(int i, @Nullable SqlNode operand) {
>     switch (i) {
>     case 0:
>       keywordList = requireNonNull((SqlNodeList) operand);
>       break;
>     case 1:
>       selectList = requireNonNull((SqlNodeList) operand);
>       break;
>     case 2:
>       from = operand;
>       break;
>     case 3:
>       where = operand;
>       break;
>     case 4:
>       groupBy = (SqlNodeList) operand;
>       break;
>     case 5:
>       having = operand;
>       break;
>     case 6:
>       windowDecls = requireNonNull((SqlNodeList) operand);
>       break;
>     case 7:
>       orderBy = (SqlNodeList) operand;
>       break;
>     case 8:
>       offset = operand;
>       break;
>     case 9:
>       fetch = operand;
>       break;
>     case 10: 
>       hints = operand; 
>       break;
>     default:
>       throw new AssertionError(i);
>     }
>   }
> {code}
>   



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

Reply via email to