Uploaded image for project: 'Calcite'
  1. Calcite
  2. CALCITE-3630

Improve ReduceExpressionsRule

Rank to TopRank to BottomVotersWatch issueWatchersConvert to sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

    Details

      Description

      In FilterReduceExpressionsRule, if the expression is a IS [NOT] NULL on a non-nullable column, then we can either remove the filter or replace it with an Empty(namely reduceNotNullableFilter). In such a case, we can set importance to 0 to reduce search space.

       

      // code placeholder
        private void reduceNotNullableFilter(
            RelOptRuleCall call,
            Filter filter,
            RexNode rexNode,
            boolean reverse) {
          // If the expression is a IS [NOT] NULL on a non-nullable
          // column, then we can either remove the filter or replace
          // it with an Empty.
          boolean alwaysTrue;
          switch (rexNode.getKind()) {
          case IS_NULL:
          case IS_UNKNOWN:
            alwaysTrue = false;
            break;
          case IS_NOT_NULL:
            alwaysTrue = true;
            break;
          default:
            return;
          }
          if (reverse) {
            alwaysTrue = !alwaysTrue;
          }
          RexNode operand = ((RexCall) rexNode).getOperands().get(0);
          if (operand instanceof RexInputRef) {
            RexInputRef inputRef = (RexInputRef) operand;
            if (!inputRef.getType().isNullable()) {
              if (alwaysTrue) {
                call.transformTo(filter.getInput());
              } else {
                call.transformTo(createEmptyRelOrEquivalent(call, filter));
              }
            }
          }
        }
      }
      

       

        Attachments

          Activity

          $i18n.getText('security.level.explanation', $currentSelection) Viewable by All Users
          Cancel

            People

            • Assignee:
              Chunwei Lei Chunwei Lei
              Reporter:
              Chunwei Lei Chunwei Lei

              Dates

              • Created:
                Updated:
                Resolved:

                Time Tracking

                Estimated:
                Original Estimate - Not Specified
                Not Specified
                Remaining:
                Remaining Estimate - 0h
                0h
                Logged:
                Time Spent - 1.5h
                1.5h

                  Issue deployment