[
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)