forked from apache/flink
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[FLINK-11896] [table-planner-blink] Introduce stream physical nodes (a…
- Loading branch information
1 parent
bdbb922
commit 2741423
Showing
51 changed files
with
2,848 additions
and
142 deletions.
There are no files selected for viewing
41 changes: 41 additions & 0 deletions
41
...flink-table-planner-blink/src/main/java/org/apache/flink/table/plan/PartialFinalType.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
/* | ||
* Licensed to the Apache Software Foundation (ASF) under one | ||
* or more contributor license agreements. See the NOTICE file | ||
* distributed with this work for additional information | ||
* regarding copyright ownership. The ASF licenses this file | ||
* to you under the Apache License, Version 2.0 (the | ||
* "License"); you may not use this file except in compliance | ||
* with the License. You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
package org.apache.flink.table.plan; | ||
|
||
/** | ||
* Enumerations for partial final aggregate types. | ||
* | ||
* @see org.apache.flink.table.plan.rules.physical.stream.SplitAggregateRule | ||
*/ | ||
public enum PartialFinalType { | ||
/** | ||
* partial aggregate type represents partial-aggregation, | ||
* which produces a partial distinct aggregated result based on group key and bucket number. | ||
*/ | ||
PARTIAL, | ||
/** | ||
* final aggregate type represents final-aggregation, | ||
* which produces final result based on the partially distinct aggregated result. | ||
*/ | ||
FINAL, | ||
/** | ||
* the aggregate which has not been split. | ||
*/ | ||
NONE | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
78 changes: 78 additions & 0 deletions
78
...er-blink/src/main/scala/org/apache/flink/table/plan/nodes/common/CommonPhysicalJoin.scala
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
/* | ||
* Licensed to the Apache Software Foundation (ASF) under one | ||
* or more contributor license agreements. See the NOTICE file | ||
* distributed with this work for additional information | ||
* regarding copyright ownership. The ASF licenses this file | ||
* to you under the Apache License, Version 2.0 (the | ||
* "License"); you may not use this file except in compliance | ||
* with the License. You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
package org.apache.flink.table.plan.nodes.common | ||
|
||
import org.apache.flink.table.plan.FlinkJoinRelType | ||
import org.apache.flink.table.plan.nodes.physical.FlinkPhysicalRel | ||
import org.apache.flink.table.plan.util.{FlinkRelOptUtil, RelExplainUtil} | ||
|
||
import org.apache.calcite.rel.RelWriter | ||
import org.apache.calcite.rel.`type`.{RelDataType, RelDataTypeField} | ||
import org.apache.calcite.rel.core.{Join, SemiJoin} | ||
import org.apache.calcite.sql.validate.SqlValidatorUtil | ||
import org.apache.calcite.util.mapping.IntPair | ||
|
||
import java.util | ||
import java.util.Collections | ||
|
||
import scala.collection.JavaConversions._ | ||
|
||
/** | ||
* Base physical class for flink [[Join]]. | ||
*/ | ||
trait CommonPhysicalJoin extends Join with FlinkPhysicalRel { | ||
|
||
lazy val (joinInfo, filterNulls) = { | ||
val filterNulls = new util.ArrayList[java.lang.Boolean] | ||
val joinInfo = FlinkRelOptUtil.createJoinInfo(getLeft, getRight, getCondition, filterNulls) | ||
(joinInfo, filterNulls.map(_.booleanValue()).toArray) | ||
} | ||
|
||
lazy val keyPairs: List[IntPair] = joinInfo.pairs.toList | ||
|
||
// TODO supports FlinkJoinRelType.ANTI | ||
lazy val flinkJoinType: FlinkJoinRelType = this match { | ||
case sj: SemiJoin => FlinkJoinRelType.SEMI | ||
case j: Join => FlinkJoinRelType.toFlinkJoinRelType(getJoinType) | ||
case _ => throw new IllegalArgumentException(s"Illegal join node: ${this.getRelTypeName}") | ||
} | ||
|
||
lazy val inputRowType: RelDataType = this match { | ||
case sj: SemiJoin => | ||
// Combines inputs' RowType, the result is different from SemiJoin's RowType. | ||
SqlValidatorUtil.deriveJoinRowType( | ||
sj.getLeft.getRowType, | ||
sj.getRight.getRowType, | ||
getJoinType, | ||
sj.getCluster.getTypeFactory, | ||
null, | ||
Collections.emptyList[RelDataTypeField] | ||
) | ||
case j: Join => getRowType | ||
case _ => throw new IllegalArgumentException(s"Illegal join node: ${this.getRelTypeName}") | ||
} | ||
|
||
override def explainTerms(pw: RelWriter): RelWriter = { | ||
pw.input("left", getLeft).input("right", getRight) | ||
.item("joinType", RelExplainUtil.joinTypeToString(flinkJoinType)) | ||
.item("where", | ||
RelExplainUtil.expressionToString(getCondition, inputRowType, getExpressionString)) | ||
.item("select", getRowType.getFieldNames.mkString(", ")) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.