YuvalItzchakov commented on pull request #15307: URL: https://github.com/apache/flink/pull/15307#issuecomment-813972508
@fsk119 Given the following test: ```scala @Test def testComputedColumnPushdownAcrossWatermark() { val ddl3 = """ |CREATE TABLE WithWatermark ( | event_time TIMESTAMP(3), | name STRING, | lowercase_name AS LOWER(name), | WATERMARK FOR event_time AS event_time |) WITH ( | 'connector' = 'values', | 'bounded' = 'false', | 'enable-watermark-push-down' = 'true', | 'filterable-fields' = 'name', | 'disable-lookup' = 'true' |) |""".stripMargin util.tableEnv.executeSql(ddl3) util.verifyExecPlan( "SELECT * FROM WithWatermark WHERE lowercase_name = 'foo'") } ``` When running it, I receive an `AssertionException` from calcite since the virtual column is being ignored: java.lang.AssertionError: Cannot add expression of different type to set: set type is RecordType(TIME ATTRIBUTE(ROWTIME) event_time, VARCHAR(2147483647) CHARACTER SET "UTF-16LE" name, VARCHAR(2147483647) CHARACTER SET "UTF-16LE" lowercase_name) NOT NULL expression type is RecordType(TIMESTAMP(3) event_time, VARCHAR(2147483647) CHARACTER SET "UTF-16LE" name) NOT NULL set is rel#152:FlinkLogicalCalc.LOGICAL.any.None: 0.[NONE].[NONE](input=HepRelVertex#149,select=Reinterpret(event_time) AS event_time, name, LOWER(name) AS lowercase_name,where==(UPPER(name), _UTF-16LE'FOO':VARCHAR(2147483647) CHARACTER SET "UTF-16LE")) expression is FlinkLogicalTableSourceScan(table=[[default_catalog, default_database, WithWatermark, watermark=[$0], filter=[equals(upper(name), 'FOO')]]], fields=[event_time, name]) at org.apache.calcite.plan.RelOptUtil.verifyTypeEquivalence(RelOptUtil.java:381) at org.apache.calcite.plan.hep.HepRuleCall.transformTo(HepRuleCall.java:58) at org.apache.calcite.plan.RelOptRuleCall.transformTo(RelOptRuleCall.java:268) at org.apache.calcite.plan.RelOptRuleCall.transformTo(RelOptRuleCall.java:283) at org.apache.flink.table.planner.plan.rules.logical.PushFilterInCalcIntoTableSourceScanRule.pushFilterIntoScan(PushFilterInCalcIntoTableSourceScanRule.java:121) at org.apache.flink.table.planner.plan.rules.logical.PushFilterInCalcIntoTableSourceScanRule.onMatch(PushFilterInCalcIntoTableSourceScanRule.java:85) at org.apache.calcite.plan.AbstractRelOptPlanner.fireRule(AbstractRelOptPlanner.java:333) at org.apache.calcite.plan.hep.HepPlanner.applyRule(HepPlanner.java:542) at org.apache.calcite.plan.hep.HepPlanner.applyRules(HepPlanner.java:407) at org.apache.calcite.plan.hep.HepPlanner.executeInstruction(HepPlanner.java:243) at org.apache.calcite.plan.hep.HepInstruction$RuleInstance.execute(HepInstruction.java:127) at org.apache.calcite.plan.hep.HepPlanner.executeProgram(HepPlanner.java:202) at org.apache.calcite.plan.hep.HepPlanner.findBestExp(HepPlanner.java:189) at org.apache.flink.table.planner.plan.optimize.program.FlinkHepProgram.optimize(FlinkHepProgram.scala:69) I'm not sure if this is at fault of the `TestValuesScanTableSourceWithWatermarkPushDown` for ignoring the virtual column or not? -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org