fix: support WindowStart() and WindowEnd() in pull queries #4435
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.
Description
fixes: #4015
At present
WindowStart()
andWindowEnd()
UDAFs are special cased. This special casing was not being applied to pull queries. This change corrects this.Consider:
Before this change the pull query would return
null
values forWSTART
andWEND
, even though the data was correctly populated in theTWEET_LANG
topic. With this change the correct values forWSTART
andWEND
are returned.How to review
The main fix is in
StreamAggregateBuilder
, which now applies a suitablemap
call that will apply the special processing to any pull query.Adding the
map
call highlighted that the wrong key was being passed to the transformers provided in themap
call when processing windowed keys: it was passing the raw key, i.e.Struct
, not theWindowed<Struct>
key. Fixing this required:WindowedRow
to take theWindowed<Struct>
key.KsMaterializedSessionTable
to use the windowed key to build the windowed row.KsMaterializedWindowTable
to construct aTimeWindow
and use this to build the windowed row.The rest are test changes.
Testing done
Suitable test added to QTT.
Reviewer checklist