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

AggregateJoinTransposeRule throws error for unique under aggregate keys when generating merged calls

VotersWatch issueWatchersLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.19.0
    • 1.20.0
    • None

    Description

      RelOptRulesTest:

        @Test public void testPushAggregateThroughJoinOnEmptyLogicalValuesError() {
          final HepProgram preProgram = new HepProgramBuilder()
              .addRuleInstance(AggregateProjectMergeRule.INSTANCE)
              .addRuleInstance(ReduceExpressionsRule.FilterReduceExpressionsRule.FILTER_INSTANCE)
              .build();
      
          final HepProgram program = new HepProgramBuilder()
              .addRuleInstance(AggregateJoinTransposeRule.EXTENDED)
              .build();
      
          final String sql =
              "select count(*) volume, sum(C1.sal) C1_sum_sal " +
              "from (select sal, ename from sales.emp where 1=2) C1 " +
              "inner join (select ename from sales.emp) C2   " +
              "on C1.ename = C2.ename ";
          sql(sql).withPre(preProgram).with(program).check();
        }
      

      Error:

      java.lang.IllegalArgumentException: Cannot infer return type for *; operand types: [VARCHAR(20), BIGINT]
      
      	at org.apache.calcite.sql.SqlOperator.inferReturnType(SqlOperator.java:474)
      	at org.apache.calcite.rex.RexBuilder.deriveReturnType(RexBuilder.java:276)
      	at org.apache.calcite.rex.RexBuilder.makeCall(RexBuilder.java:250)
      	at org.apache.calcite.sql.SqlSplittableAggFunction$AbstractSumSplitter.topSplit(SqlSplittableAggFunction.java:298)
      	at org.apache.calcite.rel.rules.AggregateJoinTransposeRule.onMatch(AggregateJoinTransposeRule.java:342)
      	at org.apache.calcite.plan.AbstractRelOptPlanner.fireRule(AbstractRelOptPlanner.java:319)
      	at org.apache.calcite.plan.hep.HepPlanner.applyRule(HepPlanner.java:559)
      	at org.apache.calcite.plan.hep.HepPlanner.applyRules(HepPlanner.java:418)
      	at org.apache.calcite.plan.hep.HepPlanner.executeInstruction(HepPlanner.java:255)
      	at org.apache.calcite.plan.hep.HepInstruction$RuleInstance.execute(HepInstruction.java:127)
      

      Attachments

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            danny0405 Danny Chen
            anha Anton Haidai
            Votes:
            1 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Time Tracking

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

                Slack

                  Issue deployment