Github user fhueske commented on a diff in the pull request:

    https://github.com/apache/flink/pull/3808#discussion_r114888441
  
    --- Diff: 
flink-libraries/flink-table/src/main/scala/org/apache/flink/table/plan/nodes/CommonCalc.scala
 ---
    @@ -35,21 +34,30 @@ import scala.collection.JavaConverters._
     trait CommonCalc {
     
       private[flink] def functionBody(
    -      generator: CodeGenerator,
    -      inputType: TypeInformation[Row],
    -      rowType: RelDataType,
    -      calcProgram: RexProgram,
    -      config: TableConfig)
    +     generator: CodeGenerator,
    +     inputSchema: RowSchema,
    +     returnSchema: RowSchema,
    +     calcProgram: RexProgram,
    +     config: TableConfig)
         : String = {
     
    -    val returnType = FlinkTypeFactory.toInternalRowTypeInfo(rowType)
    +    val expandedExpressions = calcProgram
    +      .getProjectList
    +      .map(expr => calcProgram.expandLocalRef(expr))
    +      // time indicator fields must not be part of the code generation
    +      .filter(expr => !FlinkTypeFactory.isTimeIndicatorType(expr.getType))
    +      // update indices
    +      .map(expr => inputSchema.mapRexNode(expr))
    +
    +    val condition = if (calcProgram.getCondition != null) {
    +      
inputSchema.mapRexNode(calcProgram.expandLocalRef(calcProgram.getCondition))
    --- End diff --
    
    Should we validate that a filter condition does not reference a time 
indicator?
    This
    ```
    .toTable(tEnv, 'a, 'b, 'c, 'd.rowtime)
          .filter('d === 'd + 4.millis)
          .select('a, 'b, 'c)
    ```
    yields
    ```
    org.apache.flink.table.api.TableException: Invalid access to a logical 
field.
      at 
org.apache.flink.table.plan.schema.RowSchema.mapIndex(RowSchema.scala:127)
    ```
    
    A better error message should explain that time indicators cannot be used 
in conditions yet.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

Reply via email to