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]

Reply via email to