[ 
https://issues.apache.org/jira/browse/FLINK-7206?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16134783#comment-16134783
 ] 

ASF GitHub Bot commented on FLINK-7206:
---------------------------------------

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

    https://github.com/apache/flink/pull/4355#discussion_r134135181
  
    --- Diff: 
flink-libraries/flink-table/src/main/scala/org/apache/flink/table/codegen/AggregationCodeGenerator.scala
 ---
    @@ -162,13 +172,66 @@ class AggregationCodeGenerator(
           }
         }
     
    +    def genDataViewFieldSetter(accTerm: String, specs: 
Seq[DataViewSpec[_]]): String = {
    +      if (accConfig.isDefined && accConfig.get.isStateBackedDataViews) {
    +        val setters = for (spec <- specs) yield {
    +          val field = spec.field
    +          val dataViewTerm = s"${accTerm}_${field.getName}_dataview"
    +          val fieldSetter = if (Modifier.isPublic(field.getModifiers)) {
    +            s"$accTerm.${field.getName} = $dataViewTerm;"
    +          } else {
    +            val fieldTerm = 
addReusablePrivateFieldAccess(field.getDeclaringClass, field.getName)
    +            s"${reflectiveFieldWriteAccess(fieldTerm, field, accTerm, 
dataViewTerm)};"
    +          }
    +
    +          s"""
    +             |    $fieldSetter
    +        """.stripMargin
    +        }
    +        setters.mkString("\n")
    +      } else {
    +        ""
    +      }
    +    }
    +
    +    def genCleanUpDataView: String = {
    +      if (accConfig.isDefined && accConfig.get.isStateBackedDataViews) {
    +        val cleanUpDataViews = new StringBuilder
    +        for (i <- aggs.indices) yield {
    +          val setters = for (spec <- accConfig.get.accSpecs(i)) yield {
    +            val dataViewTerm = s"acc${i}_${spec.field.getName}_dataview"
    +            val cleanUp =
    +              s"""
    +                |    $dataViewTerm.clear();
    +              """.stripMargin
    +            cleanUpDataViews.append(cleanUp)
    +          }
    +        }
    +
    +        cleanUpDataViews.toString()
    +      } else {
    +        ""
    +      }
    +    }
    +
    +    def genInitialize: String = {
    +
    +        j"""
    +           |  public final void initialize(
    --- End diff --
    
    I would like to rename the method name to `open(ctx)`. So that we can use 
the `reusableOpenStatements` and `reuseOpenCode()` of `CodeGenerator` to 
generate the content of `open`.  Currently, the `genInitialize` is somewhat 
ambiguous to `reuseInitCode()`. 


> Implementation of DataView to support state access for UDAGG
> ------------------------------------------------------------
>
>                 Key: FLINK-7206
>                 URL: https://issues.apache.org/jira/browse/FLINK-7206
>             Project: Flink
>          Issue Type: Sub-task
>          Components: Table API & SQL
>            Reporter: Kaibo Zhou
>            Assignee: Kaibo Zhou
>
> Implementation of MapView and ListView to support state access for UDAGG.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to