[FLINK-38866][flink-table-planner] Passing timestamp precision from window strategy to window operators to support non-compact BinaryRowData timestamps #27386
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.
What is the purpose of the change
BinaryRowDatastores timestamps in a non-compact form when precision is > 3. Currently, window operator code hardcodes precision to 3. So, when reading back a non-compact timestamp, incorrect deserialization occurs resulting in incorrect windows.Users are only exposed to this bug when using
BinaryRowDatawith a descriptor that has precision > 3 and is running the job in batch mode.In streaming mode, descriptors must be event time attributes, which must be a precision of 3 at maximum by default.
Brief change log
StreamExecWindowTableFunctionto pass toUnalignedWindowTableFunctionOperatorCommonExecWindowTableFunctionto pass toAlignedWindowTableFunctionOperatorWindowTableFunctionOperatorBaseconstructor to take intimestampPrecisionas an int in a protected fieldAlignedWindowTableFunctionOperatorandUnalignedWindowTableFunctionOperatorconstructors to take intimestampPrecisionint argument, use it inprocessElementfor dynamically handling non-compactBinaryRowDataVerifying this change
Please make sure both new and modified tests in this PR follow the conventions for tests defined in our code quality guide.
This change added tests and can be verified as follows:
BinaryRowDataDoes this pull request potentially affect one of the following parts:
@Public(Evolving): (no)Documentation