From 395e4da5714cb2312d71693b75c7079025c78125 Mon Sep 17 00:00:00 2001 From: Kang Date: Tue, 9 Apr 2024 21:04:14 +0800 Subject: [PATCH 1/3] add config enable_create_bitmap_index_as_inverted_index (#33434) --- .../src/main/java/org/apache/doris/common/Config.java | 3 +++ fe/fe-core/src/main/cup/sql_parser.cup | 7 ++++++- .../apache/doris/nereids/parser/LogicalPlanBuilder.java | 3 ++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java index 9a4e0ececcc7ef..c68e5275ab5799 100644 --- a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java +++ b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java @@ -2655,6 +2655,9 @@ public static boolean isNotCloudMode() { @ConfField(mutable = true) public static int cloud_cold_read_percent = 10; // 10% + @ConfField(mutable = true, masterOnly = true) + public static boolean enable_create_bitmap_index_as_inverted_index = false; + // The original meta read lock is not enough to keep a snapshot of partition versions, // so the execution of `createScanRangeLocations` are delayed to `Coordinator::exec`, // to help to acquire a snapshot of partition versions. diff --git a/fe/fe-core/src/main/cup/sql_parser.cup b/fe/fe-core/src/main/cup/sql_parser.cup index 34ad7834212467..856a8cb3fb8ce7 100644 --- a/fe/fe-core/src/main/cup/sql_parser.cup +++ b/fe/fe-core/src/main/cup/sql_parser.cup @@ -48,6 +48,7 @@ import org.apache.doris.catalog.StructType; import org.apache.doris.catalog.TableIf.TableType; import org.apache.doris.catalog.View; import org.apache.doris.common.AnalysisException; +import org.apache.doris.common.Config; import org.apache.doris.common.FeConstants; import org.apache.doris.common.Version; import org.apache.doris.mysql.MysqlPassword; @@ -3844,7 +3845,11 @@ opt_index_type ::= :} | KW_USING KW_BITMAP {: - RESULT = IndexDef.IndexType.BITMAP; + if (Config.enable_create_bitmap_index_as_inverted_index) { + RESULT = IndexDef.IndexType.INVERTED; + } else { + RESULT = IndexDef.IndexType.BITMAP; + } :} | KW_USING KW_NGRAM_BF {: diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java index 4faceb3ae94a26..a91b94902f5894 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java @@ -2688,7 +2688,8 @@ public IndexDefinition visitIndexDef(IndexDefContext ctx) { String indexType = ctx.indexType != null ? ctx.indexType.getText().toUpperCase() : null; String comment = ctx.comment != null ? ctx.comment.getText() : ""; // change BITMAP index to INVERTED index - if ("BITMAP".equalsIgnoreCase(indexType)) { + if (Config.enable_create_bitmap_index_as_inverted_index + && "BITMAP".equalsIgnoreCase(indexType)) { indexType = "INVERTED"; } return new IndexDefinition(indexName, indexCols, indexType, properties, comment); From eef4b55cfdfeeb2b5979502f9375a0d5f3edcfbc Mon Sep 17 00:00:00 2001 From: Kang Date: Tue, 28 May 2024 16:30:18 +0800 Subject: [PATCH 2/3] set enable_create_bitmap_index_as_inverted_index default to true --- fe/fe-common/src/main/java/org/apache/doris/common/Config.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java index c68e5275ab5799..f307ea0336c88c 100644 --- a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java +++ b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java @@ -2656,7 +2656,7 @@ public static boolean isNotCloudMode() { public static int cloud_cold_read_percent = 10; // 10% @ConfField(mutable = true, masterOnly = true) - public static boolean enable_create_bitmap_index_as_inverted_index = false; + public static boolean enable_create_bitmap_index_as_inverted_index = true; // The original meta read lock is not enough to keep a snapshot of partition versions, // so the execution of `createScanRangeLocations` are delayed to `Coordinator::exec`, From c094e21b6e462f22c5bb2b1948798681ef53b968 Mon Sep 17 00:00:00 2001 From: Kang Date: Mon, 3 Jun 2024 11:55:40 +0800 Subject: [PATCH 3/3] adapte testcase test_index_ddl_fault_injection --- .../fault_injection_p0/test_index_ddl_fault_injection.groovy | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/regression-test/suites/fault_injection_p0/test_index_ddl_fault_injection.groovy b/regression-test/suites/fault_injection_p0/test_index_ddl_fault_injection.groovy index 0beef4e80a659f..16c485fc5d8fc2 100644 --- a/regression-test/suites/fault_injection_p0/test_index_ddl_fault_injection.groovy +++ b/regression-test/suites/fault_injection_p0/test_index_ddl_fault_injection.groovy @@ -19,6 +19,8 @@ import org.codehaus.groovy.runtime.IOGroovyMethods suite("test_index_ddl_fault_injection", "nonConcurrent") { try { + // temporaryly disable enable_create_bitmap_index_as_inverted_index + sql "ADMIN SET FRONTEND CONFIG ('enable_create_bitmap_index_as_inverted_index' = 'false')" sql "DROP TABLE IF EXISTS `test_index_ddl_fault_injection_tbl`" sql """ CREATE TABLE test_index_ddl_fault_injection_tbl ( @@ -93,5 +95,7 @@ suite("test_index_ddl_fault_injection", "nonConcurrent") { GetDebugPoint().disableDebugPointForAllBEs("BitmapIndexReader::new_iterator.fail"); } } finally { + // restore enable_create_bitmap_index_as_inverted_index + sql "ADMIN SET FRONTEND CONFIG ('enable_create_bitmap_index_as_inverted_index' = 'true')" } }