This is an automated email from the ASF dual-hosted git repository.
dataroaring 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 b642491555 [fix](regression) fix add drop inverted index case (#16673)
b642491555 is described below
commit b64249155552f3d35d1176778713e5c82505864d
Author: YueW <[email protected]>
AuthorDate: Tue Feb 14 00:24:42 2023 +0800
[fix](regression) fix add drop inverted index case (#16673)
---
be/src/olap/schema_change.cpp | 4 +-
be/src/vec/olap/olap_data_convertor.h | 1 +
.../inverted_index_p0/test_add_drop_index.groovy | 45 ++++++++--------------
3 files changed, 20 insertions(+), 30 deletions(-)
diff --git a/be/src/olap/schema_change.cpp b/be/src/olap/schema_change.cpp
index a6025ac605..c2b65fed34 100644
--- a/be/src/olap/schema_change.cpp
+++ b/be/src/olap/schema_change.cpp
@@ -609,7 +609,6 @@ Status
SchemaChangeForInvertedIndex::process(RowsetReaderSharedPtr rowset_reader
auto rowset_meta = rowset_reader->rowset()->rowset_meta();
std::string segment_dir = base_tablet->tablet_path();
auto fs = rowset_meta->fs();
- _olap_data_convertor->reserve(_alter_inverted_indexs.size());
// load segments
SegmentCacheHandle segment_cache_handle;
@@ -622,6 +621,7 @@ Status
SchemaChangeForInvertedIndex::process(RowsetReaderSharedPtr rowset_reader
fmt::format("{}_{}.dat", rowset_meta->rowset_id().to_string(),
seg_ptr->id());
std::vector<ColumnId> return_columns;
std::vector<std::pair<int64_t, int64_t>> inverted_index_writer_signs;
+ _olap_data_convertor->reserve(_alter_inverted_indexs.size());
// create inverted index writer
for (auto& inverted_index : _alter_inverted_indexs) {
DCHECK_EQ(inverted_index.columns.size(), 1);
@@ -700,6 +700,8 @@ Status
SchemaChangeForInvertedIndex::process(RowsetReaderSharedPtr rowset_reader
return Status::Error<IO_ERROR>();
}
}
+
+ _olap_data_convertor->reset();
}
_inverted_index_builders.clear();
diff --git a/be/src/vec/olap/olap_data_convertor.h
b/be/src/vec/olap/olap_data_convertor.h
index d6c65cc294..0efd5c1bd8 100644
--- a/be/src/vec/olap/olap_data_convertor.h
+++ b/be/src/vec/olap/olap_data_convertor.h
@@ -58,6 +58,7 @@ public:
bool empty() const { return _convertors.empty(); }
void reserve(size_t size) { _convertors.reserve(size); }
+ void reset() { _convertors.clear(); }
private:
class OlapColumnDataConvertorBase;
diff --git
a/regression-test/suites/inverted_index_p0/test_add_drop_index.groovy
b/regression-test/suites/inverted_index_p0/test_add_drop_index.groovy
index 879445d749..b8b236ce8a 100644
--- a/regression-test/suites/inverted_index_p0/test_add_drop_index.groovy
+++ b/regression-test/suites/inverted_index_p0/test_add_drop_index.groovy
@@ -61,7 +61,7 @@ suite("test_add_drop_index", "inverted_index"){
// case1: create index for int colume
// case1.0 create index
- sql "create index age_idx on ${indexTbName1}(age);"
+ sql "create index age_idx on ${indexTbName1}(age) using inverted"
wait_for_latest_op_on_table_finish(indexTbName1, timeout)
def show_result = sql "show index from ${indexTbName1}"
@@ -71,7 +71,7 @@ suite("test_add_drop_index", "inverted_index"){
// case1.1 create duplicate same index for one colume with same name
def create_dup_index_result = "fail"
try {
- sql "create index age_idx on ${indexTbName1}(`age`)"
+ sql "create index age_idx on ${indexTbName1}(`age`) using inverted"
create_dup_index_result = "success"
} catch(Exception ex) {
logger.info("create same duplicate and same name index, result: " +
ex)
@@ -79,25 +79,28 @@ suite("test_add_drop_index", "inverted_index"){
assertEquals(create_dup_index_result, "fail")
// case1.2 create duplicate same index for one colume with different name
try {
- sql "create index age_idx_diff on ${indexTbName1}(`age`)"
+ sql "create index age_idx_diff on ${indexTbName1}(`age`) using
inverted"
create_dup_index_result = "success"
} catch(Exception ex) {
logger.info("create same duplicate with different name index, result:
" + ex)
}
assertEquals(create_dup_index_result, "fail")
// case1.3 create duplicate different index for one colume with same name
- try {
- sql "create index age_idx_diff on ${indexTbName1}(`age`) using bitmap"
- create_dup_index_result = "success"
- } catch(Exception ex) {
- logger.info("create different duplicate and different name index,
result: " + ex)
- }
- assertEquals(create_dup_index_result, "fail")
+ sql "create index age_idx_diff on ${indexTbName1}(`age`) using bitmap"
+ wait_for_latest_op_on_table_finish(indexTbName1, timeout)
+ show_result = sql "show index from ${indexTbName1}"
+ logger.info("show index from " + indexTbName1 + " result: " + show_result)
+ assertEquals(show_result[1][2], "age_idx_diff")
// case1.4 drop index
def drop_result = sql "drop index age_idx on ${indexTbName1}"
logger.info("drop index age_idx on " + indexTbName1 + "; result: " +
drop_result)
wait_for_latest_op_on_table_finish(indexTbName1, timeout)
+
+ drop_result = sql "drop index age_idx_diff on ${indexTbName1}"
+ logger.info("drop index age_idx_diff on " + indexTbName1 + "; result: " +
drop_result)
+ wait_for_latest_op_on_table_finish(indexTbName1, timeout)
+
show_result = sql "show index from ${indexTbName1}"
assertEquals(show_result.size(), 0)
@@ -111,24 +114,9 @@ suite("test_add_drop_index", "inverted_index"){
}
assertEquals(drop_index_twice_result, "fail")
-
// case2: create index for date colume
- // case2.0 create index with which index_name has been used in age colume
- sleep(30000)
- def create_index_with_used_name_result = "fail"
- try {
- sql "create index age_idx on ${indexTbName1}(age);"
- sql "create index age_idx on ${indexTbName1}(`registDate`)"
- create_index_with_used_name_result = "success"
- } catch(Exception ex) {
- logger.info("expect create index with used index name, result: " + ex)
- sleep(3000)
- sql "drop index age_idx on ${indexTbName1}"
- }
- assertEquals(create_index_with_used_name_result, "fail")
// case2.1 create index for date colume
- sleep(3000)
- sql "create index date_idx on ${indexTbName1}(`registDate`)"
+ sql "create index date_idx on ${indexTbName1}(`registDate`) using inverted"
wait_for_latest_op_on_table_finish(indexTbName1, timeout)
show_result = sql "show index from ${indexTbName1}"
assertEquals(show_result.size(), 1)
@@ -147,11 +135,10 @@ suite("test_add_drop_index", "inverted_index"){
assertEquals(create_string_index_on_int_colume_result, "fail")
// case4: create default inverted index for varchar coulume
- sleep(10000)
- sql "create index name_idx on ${indexTbName1}(`name`)"
+ sql "create index name_idx on ${indexTbName1}(`name`) using inverted"
wait_for_latest_op_on_table_finish(indexTbName1, timeout)
show_result = sql "show index from ${indexTbName1}"
- assertTrue(show_result[0][2] == "name_idx" && show_result[0][10] ==
"BITMAP")
+ assertTrue(show_result[0][2] == "name_idx" && show_result[0][10] ==
"INVERTED")
logger.info("create index name_idx for " + indexTbName1 + "(`name`)")
logger.info("show index result: " + show_result)
sql "drop index name_idx on ${indexTbName1}"
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]