summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorliuwentan <[email protected]>2023-11-24 15:36:27 +0800
committerliuwentan <[email protected]>2023-11-24 15:36:27 +0800
commit7568d4e2b9f2bf4ea4540731eb35d9395ca1c28b (patch)
treed4a30b3694e830c21093bc8098ddf2efef5abaf1
parent179c983b124fd73c18586ccb4816dd222a90339e (diff)
[PATCH]bugfix for switch expr enginev4.1.10
-rw-r--r--include/maat.h12
-rw-r--r--src/maat_expr.c8
-rw-r--r--src/maat_table.c2
-rw-r--r--test/maat_input_mode_gtest.cpp4
4 files changed, 18 insertions, 8 deletions
diff --git a/include/maat.h b/include/maat.h
index 8beaf67..d12360c 100644
--- a/include/maat.h
+++ b/include/maat.h
@@ -56,10 +56,16 @@ enum maat_update_type {
MAAT_UPDATE_TYPE_INC
};
+/**
+ * @brief auto means select engine automatically
+ * regex rules always use hyperscan
+ * literal rules: rule_num <= 50k, use hyperscan
+ * rule_num > 50k, use rulescan
+*/
enum maat_expr_engine {
- MAAT_EXPR_ENGINE_HS = 0, //hyperscan(default engine)
- MAAT_EXPR_ENGINE_RS, //rulescan
- MAAT_EXPR_ENGINE_AUTO
+ MAAT_EXPR_ENGINE_HS = 0, //hyperscan
+ MAAT_EXPR_ENGINE_RS, //rulescan
+ MAAT_EXPR_ENGINE_AUTO //default
};
struct ip_addr {
diff --git a/src/maat_expr.c b/src/maat_expr.c
index db1592d..2fa4c25 100644
--- a/src/maat_expr.c
+++ b/src/maat_expr.c
@@ -506,8 +506,12 @@ void *expr_runtime_new(void *expr_schema, size_t max_thread_num,
expr_rt->ref_garbage_bin = garbage_bin;
expr_rt->logger = logger;
expr_rt->district_map = maat_kv_store_new();
- expr_rt->engine_type = schema->engine_type;
-
+ if (schema->engine_type == MAAT_EXPR_ENGINE_AUTO) {
+ expr_rt->engine_type = table_manager_get_expr_engine(schema->ref_tbl_mgr);
+ } else {
+ expr_rt->engine_type = schema->engine_type;
+ }
+
expr_rt->hit_cnt = alignment_int64_array_alloc(max_thread_num);
expr_rt->scan_cnt = alignment_int64_array_alloc(max_thread_num);
expr_rt->scan_bytes = alignment_int64_array_alloc(max_thread_num);
diff --git a/src/maat_table.c b/src/maat_table.c
index d6d7286..166b619 100644
--- a/src/maat_table.c
+++ b/src/maat_table.c
@@ -1138,7 +1138,7 @@ int table_manager_get_valid_column(struct table_manager *tbl_mgr, int table_id)
enum maat_expr_engine table_manager_get_expr_engine(struct table_manager *tbl_mgr)
{
if (NULL == tbl_mgr) {
- return EXPR_ENGINE_TYPE_HS;
+ return EXPR_ENGINE_TYPE_AUTO;
}
return tbl_mgr->engine_type;
diff --git a/test/maat_input_mode_gtest.cpp b/test/maat_input_mode_gtest.cpp
index 058d6c9..d7e0d65 100644
--- a/test/maat_input_mode_gtest.cpp
+++ b/test/maat_input_mode_gtest.cpp
@@ -86,7 +86,7 @@ TEST(iris_mode, maat_scan_string) {
struct maat_options *opts = maat_options_new();
maat_options_set_iris(opts, tmp_iris_full_idx_path, tmp_iris_inc_idx_path);
maat_options_set_logger(opts, "./maat_input_mode_gtest.log", LOG_LEVEL_INFO);
-
+
struct maat *maat_inst = maat_new(opts, table_info_path);
EXPECT_TRUE(maat_inst != NULL);
@@ -235,7 +235,7 @@ int main(int argc, char ** argv)
{
int ret=0;
::testing::InitGoogleTest(&argc, argv);
- g_logger = log_handle_create("./input_mode_gtest.log", 0);
+ g_logger = log_handle_create("./maat_input_mode_gtest.log", 0);
char json_iris_path[NAME_MAX] = {0};
snprintf(json_iris_path, sizeof(json_iris_path), "./%s_iris_tmp", json_filename);