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

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


The following commit(s) were added to refs/heads/branch-4.0 by this push:
     new c2a1c7f6f9a branch-4.0: [fix](constraint) avoid throw exception for 
upgrade compatibility (#61664)
c2a1c7f6f9a is described below

commit c2a1c7f6f9abab1787afe84233c17159edece7ff
Author: morrySnow <[email protected]>
AuthorDate: Wed Mar 25 10:20:48 2026 +0800

    branch-4.0: [fix](constraint) avoid throw exception for upgrade 
compatibility (#61664)
    
    because the lower version do not remove ref table in foreign
    constraints, so add a protection to avoid upgrade failed.
---
 .../doris/catalog/constraint/PrimaryKeyConstraint.java   | 16 +++++++++++++---
 .../trees/plans/commands/DropConstraintCommand.java      | 14 --------------
 2 files changed, 13 insertions(+), 17 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/catalog/constraint/PrimaryKeyConstraint.java
 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/constraint/PrimaryKeyConstraint.java
index 28f90a4a03a..6fc888be820 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/catalog/constraint/PrimaryKeyConstraint.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/constraint/PrimaryKeyConstraint.java
@@ -24,12 +24,16 @@ import com.google.common.base.Objects;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 import com.google.gson.annotations.SerializedName;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
 public class PrimaryKeyConstraint extends Constraint {
+    public static final Logger LOG = 
LogManager.getLogger(PrimaryKeyConstraint.class);
+
     @SerializedName(value = "cols")
     private final Set<String> columns;
 
@@ -55,9 +59,15 @@ public class PrimaryKeyConstraint extends Constraint {
     }
 
     public List<TableIf> getForeignTables() {
-        return foreignTables.stream()
-                .map(TableIdentifier::toTableIf)
-                .collect(ImmutableList.toImmutableList());
+        ImmutableList.Builder<TableIf> tableIfBuilder = 
ImmutableList.builder();
+        for (TableIdentifier tableIdentifier : foreignTables) {
+            try {
+                tableIfBuilder.add(tableIdentifier.toTableIf());
+            } catch (Exception e) {
+                LOG.warn("get foreign table failed", e);
+            }
+        }
+        return tableIfBuilder.build();
     }
 
     public void removeForeignTable(TableIdentifier tableIdentifier) {
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DropConstraintCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DropConstraintCommand.java
index 93acf494eea..81147411b95 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DropConstraintCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DropConstraintCommand.java
@@ -19,8 +19,6 @@ package org.apache.doris.nereids.trees.plans.commands;
 
 import org.apache.doris.catalog.TableIf;
 import org.apache.doris.catalog.constraint.Constraint;
-import org.apache.doris.catalog.constraint.ForeignKeyConstraint;
-import org.apache.doris.catalog.constraint.PrimaryKeyConstraint;
 import org.apache.doris.nereids.NereidsPlanner;
 import org.apache.doris.nereids.exceptions.AnalysisException;
 import org.apache.doris.nereids.properties.PhysicalProperties;
@@ -33,11 +31,9 @@ import 
org.apache.doris.nereids.trees.plans.visitor.PlanVisitor;
 import org.apache.doris.qe.ConnectContext;
 import org.apache.doris.qe.StmtExecutor;
 
-import com.google.common.collect.Lists;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
-import java.util.List;
 import java.util.Set;
 
 /**
@@ -58,16 +54,6 @@ public class DropConstraintCommand extends Command 
implements ForwardWithSync {
         this.plan = plan;
     }
 
-    private static List<TableIf> getConstraintRelatedTables(Constraint 
constraint) {
-        List<TableIf> tables = Lists.newArrayList();
-        if (constraint instanceof PrimaryKeyConstraint) {
-            tables.addAll(((PrimaryKeyConstraint) 
constraint).getForeignTables());
-        } else if (constraint instanceof ForeignKeyConstraint) {
-            tables.add(((ForeignKeyConstraint) 
constraint).getReferencedTable());
-        }
-        return tables;
-    }
-
     @Override
     public void run(ConnectContext ctx, StmtExecutor executor) throws 
Exception {
         TableIf table = extractTable(ctx, plan);


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

Reply via email to