[
https://issues.apache.org/jira/browse/CALCITE-5889?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
LakeShen updated CALCITE-5889:
------------------------------
Description:
There are many projects that implement optimizers based on Calcite,our
optimizer is also based on Calcite.
Calcite has a lot of good rules in CoreRules.It has UnionToDistinctRule and
IntersectToDistinctRule RelRule ,UnionToDistinctRule is that converts Union(all
= false) to Union(all=true) + Aggregate,IntersectToDistinctRule is that
converts Intersect(all=false) to Union(all=true) + Aggregate + Filter.None of
these rules translate Minus to other RelNode combinations.
Normally, a computation engine does not have a Minus operator, so it is common
to convert Minus to some other relational algebra combination in the
optimizer.For example,in presto,it has the ImplementIntersectAndExceptAsUnionÂ
PlanOptimizer that converts Minus to into UNION ALL..GROUP BY...WHERE. In
flink,it has the ReplaceMinusWithAntiJoinRule RelOptRule. In dremio-oss,it has
MinusToJoin RelOptRule.All of this rules,convert the Minus to other composition
of relational algebra.
Since there are no optimization rules for dealing with minus in calcite, users
of calcite generally need to write their own optimization rules for dealing
with Minus.
was:
There are many projects that implement optimizers based on Calcite,our
optimizer is also based on Calcite.
Calcite has a lot of good rules in CoreRules.It has UnionToDistinctRule and
IntersectToDistinctRule RelRule ,UnionToDistinctRule is that converts Union(all
= false) to Union(all=true) + Aggregate,IntersectToDistinctRule is that
converts Intersect(all=false) to Union(all=true) + Aggregate + Filter.None of
these rules translate Minus to other RelNode combinations.
Normally, a computation engine does not have a Minus operator, so it is common
to convert Minus to some other relational algebra combination in the
optimizer.For example,in Presto,it has the ImplementIntersectAndExceptAsUnionÂ
PlanOptimizer that convertÂ
> Add the RelRule that converts Minus to into UNION ALL..GROUP BY...WHERE
> -----------------------------------------------------------------------
>
> Key: CALCITE-5889
> URL: https://issues.apache.org/jira/browse/CALCITE-5889
> Project: Calcite
> Issue Type: New Feature
> Components: core
> Reporter: LakeShen
> Priority: Major
> Fix For: 1.36.0
>
>
> There are many projects that implement optimizers based on Calcite,our
> optimizer is also based on Calcite.
> Calcite has a lot of good rules in CoreRules.It has UnionToDistinctRule and
> IntersectToDistinctRule RelRule ,UnionToDistinctRule is that converts
> Union(all = false) to Union(all=true) + Aggregate,IntersectToDistinctRule is
> that converts Intersect(all=false) to Union(all=true) + Aggregate +
> Filter.None of these rules translate Minus to other RelNode combinations.
> Normally, a computation engine does not have a Minus operator, so it is
> common to convert Minus to some other relational algebra combination in the
> optimizer.For example,in presto,it has the ImplementIntersectAndExceptAsUnionÂ
> PlanOptimizer that converts Minus to into UNION ALL..GROUP BY...WHERE. In
> flink,it has the ReplaceMinusWithAntiJoinRule RelOptRule. In dremio-oss,it
> has MinusToJoin RelOptRule.All of this rules,convert the Minus to other
> composition of relational algebra.
> Since there are no optimization rules for dealing with minus in calcite,
> users of calcite generally need to write their own optimization rules for
> dealing with Minus.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)