This is an automated email from the ASF dual-hosted git repository.

morrysnow 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 fadf3b906d [enhancement](planner) delete support between predicate 
(#17892)
fadf3b906d is described below

commit fadf3b906d5b625f0a96c4090e82473f024efbdd
Author: morrySnow <[email protected]>
AuthorDate: Thu Mar 23 13:24:32 2023 +0800

    [enhancement](planner) delete support between predicate (#17892)
---
 .../src/main/java/org/apache/doris/analysis/DeleteStmt.java  | 12 +++++++++++-
 regression-test/suites/delete_p0/test_delete_where_in.groovy |  2 ++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/DeleteStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DeleteStmt.java
index 52422f3a42..8dadd20058 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DeleteStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DeleteStmt.java
@@ -33,9 +33,13 @@ import org.apache.doris.common.util.Util;
 import org.apache.doris.mysql.privilege.PrivPredicate;
 import org.apache.doris.qe.ConnectContext;
 import org.apache.doris.qe.SessionVariable;
+import org.apache.doris.rewrite.BetweenToCompoundRule;
+import org.apache.doris.rewrite.ExprRewriteRule;
+import org.apache.doris.rewrite.ExprRewriter;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Joiner;
+import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 
 import java.util.LinkedList;
@@ -43,11 +47,15 @@ import java.util.List;
 
 public class DeleteStmt extends DdlStmt {
 
+    private static final List<ExprRewriteRule> EXPR_NORMALIZE_RULES = 
ImmutableList.of(
+            BetweenToCompoundRule.INSTANCE
+    );
+
     private TableRef targetTableRef;
     private TableName tableName;
     private final PartitionNames partitionNames;
     private final FromClause fromClause;
-    private final Expr wherePredicate;
+    private Expr wherePredicate;
 
     private final List<Predicate> deleteConditions = new LinkedList<>();
 
@@ -108,6 +116,8 @@ public class DeleteStmt extends DdlStmt {
 
         // analyze predicate
         if (fromClause == null) {
+            ExprRewriter exprRewriter = new ExprRewriter(EXPR_NORMALIZE_RULES);
+            wherePredicate = exprRewriter.rewrite(wherePredicate, analyzer);
             analyzePredicate(wherePredicate);
         } else {
             constructInsertStmt();
diff --git a/regression-test/suites/delete_p0/test_delete_where_in.groovy 
b/regression-test/suites/delete_p0/test_delete_where_in.groovy
index 26fcd362f4..021338fe3a 100644
--- a/regression-test/suites/delete_p0/test_delete_where_in.groovy
+++ b/regression-test/suites/delete_p0/test_delete_where_in.groovy
@@ -94,6 +94,8 @@ suite("test_delete_where_in", "delete_p0") {
         def count_5= qt_sql """select count(*) from ${tb_name}"""
         logger.info("delete_5 : ${count_5}")
 
+        sql """DELETE FROM ${tb_name} WHERE k5 BETWEEN 20000 AND 50000"""
+
         //drop table
         qt_sql """truncate table ${tb_name}"""
         qt_sql """drop table ${tb_name}"""


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

Reply via email to