Part of #23494.
scalar_subquery.rs. Encode is straightforward. Decode needs a small ctx addition: a decode_child_with_scalar_subquery_results method (dispatch trait method + ctx wrapper + a one-line datafusion-proto adapter) so ScalarSubqueryExpr nodes in the input subtree resolve against the scoped container. Bundle that ctx addition in this PR.
Follow the pattern in #23494 (reference impl: #23495 / ProjectionExec; full end-state draft: #23496). Add try_to_proto inside impl ExecutionPlan for X, add the inherent X::try_from_proto, repoint the decode arm, and delete the old central arm in the same PR (that is the proof the hook is reached). Keep the wire format byte-for-byte identical.
Part of #23494.
scalar_subquery.rs. Encode is straightforward. Decode needs a small ctx addition: adecode_child_with_scalar_subquery_resultsmethod (dispatch trait method + ctx wrapper + a one-line datafusion-proto adapter) soScalarSubqueryExprnodes in the input subtree resolve against the scoped container. Bundle that ctx addition in this PR.Follow the pattern in #23494 (reference impl: #23495 /
ProjectionExec; full end-state draft: #23496). Addtry_to_protoinsideimpl ExecutionPlan for X, add the inherentX::try_from_proto, repoint the decode arm, and delete the old central arm in the same PR (that is the proof the hook is reached). Keep the wire format byte-for-byte identical.