This is an automated email from the ASF dual-hosted git repository.
Mryange pushed a commit to branch groupjoin
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/groupjoin by this push:
new 1a7b222acf9 be fix
1a7b222acf9 is described below
commit 1a7b222acf984624c1e0b1c99fb6a660994ddf2c
Author: Mryange <[email protected]>
AuthorDate: Wed Jun 24 16:13:22 2026 +0800
be fix
---
be/src/exec/operator/groupjoin_probe_operator.cpp | 6 ++++--
be/src/exec/operator/groupjoin_probe_operator.h | 16 ++++++++++++++++
2 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/be/src/exec/operator/groupjoin_probe_operator.cpp
b/be/src/exec/operator/groupjoin_probe_operator.cpp
index 9a80da4bcb6..ffdd152ea0d 100644
--- a/be/src/exec/operator/groupjoin_probe_operator.cpp
+++ b/be/src/exec/operator/groupjoin_probe_operator.cpp
@@ -55,8 +55,11 @@ GroupJoinProbeOperatorX::GroupJoinProbeOperatorX(ObjectPool*
pool, const TPlanNo
? tnode.group_join_node.dist_type
: TJoinDistributionType::NONE),
_partition_exprs(tnode.__isset.distribute_expr_lists ?
tnode.distribute_expr_lists[0]
- :
std::vector<TExpr> {}) {
+ :
std::vector<TExpr> {}),
+ _output_tuple_id(tnode.group_join_node.output_tuple_id) {
_op_name = "GROUP_JOIN_PROBE_OPERATOR";
+ _output_row_desc =
+ std::make_unique<RowDescriptor>(descs, std::vector<TupleId>
{_output_tuple_id});
}
Status GroupJoinProbeOperatorX::init(const TPlanNode& tnode, RuntimeState*
state) {
@@ -71,7 +74,6 @@ Status GroupJoinProbeOperatorX::init(const TPlanNode& tnode,
RuntimeState* state
_aggregate_sides.resize(group_join_node.aggregate_functions.size());
_sizes_of_aggregate_states.assign(group_join_node.aggregate_functions.size(),
0);
_aligns_of_aggregate_states.assign(group_join_node.aggregate_functions.size(),
1);
- _output_tuple_id = group_join_node.output_tuple_id;
TSortInfo dummy;
for (int i = 0; i < group_join_node.aggregate_functions.size(); ++i) {
diff --git a/be/src/exec/operator/groupjoin_probe_operator.h
b/be/src/exec/operator/groupjoin_probe_operator.h
index 78a1c0156f7..489de218d0b 100644
--- a/be/src/exec/operator/groupjoin_probe_operator.h
+++ b/be/src/exec/operator/groupjoin_probe_operator.h
@@ -84,6 +84,20 @@ public:
Status push(RuntimeState* state, Block* input_block, bool eos) const
override;
Status pull(RuntimeState* state, Block* output_block, bool* eos) const
override;
bool need_more_input_data(RuntimeState* state) const override;
+ [[nodiscard]] const RowDescriptor& row_desc() const override {
+ DORIS_CHECK(_output_row_desc != nullptr);
+ return *_output_row_desc;
+ }
+ Status set_child(OperatorPtr child) override {
+ if (Base::_child && _build_side_child == nullptr) {
+ // The second child of a binary GroupJoin plan is the build side.
Keep the first child
+ // as the probe input in this pipeline, same as
HashJoinProbeOperatorX.
+ _build_side_child = child;
+ } else {
+ RETURN_IF_ERROR(Base::set_child(child));
+ }
+ return Status::OK();
+ }
DataDistribution required_data_distribution(RuntimeState* state) const
override;
bool is_shuffled_operator() const override;
@@ -104,6 +118,8 @@ private:
std::vector<size_t> _make_nullable_keys;
TupleId _output_tuple_id;
TupleDescriptor* _output_tuple_desc = nullptr;
+ std::unique_ptr<RowDescriptor> _output_row_desc;
+ OperatorPtr _build_side_child = nullptr;
};
} // namespace doris
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]