This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 861f31205a [fix](window function) invalid order_by_start in
VAnalyticEvalNode (#16589)
861f31205a is described below
commit 861f31205a86b40f1a43cd2c195917eaeb202969
Author: Jerry Hu <[email protected]>
AuthorDate: Fri Feb 10 17:40:40 2023 +0800
[fix](window function) invalid order_by_start in VAnalyticEvalNode (#16589)
---
be/src/vec/exec/vanalytic_eval_node.cpp | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/be/src/vec/exec/vanalytic_eval_node.cpp
b/be/src/vec/exec/vanalytic_eval_node.cpp
index e52d835a76..f31fc03daf 100644
--- a/be/src/vec/exec/vanalytic_eval_node.cpp
+++ b/be/src/vec/exec/vanalytic_eval_node.cpp
@@ -468,7 +468,7 @@ BlockRowPos VAnalyticEvalNode::_compare_row_to_find_end(int
idx, BlockRowPos sta
//check whether need get column again, maybe same as first init
// if the start_block_num have move to forword, so need update start block
num and compare it from row_num=0
- if (start_column.get() != start_next_block_column.get()) {
+ if (start_block_num != start.block_num) {
start_init_row_num = 0;
start.block_num = start_block_num;
start_column =
_input_blocks[start.block_num].get_by_position(idx).column;
@@ -477,7 +477,7 @@ BlockRowPos VAnalyticEvalNode::_compare_row_to_find_end(int
idx, BlockRowPos sta
int64_t start_pos = start_init_row_num;
int64_t end_pos = _input_blocks[start.block_num].rows() - 1;
//if end_block_num haven't moved, only start_block_num go to the end block
- //so could used the end.row_num for binary search
+ //so could use the end.row_num for binary search
if (start.block_num == end.block_num) {
end_pos = end.row_num;
}
@@ -489,7 +489,7 @@ BlockRowPos VAnalyticEvalNode::_compare_row_to_find_end(int
idx, BlockRowPos sta
start_pos = mid_pos + 1;
}
}
- start.row_num = start_pos; //upadte row num, return the find end
+ start.row_num = start_pos; //update row num, return the find end
return start;
}
@@ -684,6 +684,12 @@ void VAnalyticEvalNode::_update_order_by_range() {
input_block_first_row_positions[_order_by_start.block_num] +
_order_by_start.row_num;
_order_by_end.pos =
input_block_first_row_positions[_order_by_end.block_num] +
_order_by_end.row_num;
+ // `_order_by_end` will be assigned to `_order_by_start` next time,
+ // so make it a valid position.
+ if (_order_by_end.row_num ==
_input_blocks[_order_by_end.block_num].rows()) {
+ _order_by_end.block_num++;
+ _order_by_end.row_num = 0;
+ }
}
Status VAnalyticEvalNode::_init_result_columns() {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]