[ https://issues.apache.org/jira/browse/FLINK-7337?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16117036#comment-16117036 ]
ASF GitHub Bot commented on FLINK-7337: --------------------------------------- Github user twalthr commented on a diff in the pull request: https://github.com/apache/flink/pull/4488#discussion_r131717969 --- Diff: flink-libraries/flink-table/src/main/scala/org/apache/flink/table/codegen/calls/ScalarOperators.scala --- @@ -937,15 +935,40 @@ object ScalarOperators { } } - def generateConcat( - method: Method, - operands: Seq[GeneratedExpression]): GeneratedExpression = { + def generateConcat(operands: Seq[GeneratedExpression]): GeneratedExpression = { - generateCallIfArgsNotNull(false, STRING_TYPE_INFO, operands) { - (terms) =>s"${qualifyMethod(method)}(${terms.mkString(", ")})" + generateCallIfArgsNotNull(true, STRING_TYPE_INFO, operands) { + (terms) =>s"${qualifyMethod(BuiltInMethods.CONCAT)}(${terms.mkString(", ")})" } } + def generateConcatWs(operands: Seq[GeneratedExpression]): GeneratedExpression = { + + val resultTerm = newName("result") + val nullTerm = newName("isNull") + val defaultValue = primitiveDefaultValue(Types.STRING) + + val operatorCode = + s""" + |${operands.map(_.code).mkString("\n")} + | + |String $resultTerm; + |boolean $nullTerm; + |if (${operands.head.nullTerm}) { + | $nullTerm = true; + | $resultTerm = $defaultValue; + |} else { + | + | ${operands.tail.map(o => s"if (${o.nullTerm}) ${o.resultTerm} = null;").mkString("\n")} --- End diff -- I would not reassign a `resultTerm`. Actually they should be declared `final` for optimization. We should do this in the near future. > Refactor handling of time indicator attributes > ---------------------------------------------- > > Key: FLINK-7337 > URL: https://issues.apache.org/jira/browse/FLINK-7337 > Project: Flink > Issue Type: Improvement > Components: Table API & SQL > Affects Versions: 1.4.0 > Reporter: Fabian Hueske > Assignee: Fabian Hueske > > After a [discussion on the dev mailing > list|https://lists.apache.org/thread.html/735d55f9022df8ff73566a9f1553e14be94f8443986ad46559b35869@%3Cdev.flink.apache.org%3E] > I propose the following changes to the current handling of time indicator > attributes: > * Remove the separation of logical and physical row type. > ** Hold the event-time timestamp as regular Long field in Row > ** Represent the processing-time indicator type as a null-valued field in Row > (1 bit overhead) > * Remove materialization of event-time timestamps because timestamp is > already accessible in Row. > * Add {{ProcessFunction}} to set timestamp into the timestamp field of a > {{StreamRecord}}. -- This message was sent by Atlassian JIRA (v6.4.14#64029)