[
https://issues.apache.org/jira/browse/FLINK-6091?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15973657#comment-15973657
]
ASF GitHub Bot commented on FLINK-6091:
---------------------------------------
Github user fhueske commented on a diff in the pull request:
https://github.com/apache/flink/pull/3733#discussion_r112079294
--- Diff:
flink-libraries/flink-table/src/main/scala/org/apache/flink/table/runtime/aggregate/GroupAggProcessFunction.scala
---
@@ -84,16 +109,38 @@ class GroupAggProcessFunction(
}
// Set aggregate result to the final output
- i = 0
- while (i < aggregates.length) {
- val index = groupings.length + i
- val accumulator = accumulators.getField(i).asInstanceOf[Accumulator]
- aggregates(i).accumulate(accumulator,
input.getField(aggFields(i)(0)))
- output.setField(index, aggregates(i).getValue(accumulator))
- i += 1
+ if (input.command == Command.Delete) {
+ i = 0
+ while (i < aggregates.length) {
+ val index = groupings.length + i
+ val accumulator =
accumulators.getField(i).asInstanceOf[Accumulator]
+ aggregates(i).retract(accumulator, input.getField(aggFields(i)(0)))
+ output.setField(index, aggregates(i).getValue(accumulator))
+ i += 1
+ }
+ } else {
+ i = 0
+ while (i < aggregates.length) {
+ val index = groupings.length + i
+ val accumulator =
accumulators.getField(i).asInstanceOf[Accumulator]
+ aggregates(i).accumulate(accumulator,
input.getField(aggFields(i)(0)))
+ output.setField(index, aggregates(i).getValue(accumulator))
+ i += 1
+ }
}
- state.update(accumulators)
+ // if previous is not null, do retraction process
+ if (null != previous) {
--- End diff --
check against `generateRetraction`. The check can be optimized because
`generateRetraction`is a `val` and hence `final`.
> Implement and turn on the retraction for aggregates
> ---------------------------------------------------
>
> Key: FLINK-6091
> URL: https://issues.apache.org/jira/browse/FLINK-6091
> Project: Flink
> Issue Type: Sub-task
> Components: Table API & SQL
> Reporter: Shaoxuan Wang
> Assignee: Hequn Cheng
>
> Implement functions for generating and consuming retract messages for
> different aggregates.
> 1. add delete/add property to Row
> 2. implement functions for generating retract messages for unbounded groupBy
> 3. implement functions for handling retract messages for different aggregates.
> 4. handle retraction messages in CommonCorrelate and CommonCalc (retain
> Delete property).
> Note: Currently, only unbounded groupby generates retraction and it is
> working under unbounded and processing time mode. Hence, retraction is only
> supported for unbounded and processing time aggregations so far. We can add
> more retraction support later.
> supported now: unbounded groupby, unbounded and processing time over window
> unsupported now: group window, event time or bounded over window.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)