@Value.Enclosing public class RewriteMinusAllRule extends org.apache.calcite.plan.RelRule<RewriteMinusAllRule.RewriteMinusAllRuleConfig>
Minus
operator using a combination of union all, aggregate and table
function.
Original Query : SELECT c1 FROM ut1 EXCEPT ALL SELECT c1 FROM ut2
Rewritten Query:
SELECT c1 FROM ( SELECT c1, sum_val FROM ( SELECT c1, sum(vcol_marker)
AS sum_val FROM ( SELECT c1, 1L as vcol_marker FROM ut1 UNION ALL SELECT c1, -1L as vcol_marker
FROM ut2 ) AS union_all GROUP BY union_all.c1 ) WHERE sum_val > 0 )
LATERAL TABLE(replicate_row(sum_val, c1)) AS T(c1)
Only handle the case of input size 2.
Modifier and Type | Class and Description |
---|---|
static interface |
RewriteMinusAllRule.RewriteMinusAllRuleConfig
Rule configuration.
|
org.apache.calcite.plan.RelRule.Config, org.apache.calcite.plan.RelRule.Done, org.apache.calcite.plan.RelRule.MatchHandler<R extends org.apache.calcite.plan.RelOptRule>, org.apache.calcite.plan.RelRule.OperandBuilder, org.apache.calcite.plan.RelRule.OperandDetailBuilder<R extends org.apache.calcite.rel.RelNode>, org.apache.calcite.plan.RelRule.OperandTransform
Modifier and Type | Field and Description |
---|---|
static RewriteMinusAllRule |
INSTANCE |
Modifier | Constructor and Description |
---|---|
protected |
RewriteMinusAllRule(RewriteMinusAllRule.RewriteMinusAllRuleConfig config) |
Modifier and Type | Method and Description |
---|---|
boolean |
matches(org.apache.calcite.plan.RelOptRuleCall call) |
void |
onMatch(org.apache.calcite.plan.RelOptRuleCall call) |
any, convert, convert, convertList, convertOperand, convertOperand, equals, equals, getOperand, getOperands, getOutConvention, getOutTrait, hashCode, none, operand, operand, operand, operand, operand, operandJ, operandJ, some, toString, unordered
public static final RewriteMinusAllRule INSTANCE
protected RewriteMinusAllRule(RewriteMinusAllRule.RewriteMinusAllRuleConfig config)
Copyright © 2014–2024 The Apache Software Foundation. All rights reserved.