This is an automated email from the ASF dual-hosted git repository.
eldenmoon pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.0 by this push:
new 47b9b34327 [bugfix](topn) fix miss-use of unique_id causing vector
buffer overflow (#23829)
47b9b34327 is described below
commit 47b9b34327e7d8e123a5072d15998b3eac88c741
Author: Kang <[email protected]>
AuthorDate: Mon Sep 4 15:02:26 2023 +0800
[bugfix](topn) fix miss-use of unique_id causing vector buffer overflow
(#23829)
miss-use: the original cid is actually unique_id and
_schema->unique_id(cid) is wrong.
BTW, there is no problem in master branch, since it's refactored by #23505.
---
be/src/olap/rowset/segment_v2/segment_iterator.cpp | 5 +++--
regression-test/suites/datatype_p0/scalar_types/load.groovy | 3 +++
regression-test/suites/datatype_p2/scalar_types/load.groovy | 3 +++
3 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/be/src/olap/rowset/segment_v2/segment_iterator.cpp
b/be/src/olap/rowset/segment_v2/segment_iterator.cpp
index 8792c5474f..4c54ade3d1 100644
--- a/be/src/olap/rowset/segment_v2/segment_iterator.cpp
+++ b/be/src/olap/rowset/segment_v2/segment_iterator.cpp
@@ -472,13 +472,14 @@ Status
SegmentIterator::_get_row_ranges_from_conditions(RowRanges* condition_row
auto query_ctx = _opts.runtime_state->get_query_ctx();
runtime_predicate =
query_ctx->get_runtime_predicate().get_predictate();
if (runtime_predicate) {
- int32_t cid =
_opts.tablet_schema->column(runtime_predicate->column_id()).unique_id();
+ int32_t unique_id =
+
_opts.tablet_schema->column(runtime_predicate->column_id()).unique_id();
AndBlockColumnPredicate and_predicate;
auto single_predicate = new
SingleColumnBlockPredicate(runtime_predicate.get());
and_predicate.add_column_predicate(single_predicate);
RowRanges column_rp_row_ranges =
RowRanges::create_single(num_rows());
-
RETURN_IF_ERROR(_column_iterators[_schema->unique_id(cid)]->get_row_ranges_by_zone_map(
+
RETURN_IF_ERROR(_column_iterators[unique_id]->get_row_ranges_by_zone_map(
&and_predicate, nullptr, &column_rp_row_ranges));
// intersect different columns's row ranges to get final row
ranges by zone map
diff --git a/regression-test/suites/datatype_p0/scalar_types/load.groovy
b/regression-test/suites/datatype_p0/scalar_types/load.groovy
index 7577bbb819..054958bf5b 100644
--- a/regression-test/suites/datatype_p0/scalar_types/load.groovy
+++ b/regression-test/suites/datatype_p0/scalar_types/load.groovy
@@ -51,6 +51,9 @@ suite("test_scalar_types_load", "p0") {
PROPERTIES("replication_num" = "1", "store_row_column" = "true");
"""
+ sql """ ALTER TABLE ${testTable} DROP COLUMN c_bigint """
+ sql """ ALTER TABLE ${testTable} ADD COLUMN c_bigint bigint AFTER c_int
"""
+
// load data
streamLoad {
table testTable
diff --git a/regression-test/suites/datatype_p2/scalar_types/load.groovy
b/regression-test/suites/datatype_p2/scalar_types/load.groovy
index c68882e249..8147c08a31 100644
--- a/regression-test/suites/datatype_p2/scalar_types/load.groovy
+++ b/regression-test/suites/datatype_p2/scalar_types/load.groovy
@@ -51,6 +51,9 @@ suite("test_scalar_types_load_p2", "p2") {
PROPERTIES("replication_num" = "1");
"""
+ sql """ ALTER TABLE ${testTable} DROP COLUMN c_bigint """
+ sql """ ALTER TABLE ${testTable} ADD COLUMN c_bigint bigint AFTER c_int
"""
+
// load data
streamLoad {
table testTable
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]