@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, unorderedpublic static final RewriteMinusAllRule INSTANCE
protected RewriteMinusAllRule(RewriteMinusAllRule.RewriteMinusAllRuleConfig config)
Copyright © 2014–2025 The Apache Software Foundation. All rights reserved.