You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by mo...@apache.org on 2023/01/10 17:04:09 UTC

[doris] branch branch-1.2-lts updated (981e18dfc7 -> 8779a010fd)

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

morningman pushed a change to branch branch-1.2-lts
in repository https://gitbox.apache.org/repos/asf/doris.git


    from 981e18dfc7 [fix]fixed dangerous usage of namespace std (#15741)
     new 3e47ec879c [chore](vulnerability) fix fe high risk vulnerability scanned by bug scanner (#15649)
     new a3c7cbdae4 [fix](schema change) bugfix for light schema change while with rollup (#15681)
     new 070555403d [fix](JdbcResource) fix that JdbcResource does not support the jdbcurl of Oracle and SQLServer (#15757)
     new 8779a010fd [fix](tvf) cancel strict restrictions on tvf parameters (#15764)

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../org/apache/doris/common/io/BitmapValue.java    | 14 ++++---
 .../doris/common/jmockit/FieldReflection.java      |  2 +-
 .../doris/common/jmockit/MethodReflection.java     |  2 +-
 .../apache/doris/alter/SchemaChangeHandler.java    | 14 ++++---
 .../org/apache/doris/analysis/BinaryPredicate.java |  5 +--
 .../org/apache/doris/analysis/CreateTableStmt.java |  4 +-
 .../org/apache/doris/catalog/JdbcResource.java     | 30 ++++++++-------
 .../main/java/org/apache/doris/catalog/Type.java   |  2 +-
 .../doris/clone/DynamicPartitionScheduler.java     |  4 +-
 .../doris/common/util/DynamicPartitionUtil.java    |  5 +--
 .../doris/datasource/JdbcExternalCatalog.java      |  2 +-
 .../doris/deploy/impl/LocalFileDeployManager.java  |  2 +-
 .../iceberg/IcebergTableCreationRecordMgr.java     |  2 +-
 .../org/apache/doris/external/jdbc/JdbcClient.java | 17 +++++++-
 .../apache/doris/httpv2/rest/GetLogFileAction.java |  2 +-
 .../main/java/org/apache/doris/load/DppConfig.java | 43 +++++++++++++++++++++
 .../java/org/apache/doris/load/EtlJobInfo.java     | 12 +++++-
 .../doris/persist/TableAddOrDropColumnsInfo.java   |  2 +-
 .../doris/persist/TableRenameColumnInfo.java       |  2 +-
 .../org/apache/doris/planner/JdbcScanNode.java     |  6 ---
 .../apache/doris/planner/SingleNodePlanner.java    |  2 +-
 .../tablefunction/HdfsTableValuedFunction.java     |  6 +--
 .../org/apache/doris/catalog/CatalogTestUtil.java  |  2 +-
 .../doris/planner/TableFunctionPlanTest.java       |  2 +-
 .../test_rollup_add_column.out}                    | 14 ++-----
 ...up_agg.groovy => test_rollup_add_column.groovy} | 45 +++++++++++-----------
 26 files changed, 153 insertions(+), 90 deletions(-)
 copy regression-test/data/{bitmap_functions/test_bitmap_intersect.out => rollup_p0/test_rollup_add_column.out} (63%)
 copy regression-test/suites/rollup_p0/{test_rollup_agg.groovy => test_rollup_add_column.groovy} (64%)


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


[doris] 03/04: [fix](JdbcResource) fix that JdbcResource does not support the jdbcurl of Oracle and SQLServer (#15757)

Posted by mo...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

morningman pushed a commit to branch branch-1.2-lts
in repository https://gitbox.apache.org/repos/asf/doris.git

commit 070555403da333d22f84da85e29e1a18492f2e56
Author: Tiewei Fang <43...@users.noreply.github.com>
AuthorDate: Tue Jan 10 22:38:30 2023 +0800

    [fix](JdbcResource) fix that JdbcResource does not support the jdbcurl of Oracle and SQLServer (#15757)
    
    Actually, `JdbcResource` should support `Oracle` jdbcurl and `SQLServer` jdbcurl for jdbc external table.
---
 .../org/apache/doris/catalog/JdbcResource.java     | 30 ++++++++++++----------
 .../doris/datasource/JdbcExternalCatalog.java      |  2 +-
 .../org/apache/doris/external/jdbc/JdbcClient.java | 17 +++++++++++-
 .../org/apache/doris/planner/JdbcScanNode.java     |  6 -----
 4 files changed, 34 insertions(+), 21 deletions(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/JdbcResource.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/JdbcResource.java
index 9eb06f5d29..8a4e45968b 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/JdbcResource.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/JdbcResource.java
@@ -24,7 +24,6 @@ import org.apache.doris.common.DdlException;
 import org.apache.doris.common.FeConstants;
 import org.apache.doris.common.proc.BaseProcResult;
 import org.apache.doris.common.util.Util;
-import org.apache.doris.external.jdbc.JdbcClientException;
 
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
@@ -61,10 +60,16 @@ import java.util.Map;
 public class JdbcResource extends Resource {
     private static final Logger LOG = LogManager.getLogger(JdbcResource.class);
 
+    public static final String JDBC_MYSQL = "jdbc:mysql";
+    public static final String JDBC_MARIADB = "jdbc:mariadb";
+    public static final String JDBC_POSTGRESQL = "jdbc:postgresql";
+    public static final String JDBC_ORACLE = "jdbc:oracle";
+    public static final String JDBC_SQLSERVER = "jdbc:sqlserver";
+
     public static final String MYSQL = "MYSQL";
     public static final String POSTGRESQL = "POSTGRESQL";
-    // private static final String ORACLE = "ORACLE";
-    // private static final String SQLSERVER = "SQLSERVER";
+    public static final String ORACLE = "ORACLE";
+    private static final String SQLSERVER = "SQLSERVER";
 
     public static final String JDBC_PROPERTIES_PREFIX = "jdbc.";
     public static final String JDBC_URL = "jdbc_url";
@@ -220,21 +225,20 @@ public class JdbcResource extends Resource {
         }
     }
 
-    public static String parseDbType(String url) {
-        if (url.startsWith("jdbc:mysql") || url.startsWith("jdbc:mariadb")) {
+    public static String parseDbType(String url) throws DdlException {
+        if (url.startsWith(JDBC_MYSQL) || url.startsWith(JDBC_MARIADB)) {
             return MYSQL;
-        } else if (url.startsWith("jdbc:postgresql")) {
+        } else if (url.startsWith(JDBC_POSTGRESQL)) {
             return POSTGRESQL;
+        } else if (url.startsWith(JDBC_ORACLE)) {
+            return ORACLE;
+        } else if (url.startsWith(JDBC_SQLSERVER)) {
+            return SQLSERVER;
         }
-        // else if (url.startsWith("jdbc:oracle")) {
-        //     return ORACLE;
-        // }
-        // else if (url.startsWith("jdbc:sqlserver")) {
-        //     return SQLSERVER;
-        throw new JdbcClientException("Unsupported jdbc database type, please check jdbcUrl: " + url);
+        throw new DdlException("Unsupported jdbc database type, please check jdbcUrl: " + url);
     }
 
-    public static String handleJdbcUrl(String jdbcUrl) {
+    public static String handleJdbcUrl(String jdbcUrl) throws DdlException {
         // delete all space in jdbcUrl
         String newJdbcUrl = jdbcUrl.replaceAll(" ", "");
         String dbType = parseDbType(newJdbcUrl);
diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/JdbcExternalCatalog.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/JdbcExternalCatalog.java
index 66c919f8ed..10cfa0e6a0 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/datasource/JdbcExternalCatalog.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/JdbcExternalCatalog.java
@@ -77,7 +77,7 @@ public class JdbcExternalCatalog extends ExternalCatalog {
     }
 
     public String getDatabaseTypeName() {
-        return JdbcResource.parseDbType(getJdbcUrl());
+        return jdbcClient.getDbType();
     }
 
     public String getJdbcUser() {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/external/jdbc/JdbcClient.java b/fe/fe-core/src/main/java/org/apache/doris/external/jdbc/JdbcClient.java
index cb3ef5db9d..11ece6f620 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/external/jdbc/JdbcClient.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/external/jdbc/JdbcClient.java
@@ -45,6 +45,7 @@ import java.util.List;
 @Getter
 public class JdbcClient {
     private static final Logger LOG = LogManager.getLogger(JdbcClient.class);
+
     private static final int HTTP_TIMEOUT_MS = 10000;
 
     private String dbType;
@@ -63,9 +64,9 @@ public class JdbcClient {
         this.jdbcUser = user;
         this.jdbcPasswd = password;
         this.jdbcUrl = jdbcUrl;
+        this.dbType = parseDbType(jdbcUrl);
         this.driverUrl = driverUrl;
         this.driverClass = driverClass;
-        this.dbType = JdbcResource.parseDbType(jdbcUrl);
 
         ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader();
         try {
@@ -496,4 +497,18 @@ public class JdbcClient {
         }
         return dorisTableSchema;
     }
+
+    private String parseDbType(String url) {
+        if (url.startsWith(JdbcResource.JDBC_MYSQL) || url.startsWith(JdbcResource.JDBC_MARIADB)) {
+            return JdbcResource.MYSQL;
+        } else if (url.startsWith(JdbcResource.JDBC_POSTGRESQL)) {
+            return JdbcResource.POSTGRESQL;
+        } else if (url.startsWith(JdbcResource.JDBC_ORACLE)) {
+            return JdbcResource.ORACLE;
+        }
+        // else if (url.startsWith("jdbc:sqlserver")) {
+        //     return SQLSERVER;
+        // }
+        throw new JdbcClientException("Unsupported jdbc database type, please check jdbcUrl: " + url);
+    }
 }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/JdbcScanNode.java b/fe/fe-core/src/main/java/org/apache/doris/planner/JdbcScanNode.java
index c15a12371c..8f3c89ebd5 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/planner/JdbcScanNode.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/planner/JdbcScanNode.java
@@ -54,12 +54,6 @@ public class JdbcScanNode extends ScanNode {
     private String tableName;
     private TOdbcTableType jdbcType;
 
-    public JdbcScanNode(PlanNodeId id, TupleDescriptor desc, JdbcTable tbl) {
-        super(id, desc, "SCAN JDBC", StatisticalType.JDBC_SCAN_NODE);
-        jdbcType = tbl.getJdbcTableType();
-        tableName = OdbcTable.databaseProperName(jdbcType, tbl.getJdbcTable());
-    }
-
     public JdbcScanNode(PlanNodeId id, TupleDescriptor desc, boolean isJdbcExternalTable) {
         super(id, desc, "JdbcScanNode", StatisticalType.JDBC_SCAN_NODE);
         JdbcTable tbl = null;


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


[doris] 02/04: [fix](schema change) bugfix for light schema change while with rollup (#15681)

Posted by mo...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

morningman pushed a commit to branch branch-1.2-lts
in repository https://gitbox.apache.org/repos/asf/doris.git

commit a3c7cbdae49dd9da5489617f40510dae5db25402
Author: camby <10...@qq.com>
AuthorDate: Tue Jan 10 19:03:06 2023 +0800

    [fix](schema change) bugfix for light schema change while with rollup (#15681)
    
    Describe your changes.
    this problem come from pr: #11494
    
    After add column to rollup index, it also change column UniqueId inside base index.
---
 .../apache/doris/alter/SchemaChangeHandler.java    | 14 ++--
 .../data/rollup_p0/test_rollup_add_column.out      |  7 ++
 .../suites/rollup_p0/test_rollup_add_column.groovy | 81 ++++++++++++++++++++++
 3 files changed, 96 insertions(+), 6 deletions(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/alter/SchemaChangeHandler.java b/fe/fe-core/src/main/java/org/apache/doris/alter/SchemaChangeHandler.java
index 1a0489ea58..51420bfb31 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/alter/SchemaChangeHandler.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/alter/SchemaChangeHandler.java
@@ -1106,18 +1106,20 @@ public class SchemaChangeHandler extends AlterHandler {
             hasPos = true;
         }
 
-        newColumn.setUniqueId(newColumnUniqueId);
+        // newColumn may add to baseIndex or rollups, so we need copy before change UniqueId
+        Column toAddColumn = new Column(newColumn);
+        toAddColumn.setUniqueId(newColumnUniqueId);
         if (hasPos) {
-            modIndexSchema.add(posIndex + 1, newColumn);
-        } else if (newColumn.isKey()) {
+            modIndexSchema.add(posIndex + 1, toAddColumn);
+        } else if (toAddColumn.isKey()) {
             // key
-            modIndexSchema.add(posIndex + 1, newColumn);
+            modIndexSchema.add(posIndex + 1, toAddColumn);
         } else if (lastVisibleIdx != -1 && lastVisibleIdx < modIndexSchema.size() - 1) {
             // has hidden columns
-            modIndexSchema.add(lastVisibleIdx + 1, newColumn);
+            modIndexSchema.add(lastVisibleIdx + 1, toAddColumn);
         } else {
             // value
-            modIndexSchema.add(newColumn);
+            modIndexSchema.add(toAddColumn);
         }
         LOG.debug("newColumn setUniqueId({}), modIndexSchema:{}", newColumnUniqueId, modIndexSchema);
     }
diff --git a/regression-test/data/rollup_p0/test_rollup_add_column.out b/regression-test/data/rollup_p0/test_rollup_add_column.out
new file mode 100644
index 0000000000..aa701ef19b
--- /dev/null
+++ b/regression-test/data/rollup_p0/test_rollup_add_column.out
@@ -0,0 +1,7 @@
+-- This file is automatically generated. You should know what you did if you want to edit this
+-- !select_base --
+1	3	2	4	5
+
+-- !select_rollup --
+1	2	4
+
diff --git a/regression-test/suites/rollup_p0/test_rollup_add_column.groovy b/regression-test/suites/rollup_p0/test_rollup_add_column.groovy
new file mode 100644
index 0000000000..5f25bb0b8e
--- /dev/null
+++ b/regression-test/suites/rollup_p0/test_rollup_add_column.groovy
@@ -0,0 +1,81 @@
+// 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("test_rollup_add_column") {
+    def tbName = "test_rollup_add_column"
+    def rollupName = "test_rollup_add_column_index"
+
+    def getJobRollupState = { tableName ->
+        def jobStateResult = sql """  SHOW ALTER TABLE ROLLUP WHERE TableName='${tableName}' ORDER BY CreateTime DESC LIMIT 1; """
+        return jobStateResult[0][8]
+    }
+    def getJobColumnState = { tableName ->
+        def jobStateResult = sql """  SHOW ALTER TABLE COLUMN WHERE TableName='${tableName}' ORDER BY CreateTime DESC LIMIT 1; """
+        return jobStateResult[0][9]
+    }
+
+    sql "DROP TABLE IF EXISTS ${tbName}"
+    sql """
+            CREATE TABLE ${tbName} (
+                `k1` int(11) NOT NULL COMMENT "",
+                `k2` int(11) NOT NULL COMMENT "",
+                `v1` int(11) SUM NOT NULL COMMENT "",
+                `v2` int(11) SUM NOT NULL COMMENT ""
+            )
+            AGGREGATE KEY(`k1`, `k2`)
+            DISTRIBUTED BY HASH(`k1`) BUCKETS 1
+            PROPERTIES ("replication_num" = "1");
+        """
+
+    sql """ALTER TABLE ${tbName} ADD ROLLUP ${rollupName}(k1, v1);"""
+    int max_try_secs = 60
+    while (max_try_secs--) {
+        String res = getJobRollupState(tbName)
+        if (res == "FINISHED") {
+            break
+        } else {
+            Thread.sleep(2000)
+            if (max_try_secs < 1) {
+                println "test timeout," + "state:" + res
+                assertEquals("FINISHED",res)
+            }
+        }
+    }
+    Thread.sleep(2000)
+
+    sql "ALTER TABLE ${tbName} ADD COLUMN k3 INT KEY NOT NULL DEFAULT '3' AFTER k1 TO ${rollupName};"
+    max_try_secs = 60
+    while (max_try_secs--) {
+        String res = getJobColumnState(tbName)
+        if (res == "FINISHED") {
+            break
+        } else {
+            Thread.sleep(2000)
+            if (max_try_secs < 1) {
+                println "test timeout," + "state:" + res
+                assertEquals("FINISHED",res)
+            }
+        }
+    }
+
+    sql "insert into ${tbName} values(1, 2, 3, 4, 5);"
+
+    qt_select_base " select k1,k2,k3,v1,v2 from ${tbName} order by k1,k2,k3"
+    qt_select_rollup " select k1,k3,v1 from ${tbName} order by k1,k3"
+
+    sql "ALTER TABLE ${tbName} DROP ROLLUP ${rollupName};"
+    sql "DROP TABLE ${tbName} FORCE;"
+}


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


[doris] 04/04: [fix](tvf) cancel strict restrictions on tvf parameters (#15764)

Posted by mo...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

morningman pushed a commit to branch branch-1.2-lts
in repository https://gitbox.apache.org/repos/asf/doris.git

commit 8779a010fd45482f92b689e3e399fef15202fe73
Author: Ashin Gau <As...@users.noreply.github.com>
AuthorDate: Tue Jan 10 22:40:19 2023 +0800

    [fix](tvf) cancel strict restrictions on tvf parameters (#15764)
    
    Cancel strict restrictions on tvf parameters.
---
 .../org/apache/doris/tablefunction/HdfsTableValuedFunction.java     | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/tablefunction/HdfsTableValuedFunction.java b/fe/fe-core/src/main/java/org/apache/doris/tablefunction/HdfsTableValuedFunction.java
index c841bb3fad..542fc46bee 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/tablefunction/HdfsTableValuedFunction.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/tablefunction/HdfsTableValuedFunction.java
@@ -70,15 +70,13 @@ public class HdfsTableValuedFunction extends ExternalFileTableValuedFunction {
         for (String key : params.keySet()) {
             if (FILE_FORMAT_PROPERTIES.contains(key.toLowerCase())) {
                 fileFormatParams.put(key, params.get(key));
-            } else if (LOCATION_PROPERTIES.contains(key.toLowerCase()) || HADOOP_FS_NAME.equalsIgnoreCase(key)) {
+            } else {
                 // because HADOOP_FS_NAME contains upper and lower case
                 if (HADOOP_FS_NAME.equalsIgnoreCase(key)) {
                     locationProperties.put(HADOOP_FS_NAME, params.get(key));
                 } else {
-                    locationProperties.put(key.toLowerCase(), params.get(key));
+                    locationProperties.put(key, params.get(key));
                 }
-            } else {
-                throw new AnalysisException(key + " is invalid property");
             }
         }
 


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


[doris] 01/04: [chore](vulnerability) fix fe high risk vulnerability scanned by bug scanner (#15649)

Posted by mo...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

morningman pushed a commit to branch branch-1.2-lts
in repository https://gitbox.apache.org/repos/asf/doris.git

commit 3e47ec879c5b84d4094db00b7486f29851191398
Author: Zhengguo Yang <ya...@gmail.com>
AuthorDate: Tue Jan 10 17:44:18 2023 +0800

    [chore](vulnerability) fix fe high risk vulnerability scanned by bug scanner (#15649)
---
 .../org/apache/doris/common/io/BitmapValue.java    | 14 ++++---
 .../doris/common/jmockit/FieldReflection.java      |  2 +-
 .../doris/common/jmockit/MethodReflection.java     |  2 +-
 .../org/apache/doris/analysis/BinaryPredicate.java |  5 +--
 .../org/apache/doris/analysis/CreateTableStmt.java |  4 +-
 .../main/java/org/apache/doris/catalog/Type.java   |  2 +-
 .../doris/clone/DynamicPartitionScheduler.java     |  4 +-
 .../doris/common/util/DynamicPartitionUtil.java    |  5 +--
 .../doris/deploy/impl/LocalFileDeployManager.java  |  2 +-
 .../iceberg/IcebergTableCreationRecordMgr.java     |  2 +-
 .../apache/doris/httpv2/rest/GetLogFileAction.java |  2 +-
 .../main/java/org/apache/doris/load/DppConfig.java | 43 ++++++++++++++++++++++
 .../java/org/apache/doris/load/EtlJobInfo.java     | 12 +++++-
 .../doris/persist/TableAddOrDropColumnsInfo.java   |  2 +-
 .../doris/persist/TableRenameColumnInfo.java       |  2 +-
 .../apache/doris/planner/SingleNodePlanner.java    |  2 +-
 .../org/apache/doris/catalog/CatalogTestUtil.java  |  2 +-
 .../doris/planner/TableFunctionPlanTest.java       |  2 +-
 18 files changed, 82 insertions(+), 27 deletions(-)

diff --git a/fe/fe-common/src/main/java/org/apache/doris/common/io/BitmapValue.java b/fe/fe-common/src/main/java/org/apache/doris/common/io/BitmapValue.java
index cd6de7b3de..0ed342cf6f 100644
--- a/fe/fe-common/src/main/java/org/apache/doris/common/io/BitmapValue.java
+++ b/fe/fe-common/src/main/java/org/apache/doris/common/io/BitmapValue.java
@@ -320,20 +320,24 @@ public class BitmapValue {
         }
     }
 
-    public boolean equals(BitmapValue other) {
+    @Override
+    public boolean equals(Object other) {
+        if (other == null || !(other instanceof BitmapValue)) {
+            return false;
+        }
         boolean ret = false;
-        if (this.bitmapType != other.bitmapType) {
+        if (this.bitmapType != ((BitmapValue) other).bitmapType) {
             return false;
         }
-        switch (other.bitmapType) { // CHECKSTYLE IGNORE THIS LINE: missing switch default
+        switch (((BitmapValue) other).bitmapType) { // CHECKSTYLE IGNORE THIS LINE: missing switch default
             case EMPTY:
                 ret = true;
                 break;
             case SINGLE_VALUE:
-                ret = this.singleValue == other.singleValue;
+                ret = this.singleValue == ((BitmapValue) other).singleValue;
                 break;
             case BITMAP_VALUE:
-                ret = bitmap.equals(other.bitmap);
+                ret = bitmap.equals(((BitmapValue) other).bitmap);
         }
         return ret;
     }
diff --git a/fe/fe-common/src/main/java/org/apache/doris/common/jmockit/FieldReflection.java b/fe/fe-common/src/main/java/org/apache/doris/common/jmockit/FieldReflection.java
index 1974d4f53b..084b5bec1a 100644
--- a/fe/fe-common/src/main/java/org/apache/doris/common/jmockit/FieldReflection.java
+++ b/fe/fe-common/src/main/java/org/apache/doris/common/jmockit/FieldReflection.java
@@ -281,7 +281,7 @@ public final class FieldReflection {
     private static boolean isSameType(Class<?> firstType, Class<?> secondType) {
         return firstType == secondType
                 || firstType.isPrimitive() && firstType == AutoType.getPrimitiveType(secondType)
-                || secondType.isPrimitive() && firstType == AutoType.getPrimitiveType(secondType);
+                || secondType.isPrimitive() && secondType == AutoType.getPrimitiveType(firstType);
     }
 
 }
diff --git a/fe/fe-common/src/main/java/org/apache/doris/common/jmockit/MethodReflection.java b/fe/fe-common/src/main/java/org/apache/doris/common/jmockit/MethodReflection.java
index 47bd5e5f2a..749e2e7cca 100644
--- a/fe/fe-common/src/main/java/org/apache/doris/common/jmockit/MethodReflection.java
+++ b/fe/fe-common/src/main/java/org/apache/doris/common/jmockit/MethodReflection.java
@@ -158,6 +158,6 @@ public final class MethodReflection {
     private static boolean isSameType(Class<?> firstType, Class<?> secondType) {
         return firstType == secondType
                 || firstType.isPrimitive() && firstType == AutoType.getPrimitiveType(secondType)
-                || secondType.isPrimitive() && firstType == AutoType.getPrimitiveType(secondType);
+                || secondType.isPrimitive() && secondType == AutoType.getPrimitiveType(firstType);
     }
 }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/BinaryPredicate.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/BinaryPredicate.java
index bd2b8245bd..fef28c4f44 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/BinaryPredicate.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/BinaryPredicate.java
@@ -357,9 +357,8 @@ public class BinaryPredicate extends Predicate implements Writable {
         if (t1 == PrimitiveType.VARCHAR && t2 == PrimitiveType.VARCHAR) {
             return Type.VARCHAR;
         }
-        if (t1 == PrimitiveType.STRING && t2 == PrimitiveType.STRING
-                || t1 == PrimitiveType.STRING && t2 == PrimitiveType.VARCHAR
-                || t1 == PrimitiveType.VARCHAR && t2 == PrimitiveType.STRING) {
+        if ((t1 == PrimitiveType.STRING && (t2 == PrimitiveType.VARCHAR || t2 == PrimitiveType.STRING)) || (
+                t2 == PrimitiveType.STRING && (t1 == PrimitiveType.VARCHAR || t1 == PrimitiveType.STRING))) {
             return Type.STRING;
         }
         if (t1 == PrimitiveType.BIGINT && t2 == PrimitiveType.BIGINT) {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateTableStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateTableStmt.java
index b7994b8e3d..826aee4663 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateTableStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateTableStmt.java
@@ -569,9 +569,7 @@ public class CreateTableStmt extends DdlStmt {
             }
         }
         sb.append("\n)");
-        if (engineName != null) {
-            sb.append(" ENGINE = ").append(engineName);
-        }
+        sb.append(" ENGINE = ").append(engineName);
 
         if (keysDesc != null) {
             sb.append("\n").append(keysDesc.toSql());
diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Type.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/Type.java
index 34b9cb49b8..fde7dead86 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Type.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Type.java
@@ -768,7 +768,7 @@ public abstract class Type {
                         || scalarType.getType() == TPrimitiveType.DECIMAL64
                         || scalarType.getType() == TPrimitiveType.DECIMAL128I) {
                     Preconditions.checkState(scalarType.isSetPrecision()
-                            && scalarType.isSetPrecision());
+                            && scalarType.isSetScale());
                     type = ScalarType.createDecimalType(scalarType.getPrecision(),
                             scalarType.getScale());
                 } else if (scalarType.getType() == TPrimitiveType.DATETIMEV2) {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/clone/DynamicPartitionScheduler.java b/fe/fe-core/src/main/java/org/apache/doris/clone/DynamicPartitionScheduler.java
index 2d8408cc06..754126caaa 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/clone/DynamicPartitionScheduler.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/clone/DynamicPartitionScheduler.java
@@ -347,6 +347,8 @@ public class DynamicPartitionScheduler extends MasterDaemon {
                     reservedHistoryPartitionKeyRangeList.add(reservedHistoryPartitionKeyRange);
                 } catch (IllegalArgumentException e) {
                     return dropPartitionClauses;
+                } catch (AnalysisException e) {
+                    throw new DdlException(e.getMessage());
                 }
             }
         }
@@ -390,7 +392,7 @@ public class DynamicPartitionScheduler extends MasterDaemon {
             }
 
             ArrayList<AddPartitionClause> addPartitionClauses = new ArrayList<>();
-            ArrayList<DropPartitionClause> dropPartitionClauses = null;
+            ArrayList<DropPartitionClause> dropPartitionClauses = new ArrayList<>();
             String tableName = null;
             boolean skipAddPartition = false;
             OlapTable olapTable;
diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/util/DynamicPartitionUtil.java b/fe/fe-core/src/main/java/org/apache/doris/common/util/DynamicPartitionUtil.java
index c0df533032..60247b4ec7 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/common/util/DynamicPartitionUtil.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/common/util/DynamicPartitionUtil.java
@@ -729,7 +729,7 @@ public class DynamicPartitionUtil {
     }
 
     public static String getHistoryPartitionRangeString(DynamicPartitionProperty dynamicPartitionProperty,
-            String time, String format) {
+            String time, String format) throws AnalysisException {
         ZoneId zoneId = dynamicPartitionProperty.getTimeZone().toZoneId();
         Date date = null;
         Timestamp timestamp = null;
@@ -740,8 +740,7 @@ public class DynamicPartitionUtil {
             date = simpleDateFormat.parse(time);
         } catch (ParseException e) {
             LOG.warn("Parse dynamic partition periods error. Error={}", e.getMessage());
-            return getFormattedTimeWithoutMinuteSecond(
-                    ZonedDateTime.parse(timestamp.toString(), dateTimeFormatter), format);
+            throw new AnalysisException("Parse dynamic partition periods error. Error=" + e.getMessage());
         }
         timestamp = new Timestamp(date.getTime());
         return getFormattedTimeWithoutMinuteSecond(
diff --git a/fe/fe-core/src/main/java/org/apache/doris/deploy/impl/LocalFileDeployManager.java b/fe/fe-core/src/main/java/org/apache/doris/deploy/impl/LocalFileDeployManager.java
index 4ff49901cb..e5023a8347 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/deploy/impl/LocalFileDeployManager.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/deploy/impl/LocalFileDeployManager.java
@@ -133,7 +133,7 @@ public class LocalFileDeployManager extends DeployManager {
                     LOG.warn("failed to close buffered reader after reading file: {}", clusterInfoFile, e);
                 }
             }
-            if (lock != null && channel.isOpen()) {
+            if (lock != null) {
                 try {
                     lock.release();
                 } catch (IOException e) {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/external/iceberg/IcebergTableCreationRecordMgr.java b/fe/fe-core/src/main/java/org/apache/doris/external/iceberg/IcebergTableCreationRecordMgr.java
index 475215c327..a98dd7f2ab 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/external/iceberg/IcebergTableCreationRecordMgr.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/external/iceberg/IcebergTableCreationRecordMgr.java
@@ -152,7 +152,7 @@ public class IcebergTableCreationRecordMgr extends MasterDaemon {
             try {
                 icebergTables = icebergCatalog.listTables(icebergProperty.getDatabase());
 
-            } catch (DorisIcebergException e) {
+            } catch (Exception e) {
                 addTableCreationRecord(db.getId(), -1, db.getFullName(), "", FAIL,
                         prop.writeTimeFormat(new Date(System.currentTimeMillis())), e.getMessage());
                 LOG.warn("Failed list remote Iceberg database, hive.metastore.uris[{}], database[{}], error: {}",
diff --git a/fe/fe-core/src/main/java/org/apache/doris/httpv2/rest/GetLogFileAction.java b/fe/fe-core/src/main/java/org/apache/doris/httpv2/rest/GetLogFileAction.java
index 9c97f2ee90..9535cc650d 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/httpv2/rest/GetLogFileAction.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/httpv2/rest/GetLogFileAction.java
@@ -88,7 +88,7 @@ public class GetLogFileAction extends RestBaseController {
                     return ResponseEntityBuilder.internalError(e.getMessage());
                 }
             } else {
-                return ResponseEntityBuilder.okWithCommonError("Log file not exist: " + log.getName());
+                return ResponseEntityBuilder.okWithCommonError("Log file not exist: " + logFile);
             }
         }
         return ResponseEntityBuilder.ok();
diff --git a/fe/fe-core/src/main/java/org/apache/doris/load/DppConfig.java b/fe/fe-core/src/main/java/org/apache/doris/load/DppConfig.java
index e113ce539c..5b15ced9fb 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/load/DppConfig.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/load/DppConfig.java
@@ -408,6 +408,49 @@ public class DppConfig implements Writable {
 
     @Override
     public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+
+        if (!(obj instanceof DppConfig)) {
+            return false;
+        }
+
+        DppConfig other = (DppConfig) obj;
+        if (paloPath == null) {
+            if (other.paloPath != null) {
+                return false;
+            }
+        } else {
+            if (!paloPath.equals(other.paloPath)) {
+                return false;
+            }
+        }
+
+        if (httpPort != other.httpPort) {
+            return false;
+        }
+
+        if (hadoopConfigs == null) {
+            if (other.hadoopConfigs != null) {
+                return false;
+            }
+        } else {
+            if (!hadoopConfigs.equals(other.hadoopConfigs)) {
+                return false;
+            }
+        }
+
+        if (priority == null) {
+            if (other.priority != null) {
+                return false;
+            }
+        } else {
+            if (!priority.equals(other.priority)) {
+                return false;
+            }
+        }
+
         return true;
     }
 }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/load/EtlJobInfo.java b/fe/fe-core/src/main/java/org/apache/doris/load/EtlJobInfo.java
index c799d6b337..f0360cb547 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/load/EtlJobInfo.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/load/EtlJobInfo.java
@@ -54,6 +54,16 @@ public class EtlJobInfo implements Writable {
 
     @Override
     public boolean equals(Object obj) {
-        return true;
+        if (obj == null) {
+            return false;
+        }
+        if (this == obj) {
+            return true;
+        }
+        if (obj instanceof EtlJobInfo) {
+            EtlJobInfo other = (EtlJobInfo) obj;
+            return jobStatus.equals(other.jobStatus);
+        }
+        return false;
     }
 }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/persist/TableAddOrDropColumnsInfo.java b/fe/fe-core/src/main/java/org/apache/doris/persist/TableAddOrDropColumnsInfo.java
index ad4be3ad9d..c6cdd2ce9e 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/persist/TableAddOrDropColumnsInfo.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/persist/TableAddOrDropColumnsInfo.java
@@ -97,7 +97,7 @@ public class TableAddOrDropColumnsInfo implements Writable {
 
         TableAddOrDropColumnsInfo info = (TableAddOrDropColumnsInfo) obj;
 
-        return (dbId == info.dbId && tableId == tableId
+        return (dbId == info.dbId && tableId == info.tableId
                 && indexSchemaMap.equals(info.indexSchemaMap) && indexes.equals(info.indexes)
                 && jobId == info.jobId);
     }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/persist/TableRenameColumnInfo.java b/fe/fe-core/src/main/java/org/apache/doris/persist/TableRenameColumnInfo.java
index f7a388756d..aec3a56a4f 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/persist/TableRenameColumnInfo.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/persist/TableRenameColumnInfo.java
@@ -85,7 +85,7 @@ public class TableRenameColumnInfo implements Writable {
 
         TableRenameColumnInfo info = (TableRenameColumnInfo) obj;
 
-        return (dbId == info.dbId && tableId == tableId
+        return (dbId == info.dbId && tableId == info.tableId
                 && colName.equals(info.colName) && newColName.equals(info.newColName));
     }
 
diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java b/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java
index 8b27b1e1a3..5a94536483 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java
@@ -1712,7 +1712,7 @@ public class SingleNodePlanner {
             return;
         }
         preds.removeAll(pushDownFailedPredicates);
-        unassignedConjuncts.remove(preds);
+        unassignedConjuncts.removeAll(preds);
         unassignedConjuncts.addAll(pushDownFailedPredicates);
 
         // Remove unregistered predicates that reference the same slot on
diff --git a/fe/fe-core/src/test/java/org/apache/doris/catalog/CatalogTestUtil.java b/fe/fe-core/src/test/java/org/apache/doris/catalog/CatalogTestUtil.java
index 61f5f0d967..0c180e68aa 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/catalog/CatalogTestUtil.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/catalog/CatalogTestUtil.java
@@ -163,7 +163,7 @@ public class CatalogTestUtil {
                             if (slaveReplica.getBackendId() != masterReplica.getBackendId()
                                     || slaveReplica.getVersion() != masterReplica.getVersion()
                                     || slaveReplica.getLastFailedVersion() != masterReplica.getLastFailedVersion()
-                                    || slaveReplica.getLastSuccessVersion() != slaveReplica.getLastSuccessVersion()) {
+                                    || slaveReplica.getLastSuccessVersion() != masterReplica.getLastSuccessVersion()) {
                                 return false;
                             }
                         }
diff --git a/fe/fe-core/src/test/java/org/apache/doris/planner/TableFunctionPlanTest.java b/fe/fe-core/src/test/java/org/apache/doris/planner/TableFunctionPlanTest.java
index b29778a076..029b5c39b1 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/planner/TableFunctionPlanTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/planner/TableFunctionPlanTest.java
@@ -459,7 +459,7 @@ public class TableFunctionPlanTest {
         String sql = "desc verbose select min(c1) from (select k1 as c1, min(k2) as c2 from db1.tbl1 group by c1) a "
                 + "lateral view explode_split(c2, \",\") tmp1 as e1 order by min(c1)";
         String errorMsg = UtFrameUtils.getSQLPlanOrErrorMsg(ctx, sql, true);
-        errorMsg.equalsIgnoreCase("lateral view as a inline view");
+        Assert.assertTrue(errorMsg.toLowerCase().contains("lateral view as a inline view"));
     }
 
     /*


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