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]