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

panxiaolei 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 03162f73d76 [Bug](materialized-view) Fixed the problem of using drop 
table force and create mv stmt at the… (#41580)
03162f73d76 is described below

commit 03162f73d7616eea9908737c2af12f83f12a814a
Author: Pxl <pxl...@qq.com>
AuthorDate: Sat Oct 12 15:44:58 2024 +0800

    [Bug](materialized-view) Fixed the problem of using drop table force and 
create mv stmt at the… (#41580)
    
    … same time causing fe startup failure.
    
    ## Proposed changes
    Fixed the problem of using drop table force and create mv stmt at the
    same time causing fe startup failure.
    
    Consider this scenario:
    create mv -> drop table force -> create mv stmt cancelled
    At this time there is a checkpoint like this:
    [---------checkpoint---------]   [-------- editlog--------]
    create mv -> drop table force -> create mv stmt cancelled
    
    In this case, when read meta and parse create mv stmt, it will fail
    because there is no corresponding table, further causing fe startup
    failure.
---
 .../java/org/apache/doris/alter/RollupJobV2.java   |  6 ++-
 .../mv_with_force_drop/mv_with_force_drop.groovy   | 52 ++++++++++++++++++++++
 2 files changed, 57 insertions(+), 1 deletion(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/alter/RollupJobV2.java 
b/fe/fe-core/src/main/java/org/apache/doris/alter/RollupJobV2.java
index 1ff74d4cb81..49838446cd5 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/alter/RollupJobV2.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/alter/RollupJobV2.java
@@ -912,7 +912,11 @@ public class RollupJobV2 extends AlterJobV2 implements 
GsonPostProcessable {
             stmt.analyze(analyzer);
         } catch (Exception e) {
             // Under normal circumstances, the stmt will not fail to analyze.
-            throw new IOException("error happens when parsing create 
materialized view stmt: " + stmt, e);
+            // In some cases (such as drop table force), analyze may fail 
because cancel is
+            // not included in the checkpoint.
+            jobState = JobState.CANCELLED;
+            LOG.warn("error happens when parsing create materialized view 
stmt: " + stmt, e);
+            return;
         }
         setColumnsDefineExpr(stmt.getMVColumnItemList());
         if (whereColumn != null) {
diff --git 
a/regression-test/suites/mv_p0/mv_with_force_drop/mv_with_force_drop.groovy 
b/regression-test/suites/mv_p0/mv_with_force_drop/mv_with_force_drop.groovy
new file mode 100644
index 00000000000..69b13bfb87f
--- /dev/null
+++ b/regression-test/suites/mv_p0/mv_with_force_drop/mv_with_force_drop.groovy
@@ -0,0 +1,52 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+suite("mv_with_force_drop") {
+    sql """
+        drop table if exists test_table_t1;
+    """
+
+    sql """
+        CREATE TABLE test_table_t1 (
+        a1 varchar(65533) NULL default '123',
+        a2 varchar(64) NULL default '',
+        a3 varchar(65533) NULL default '',
+        a4 varchar(65533) NULL default '',
+        a5 varchar(64) default '2023-01-31',
+        a6 varchar(64) default ''
+        ) ENGINE = OLAP
+        DUPLICATE KEY(a1)
+        DISTRIBUTED BY HASH(a1) BUCKETS 3
+        PROPERTIES (
+        "replication_allocation"="tag.location.default:1",
+        "is_being_synced"="false",
+        "storage_format"="V2",
+        "disable_auto_compaction"="false",
+        "enable_single_replica_compaction"="false"
+        );
+    """
+
+    sql """ insert into test_table_t1 values(); """
+    // create mv and do not wait ready
+    sql """ CREATE MATERIALIZED VIEW test_table_view As
+            select a1,a3,a4,DATE_FORMAT(a5, 'yyyyMMdd') 
QUERY_TIME,DATE_FORMAT(a6 ,'yyyyMMdd') CREATE_TIME
+            from test_table_t1 where DATE_FORMAT(a5, 'yyyyMMdd') =20230131; """
+    // drop table force immediately
+    sql """
+        drop table if exists test_table_t1 force;
+    """
+}


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

Reply via email to