This is an automated email from the ASF dual-hosted git repository. zhangchen 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 6a5277b391 [fix](sequence-column) MergeIterator does not use the correct seq column for comparison (#16494) 6a5277b391 is described below commit 6a5277b391db56a2c9ead685a585f6bd2596e3d3 Author: Xin Liao <liaoxin...@126.com> AuthorDate: Fri Feb 10 17:51:15 2023 +0800 [fix](sequence-column) MergeIterator does not use the correct seq column for comparison (#16494) --- be/src/olap/rowset/beta_rowset_reader.cpp | 11 +++- .../unique/test_unique_table_new_sequence.out | 66 +++++++++++----------- .../unique/test_unique_table_sequence.out | 41 +++++++++++--- .../data/data_model_p0/unique/unique_key_data1.csv | 8 +-- .../data/data_model_p0/unique/unique_key_data2.csv | 8 +-- .../unique/test_unique_table_new_sequence.groovy | 34 +++++------ .../unique/test_unique_table_sequence.groovy | 24 ++++++-- 7 files changed, 121 insertions(+), 71 deletions(-) diff --git a/be/src/olap/rowset/beta_rowset_reader.cpp b/be/src/olap/rowset/beta_rowset_reader.cpp index 0852641a03..c060b4c286 100644 --- a/be/src/olap/rowset/beta_rowset_reader.cpp +++ b/be/src/olap/rowset/beta_rowset_reader.cpp @@ -205,8 +205,17 @@ Status BetaRowsetReader::init(RowsetReaderContext* read_context) { // merge or union segment iterator RowwiseIterator* final_iterator; if (read_context->need_ordered_result && _rowset->rowset_meta()->is_segments_overlapping()) { + auto sequence_loc = -1; + if (read_context->sequence_id_idx != -1) { + for (size_t loc = 0; loc < read_context->return_columns->size(); loc++) { + if (read_context->return_columns->at(loc) == read_context->sequence_id_idx) { + sequence_loc = loc; + break; + } + } + } final_iterator = vectorized::new_merge_iterator( - iterators, read_context->sequence_id_idx, read_context->is_unique, + iterators, sequence_loc, read_context->is_unique, read_context->read_orderby_key_reverse, read_context->merged_rows); } else { if (read_context->read_orderby_key_reverse) { diff --git a/regression-test/data/data_model_p0/unique/test_unique_table_new_sequence.out b/regression-test/data/data_model_p0/unique/test_unique_table_new_sequence.out index 825b7039c1..10a08446c6 100644 --- a/regression-test/data/data_model_p0/unique/test_unique_table_new_sequence.out +++ b/regression-test/data/data_model_p0/unique/test_unique_table_new_sequence.out @@ -1,45 +1,47 @@ -- This file is automatically generated. You should know what you did if you want to edit this -- !all -- -1 4 11 -2 5 12 -3 6 13 +1 4 11 12 13 +2 5 12 13 14 +3 6 13 14 15 --- !all -- +-- !count -- +3 + +-- !part -- 1 2 15 2 5 12 3 6 13 -- !all -- -1 2 15 -15 8 19 -2 5 12 -3 6 13 +1 2 15 16 17 +2 5 12 13 14 +3 6 13 14 15 + +-- !count -- +3 + +-- !part -- +1 10 15 +2 5 14 +3 6 11 -- !all -- -1 10 15 0 15 -15 8 19 0 19 -2 5 14 0 12 -3 6 11 0 13 - --- !desc -- -k1 INT Yes true \N -v1 TINYINT Yes false \N REPLACE -v2 INT Yes false \N REPLACE -__DORIS_DELETE_SIGN__ TINYINT No false 0 REPLACE -__DORIS_SEQUENCE_COL__ INT Yes false \N REPLACE - --- !desc -- -k1 INT Yes true \N -v1 TINYINT Yes false \N REPLACE -vv2 INT Yes false \N REPLACE -__DORIS_DELETE_SIGN__ TINYINT No false 0 REPLACE -__DORIS_SEQUENCE_COL__ INT Yes false \N REPLACE +1 10 15 16 17 +2 5 14 13 14 +3 6 11 14 15 + +-- !count -- +4 + +-- !part -- +1 10 15 +15 8 19 +2 5 14 +3 6 11 -- !all -- -1 10 15 0 15 -15 8 19 0 19 -2 5 14 0 12 -21 8 22 0 22 -23 9 24 0 24 -3 6 11 0 13 +1 10 15 16 17 0 15 +15 8 19 20 21 0 19 +2 5 14 13 14 0 12 +3 6 11 14 15 0 13 diff --git a/regression-test/data/data_model_p0/unique/test_unique_table_sequence.out b/regression-test/data/data_model_p0/unique/test_unique_table_sequence.out index da9bce4389..603e5b87aa 100644 --- a/regression-test/data/data_model_p0/unique/test_unique_table_sequence.out +++ b/regression-test/data/data_model_p0/unique/test_unique_table_sequence.out @@ -1,22 +1,47 @@ -- This file is automatically generated. You should know what you did if you want to edit this -- !all -- -1 4 11 -2 5 12 -3 6 13 +1 4 11 12 13 +2 5 12 13 14 +3 6 13 14 15 --- !all -- +-- !count -- +3 + +-- !part -- 1 2 15 2 5 12 3 6 13 -- !all -- +1 2 15 16 17 +2 5 12 13 14 +3 6 13 14 15 + +-- !count -- +3 + +-- !part -- +1 10 15 +2 5 14 +3 6 11 + +-- !all -- +1 10 15 16 17 +2 5 14 13 14 +3 6 11 14 15 + +-- !count -- +4 + +-- !part -- 1 10 15 +15 9 18 2 5 14 3 6 11 -- !all -- -1 10 15 0 15 -15 9 18 0 \N -2 5 14 0 12 -3 6 11 0 13 +1 10 15 16 17 0 15 +15 9 18 21 22 0 \N +2 5 14 13 14 0 12 +3 6 11 14 15 0 13 diff --git a/regression-test/data/data_model_p0/unique/unique_key_data1.csv b/regression-test/data/data_model_p0/unique/unique_key_data1.csv index 1a65108428..f6ff3a45c9 100644 --- a/regression-test/data/data_model_p0/unique/unique_key_data1.csv +++ b/regression-test/data/data_model_p0/unique/unique_key_data1.csv @@ -1,4 +1,4 @@ -1,4,11 -2,5,12 -3,6,13 -2,7,9 +1,4,11,12,13 +2,5,12,13,14 +3,6,13,14,15 +2,7,9,10,11 diff --git a/regression-test/data/data_model_p0/unique/unique_key_data2.csv b/regression-test/data/data_model_p0/unique/unique_key_data2.csv index b6d15e945a..bd8a79e43b 100644 --- a/regression-test/data/data_model_p0/unique/unique_key_data2.csv +++ b/regression-test/data/data_model_p0/unique/unique_key_data2.csv @@ -1,4 +1,4 @@ -1,2,15 -2,3,2 -3,4,3 -1,9,14 +1,2,15,16,17 +2,3,2,3,4 +3,4,3,4,5 +1,9,14,15,16 diff --git a/regression-test/suites/data_model_p0/unique/test_unique_table_new_sequence.groovy b/regression-test/suites/data_model_p0/unique/test_unique_table_new_sequence.groovy index a1808b4d6f..7dc6d2e3e7 100644 --- a/regression-test/suites/data_model_p0/unique/test_unique_table_new_sequence.groovy +++ b/regression-test/suites/data_model_p0/unique/test_unique_table_new_sequence.groovy @@ -22,7 +22,9 @@ suite("test_unique_table_new_sequence") { CREATE TABLE IF NOT EXISTS ${tableName} ( `k1` int NULL, `v1` tinyint NULL, - `v2` int + `v2` int, + `v3` int, + `v4` int ) ENGINE=OLAP UNIQUE KEY(k1) DISTRIBUTED BY HASH(`k1`) BUCKETS 3 @@ -37,7 +39,7 @@ suite("test_unique_table_new_sequence") { table "${tableName}" set 'column_separator', ',' - set 'columns', 'k1,v1,v2' + set 'columns', 'k1,v1,v2,v3,v4' file 'unique_key_data1.csv' time 10000 // limit inflight 10s @@ -63,7 +65,7 @@ suite("test_unique_table_new_sequence") { table "${tableName}" set 'column_separator', ',' - set 'columns', 'k1,v1,v2' + set 'columns', 'k1,v1,v2,v3,v4' file 'unique_key_data2.csv' time 10000 // limit inflight 10s @@ -83,13 +85,9 @@ suite("test_unique_table_new_sequence") { } sql "sync" - order_qt_all "SELECT * from ${tableName}" - - sql "INSERT INTO ${tableName} values(15, 8, 19)" - - sql "INSERT INTO ${tableName} values(15, 9, 18)" + qt_count "SELECT COUNT(*) from ${tableName}" - sql "sync" + order_qt_part "SELECT k1, v1, v2 from ${tableName}" order_qt_all "SELECT * from ${tableName}" @@ -99,24 +97,26 @@ suite("test_unique_table_new_sequence") { sql "UPDATE ${tableName} SET v2 = 11 WHERE k1 = 3" - sql "SET show_hidden_columns=true" - sql "sync" - order_qt_all "SELECT * from ${tableName}" + qt_count "SELECT COUNT(*) from ${tableName}" - qt_desc "desc ${tableName}" + order_qt_part "SELECT k1, v1, v2 from ${tableName}" - sql "ALTER TABLE ${tableName} RENAME COLUMN v2 vv2" + order_qt_all "SELECT * from ${tableName}" - qt_desc "desc ${tableName}" + sql "INSERT INTO ${tableName} values(15, 8, 19, 20, 21)" - sql "INSERT INTO ${tableName} values(21, 8, 22)" + sql "INSERT INTO ${tableName} values(15, 9, 18, 21, 22)" - sql "INSERT INTO ${tableName} values(23, 9, 24)" + sql "SET show_hidden_columns=true" sql "sync" + qt_count "SELECT COUNT(*) from ${tableName}" + + order_qt_part "SELECT k1, v1, v2 from ${tableName}" + order_qt_all "SELECT * from ${tableName}" sql "DROP TABLE ${tableName}" diff --git a/regression-test/suites/data_model_p0/unique/test_unique_table_sequence.groovy b/regression-test/suites/data_model_p0/unique/test_unique_table_sequence.groovy index 91645b8118..3753391f94 100644 --- a/regression-test/suites/data_model_p0/unique/test_unique_table_sequence.groovy +++ b/regression-test/suites/data_model_p0/unique/test_unique_table_sequence.groovy @@ -22,7 +22,9 @@ suite("test_unique_table_sequence") { CREATE TABLE IF NOT EXISTS ${tableName} ( `k1` int NULL, `v1` tinyint NULL, - `v2` int + `v2` int, + `v3` int, + `v4` int ) ENGINE=OLAP UNIQUE KEY(k1) DISTRIBUTED BY HASH(`k1`) BUCKETS 3 @@ -36,7 +38,7 @@ suite("test_unique_table_sequence") { table "${tableName}" set 'column_separator', ',' - set 'columns', 'k1,v1,v2' + set 'columns', 'k1,v1,v2,v3,v4' set 'function_column.sequence_col', 'v2' file 'unique_key_data1.csv' @@ -63,7 +65,7 @@ suite("test_unique_table_sequence") { table "${tableName}" set 'column_separator', ',' - set 'columns', 'k1,v1,v2' + set 'columns', 'k1,v1,v2,v3,v4' set 'function_column.sequence_col', 'v2' file 'unique_key_data2.csv' @@ -84,6 +86,10 @@ suite("test_unique_table_sequence") { } sql "sync" + qt_count "SELECT COUNT(*) from ${tableName}" + + order_qt_part "SELECT k1, v1, v2 from ${tableName}" + order_qt_all "SELECT * from ${tableName}" sql "UPDATE ${tableName} SET v1 = 10 WHERE k1 = 1" @@ -94,16 +100,24 @@ suite("test_unique_table_sequence") { sql "sync" + qt_count "SELECT COUNT(*) from ${tableName}" + + order_qt_part "SELECT k1, v1, v2 from ${tableName}" + order_qt_all "SELECT * from ${tableName}" - sql "INSERT INTO ${tableName} values(15, 8, 19)" + sql "INSERT INTO ${tableName} values(15, 8, 19, 20, 21)" - sql "INSERT INTO ${tableName} values(15, 9, 18)" + sql "INSERT INTO ${tableName} values(15, 9, 18, 21, 22)" sql "SET show_hidden_columns=true" sql "sync" + qt_count "SELECT COUNT(*) from ${tableName}" + + order_qt_part "SELECT k1, v1, v2 from ${tableName}" + order_qt_all "SELECT * from ${tableName}" sql "DROP TABLE ${tableName}" --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org