Expose similar Aggregate/Emit API from InfluxQL for Slice functions. #5902
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The change does effectively the same as the previous refactor the reduce function but for the slice typed functions. Names get a little long and hard to read but I think it still clear what it going on.
The reason for even implementing these types is so that the state is stored on a reducer and the iterators become stateless. The statelessness of an iterator made composing various combination of int/float/etc simple. See the related Kapacitor PR influxdata/kapacitor#280
Q: The derivative function uses a local prev value that is supposed to carry over from window to window, but that was not isolated by group, now since a new reducer is created each time it is lost entirely. A custom reducer should fix it, but wondering if I should implement per group or leave it how it was. Relevant line https://github.com/influxdata/influxdb/blob/master/influxql/call_iterator.go#L933