github-actions[bot] commented on code in PR #65240:
URL: https://github.com/apache/doris/pull/65240#discussion_r3526874434
##########
be/src/exec/operator/analytic_sink_operator.cpp:
##########
@@ -791,6 +797,7 @@ Status
AnalyticSinkOperatorX::_add_input_block(doris::RuntimeState* state, Block
RETURN_IF_ERROR(
_insert_range_column(input_block,
local_state._partition_by_eq_expr_ctxs[i],
local_state._partition_by_columns[i].get(), block_rows));
Review Comment:
This conversion only covers the partition/order comparison buffers. The
aggregate argument buffers above still append through `_insert_range_column()`
into `_agg_input_columns`, which also uses
`insert_range_from_ignore_overflow()`, but those columns are later handed
unchanged to `add_range_single_place()`. A large string-valued window aggregate
such as `max(str) over(partition by u_city)` or `first_value(str) ...` can
therefore still accumulate a `ColumnString` argument buffer past 4GB and read
wrapped offsets; string min/max currently reads with `SingleValueDataString`
via `ColumnString::get_data_at()`, and first/last/lead/lag keep row references
into the same buffered columns. Please apply the overflow conversion to the
aggregate argument buffers as well, and make sure the affected string window
aggregate readers handle a promoted `ColumnString64` input.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]