[
https://issues.apache.org/jira/browse/CALCITE-4721?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Julian Hyde updated CALCITE-4721:
---------------------------------
Labels: pull-request-available (was: pull-requests-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-request-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)