|Constructor and Description|
|Modifier and Type||Method and Description|
It uses the input watermark expression to generate the
any, convert, convert, convertList, convertOperand, convertOperand, equals, equals, getOperand, getOperands, getOutConvention, getOutTrait, hashCode, matches, none, onMatch, operand, operand, operand, operand, operand, operandJ, operandJ, some, toString, unordered
public PushWatermarkIntoTableSourceScanRuleBase(org.apache.calcite.plan.RelOptRuleOperand operand, String description)
protected org.apache.flink.table.planner.plan.nodes.logical.FlinkLogicalTableSourceScan getNewScan(org.apache.flink.table.planner.plan.nodes.logical.FlinkLogicalWatermarkAssigner watermarkAssigner, org.apache.calcite.rex.RexNode watermarkExpr, org.apache.flink.table.planner.plan.nodes.logical.FlinkLogicalTableSourceScan scan, TableConfig tableConfig, boolean useWatermarkAssignerRowType)
WatermarkGeneratorSupplier. After the
WatermarkStrategyis pushed into the scan, it will build a new scan. However, when
FlinkLogicalWatermarkAssigneris the parent of the
FlinkLogicalTableSourceScanit should modify the rowtime type to keep the type of plan is consistent. In other cases, it just keep the data type of the scan as same as before and leave the work when rewriting the projection.
NOTES: the row type of the scan is not always as same as the watermark assigner. Because the scan will not add the rowtime column into the row when pushing the watermark assigner into the scan. In some cases, query may have computed columns defined on rowtime column. If modifying the type of the rowtime(with time attribute), it will also influence the type of the computed column. Therefore, if the watermark assigner is not the parent of the scan, set the type of the scan as before and leave the work to projection.
protected boolean supportsWatermarkPushDown(org.apache.flink.table.planner.plan.nodes.logical.FlinkLogicalTableSourceScan scan)
Copyright © 2014–2021 The Apache Software Foundation. All rights reserved.