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

yiguolei pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-2.1 by this push:
     new 11175208dfe [fix](delete) storage engine delete do not support bitmap 
(#34710)
11175208dfe is described below

commit 11175208dfe3161f72c49ef469b67b73ca9fdf47
Author: morrySnow <101034200+morrys...@users.noreply.github.com>
AuthorDate: Mon May 13 22:01:07 2024 +0800

    [fix](delete) storage engine delete do not support bitmap (#34710)
---
 .../java/org/apache/doris/analysis/DeleteStmt.java |  3 ++-
 .../trees/plans/commands/DeleteFromCommand.java    |  3 ++-
 .../suites/delete_p0/test_delete.groovy            | 29 ++++++++++++++++++++++
 3 files changed, 33 insertions(+), 2 deletions(-)

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 465cd6c1600..5db714f1394 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
@@ -342,7 +342,8 @@ public class DeleteStmt extends DdlStmt {
             // TODO(Now we can not push down non-scala type like 
array/map/struct to storage layer because of
             //  predict_column in be not support non-scala type, so we just 
should ban this type in delete predict, when
             //  we delete predict_column in be we should delete this ban)
-            if (!column.getType().isScalarType()) {
+            if (!column.getType().isScalarType()
+                    || (column.getType().isOnlyMetricType() && 
!column.getType().isJsonbType())) {
                 throw new AnalysisException(String.format("Can not apply 
delete condition to column type: %s ",
                         column.getType()));
 
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DeleteFromCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DeleteFromCommand.java
index 6d339a21d94..62feee1c43f 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DeleteFromCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DeleteFromCommand.java
@@ -224,7 +224,8 @@ public class DeleteFromCommand extends Command implements 
ForwardWithSync {
         // TODO(Now we can not push down non-scala type like array/map/struct 
to storage layer because of
         //  predict_column in be not support non-scala type, so we just should 
ban this type in delete predict, when
         //  we delete predict_column in be we should delete this ban)
-        if (!column.getType().isScalarType()) {
+        if (!column.getType().isScalarType()
+                || (column.getType().isOnlyMetricType() && 
!column.getType().isJsonbType())) {
             throw new AnalysisException(String.format("Can not apply delete 
condition to column type: "
                     + column.getType()));
         }
diff --git a/regression-test/suites/delete_p0/test_delete.groovy 
b/regression-test/suites/delete_p0/test_delete.groovy
index bdb1cf8e89c..c0a5e0fbfe0 100644
--- a/regression-test/suites/delete_p0/test_delete.groovy
+++ b/regression-test/suites/delete_p0/test_delete.groovy
@@ -483,4 +483,33 @@ suite("test_delete") {
     sql "set experimental_enable_nereids_planner = false;"
     sql "set @data_batch_num='2024-01-31 00:00:00';"
     sql "delete  from bi_acti_per_period_plan where data_batch_num 
=@data_batch_num; "
+
+    // delete bitmap
+    sql "drop table if exists table_bitmap"
+    sql """
+        CREATE TABLE if not exists `table_bitmap` (
+          `dt` DATE NULL,
+          `page_id` INT NULL,
+          `page_level` INT NULL,
+          `user_id` BITMAP NOT NULL
+        ) ENGINE=OLAP
+        DUPLICATE KEY(`dt`, `page_id`, `page_level`)
+        COMMENT 'OLAP'
+        DISTRIBUTED BY HASH(`dt`) BUCKETS 10
+        PROPERTIES (
+        "replication_allocation" = "tag.location.default: 1"
+        );
+    """
+
+    sql """
+        insert into table_bitmap values
+        ('2021-12-09',     101 ,          1 , 
BITMAP_FROM_STRING('100001,100002,100003,100004,100005')),
+        ('2021-12-09',     102 ,          2 , 
BITMAP_FROM_STRING('100001,100003,100004')),
+        ('2021-12-09',     103 ,          3 , BITMAP_FROM_STRING('100003'));
+    """
+
+    test {
+        sql "delete from table_bitmap where user_id is null"
+        exception "Can not apply delete condition to column type: BITMAP"
+    }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to