github-actions[bot] commented on code in PR #66873:
URL: https://github.com/apache/doris/pull/66873#discussion_r3801012757
##########
be/src/exec/operator/result_sink_operator.cpp:
##########
@@ -122,7 +123,8 @@ Status ResultSinkOperatorX::prepare(RuntimeState* state) {
std::shared_ptr<arrow::Schema> arrow_schema;
if (_sink_type == TResultSinkType::ARROW_FLIGHT_PROTOCOL) {
RETURN_IF_ERROR(get_arrow_schema_from_expr_ctxs(_output_vexpr_ctxs,
&arrow_schema,
-
state->timezone()));
+ state->timezone(),
+
/*datetime_naive=*/true));
Review Comment:
[P1] Gate the naive schema across mixed-version result BEs
During a rolling BE upgrade, a parallel Arrow Flight query can expose result
endpoints on both old and new BEs.
`FlightSqlConnectProcessor.fetchArrowFlightSchema()` fetches every endpoint
schema and aborts when `Schema.equals()` differs; old BEs emit `timestamp(unit,
session_timezone)`, while this unconditional flag makes new BEs emit
`timestamp(unit)`. Because `enable_parallel_result_sink` defaults to true, a
DATETIMEV2 query spanning versions can therefore fail before `FlightInfo` is
returned. Please negotiate one schema mode for the whole query (with an absent
capability preserving the old mode) or otherwise gate this change until all
scheduled BEs support it. The schema mismatch occurs even in UTC; for non-UTC
sessions the schema choice also changes physical epoch values, so simply
ignoring the inequality would not be safe.
--
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]