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]