yiguolei commented on code in PR #22442:
URL: https://github.com/apache/doris/pull/22442#discussion_r1306797407


##########
be/src/olap/delete_handler.cpp:
##########
@@ -81,35 +89,69 @@ Status DeleteHandler::generate_delete_predicate(const 
TabletSchema& schema,
             LOG(INFO) << "store one sub-delete condition. condition name=" << 
in_pred->column_name()
                       << "condition size=" << in_pred->values().size();
         } else {
-            string condition_str = construct_sub_predicates(condition);
-            del_pred->add_sub_predicates(condition_str);
-            LOG(INFO) << "store one sub-delete condition. condition=" << 
condition_str;
+            DeleteSubPredicatePB* sub_predicate = 
del_pred->add_sub_predicates_v2();
+            if (condition.__isset.column_unique_id) {
+                
sub_predicate->set_column_unique_id(condition.column_unique_id);
+            }
+            sub_predicate->set_column_name(condition.column_name);
+            sub_predicate->set_op(trans_op(condition.condition_op));
+            sub_predicate->set_cond_value(condition.condition_values[0]);
+
+            // write sub predicate v1 for compactbility
+            del_pred->add_sub_predicates(construct_sub_predicate(condition));
+            LOG(INFO) << "store one sub-delete condition. condition="
+                      << fmt::format(" {} {} {}", condition.column_name, 
condition.condition_op,
+                                     condition.condition_values[0]);
         }
     }
     del_pred->set_version(-1);
 
     return Status::OK();
 }
 
-std::string DeleteHandler::construct_sub_predicates(const TCondition& 
condition) {
-    string op = condition.condition_op;
+void DeleteHandler::convert_to_sub_pred_v2(DeletePredicatePB* delete_pred,
+                                           TabletSchemaSPtr schema) {
+    if (!delete_pred->sub_predicates().empty() && 
delete_pred->sub_predicates_v2().empty()) {
+        for (const auto& condition_str : delete_pred->sub_predicates()) {
+            auto* sub_pred = delete_pred->add_sub_predicates_v2();
+            TCondition condition;
+            parse_condition(condition_str, &condition);
+            
sub_pred->set_column_unique_id(schema->column(condition.column_name).unique_id());
+            sub_pred->set_column_name(condition.column_name);
+            sub_pred->set_op(condition.condition_op);
+            sub_pred->set_cond_value(condition.condition_values[0]);
+        }
+    }
+
+    auto* in_pred_list = delete_pred->mutable_in_predicates();
+    for (auto& in_pred : *in_pred_list) {
+        
in_pred.set_column_unique_id(schema->column(in_pred.column_name()).unique_id());
+    }
+}
+
+std::string DeleteHandler::construct_sub_predicate(const TCondition& 
condition) {
+    const auto& op = trans_op(condition.condition_op);
+    if ("IS" == op) {
+        return condition.column_name + " " + op + " " + 
condition.condition_values[0];
+    }
+    return condition.column_name + op + "'" + condition.condition_values[0] + 
"'";
+}
+
+std::string DeleteHandler::trans_op(const std::string& opt) {
+    std::string op = string(opt);
     if (op == "<") {
         op += "<";
     } else if (op == ">") {
         op += ">";
     }
-    string condition_str;
-    if ("IS" == op) {
-        condition_str = condition.column_name + " " + op + " " + 
condition.condition_values[0];
-    } else {
+    if ("IS" != op) {

Review Comment:
   add comment here, why do this change??



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to