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 eb312d71607 branch-2.1: [chore](persist) Save old index schema map in 
TableAddOrDropColumnsInfo #46606 (#46741)
eb312d71607 is described below

commit eb312d71607796137baa63263eac68302ee69f47
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Fri Jan 10 17:06:59 2025 +0800

    branch-2.1: [chore](persist) Save old index schema map in 
TableAddOrDropColumnsInfo #46606 (#46741)
    
    Cherry-picked from #46606
    
    Co-authored-by: walter <maoch...@selectdb.com>
---
 .../main/java/org/apache/doris/alter/SchemaChangeHandler.java | 11 ++++++-----
 .../main/java/org/apache/doris/alter/SchemaChangeJobV2.java   |  4 ++--
 .../src/main/java/org/apache/doris/catalog/OlapTable.java     |  9 +++++++++
 .../org/apache/doris/persist/TableAddOrDropColumnsInfo.java   |  8 +++++++-
 .../apache/doris/persist/TableAddOrDropColumnsInfoTest.java   |  5 ++++-
 5 files changed, 28 insertions(+), 9 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 15caeb55ad7..2721dd49d99 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
@@ -1954,16 +1954,16 @@ public class SchemaChangeHandler extends AlterHandler {
                     }
                 } else if (alterClause instanceof AddColumnsClause) {
                     // add columns
-                    boolean clauseCanLigthSchemaChange = 
processAddColumns((AddColumnsClause) alterClause, olapTable,
+                    boolean clauseCanLightSchemaChange = 
processAddColumns((AddColumnsClause) alterClause, olapTable,
                             indexSchemaMap, false, colUniqueIdSupplierMap);
-                    if (!clauseCanLigthSchemaChange) {
+                    if (!clauseCanLightSchemaChange) {
                         lightSchemaChange = false;
                     }
                 } else if (alterClause instanceof DropColumnClause) {
                     // drop column and drop indexes on this column
-                    boolean clauseCanLigthSchemaChange = 
processDropColumn((DropColumnClause) alterClause, olapTable,
+                    boolean clauseCanLightSchemaChange = 
processDropColumn((DropColumnClause) alterClause, olapTable,
                             indexSchemaMap, newIndexes);
-                    if (!clauseCanLigthSchemaChange) {
+                    if (!clauseCanLightSchemaChange) {
                         lightSchemaChange = false;
                     }
                 } else if (alterClause instanceof ModifyColumnClause) {
@@ -2772,6 +2772,7 @@ public class SchemaChangeHandler extends AlterHandler {
         }
 
         //update base index schema
+        Map<Long, List<Column>> oldIndexSchemaMap = 
olapTable.getCopiedIndexIdToSchema(true);
         try {
             updateBaseIndexSchema(olapTable, indexSchemaMap, indexes);
         } catch (Exception e) {
@@ -2817,7 +2818,7 @@ public class SchemaChangeHandler extends AlterHandler {
         } else {
             if (!isReplay) {
                 TableAddOrDropColumnsInfo info = new 
TableAddOrDropColumnsInfo(rawSql, db.getId(), olapTable.getId(),
-                        indexSchemaMap, indexes, jobId);
+                        indexSchemaMap, oldIndexSchemaMap, indexes, jobId);
                 if (LOG.isDebugEnabled()) {
                     LOG.debug("logModifyTableAddOrDropColumns info:{}", info);
                 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/alter/SchemaChangeJobV2.java 
b/fe/fe-core/src/main/java/org/apache/doris/alter/SchemaChangeJobV2.java
index e98d8066a11..fb6aeb3dbb2 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/alter/SchemaChangeJobV2.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/alter/SchemaChangeJobV2.java
@@ -557,7 +557,7 @@ public class SchemaChangeJobV2 extends AlterJobV2 {
                 Partition partition = tbl.getPartition(partitionId);
                 Preconditions.checkNotNull(partition, partitionId);
 
-                long visiableVersion = partition.getVisibleVersion();
+                long visibleVersion = partition.getVisibleVersion();
                 short expectReplicationNum = tbl.getPartitionInfo()
                         
.getReplicaAllocation(partition.getId()).getTotalReplicaNum();
 
@@ -570,7 +570,7 @@ public class SchemaChangeJobV2 extends AlterJobV2 {
                         int healthyReplicaNum = 0;
                         for (Replica replica : replicas) {
                             if (!replica.isBad() && 
replica.getLastFailedVersion() < 0
-                                    && 
replica.checkVersionCatchUp(visiableVersion, false)) {
+                                    && 
replica.checkVersionCatchUp(visibleVersion, false)) {
                                 healthyReplicaNum++;
                             }
                         }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java
index df1ad45c3a9..4416a708670 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java
@@ -907,6 +907,15 @@ public class OlapTable extends Table implements 
MTMVRelatedTableIf {
         return result;
     }
 
+    // get schemas with a copied column list
+    public Map<Long, List<Column>> getCopiedIndexIdToSchema(boolean full) {
+        Map<Long, List<Column>> result = Maps.newHashMap();
+        for (Map.Entry<Long, MaterializedIndexMeta> entry : 
indexIdToMeta.entrySet()) {
+            result.put(entry.getKey(), new 
ArrayList<>(entry.getValue().getSchema(full)));
+        }
+        return result;
+    }
+
     public List<Column> getSchemaByIndexId(Long indexId) {
         return getSchemaByIndexId(indexId, Util.showHiddenColumns());
     }
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 99396080674..14b7187fac6 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
@@ -42,6 +42,8 @@ public class TableAddOrDropColumnsInfo implements Writable {
     private long tableId;
     @SerializedName(value = "indexSchemaMap")
     private Map<Long, LinkedList<Column>> indexSchemaMap;
+    @SerializedName(value = "oldIndexSchemaMap")
+    private Map<Long, List<Column>> oldIndexSchemaMap;  // only used for ccr, 
not included in equals
     @SerializedName(value = "indexes")
     private List<Index> indexes;
     @SerializedName(value = "jobId")
@@ -50,11 +52,14 @@ public class TableAddOrDropColumnsInfo implements Writable {
     private String rawSql;
 
     public TableAddOrDropColumnsInfo(String rawSql, long dbId, long tableId,
-            Map<Long, LinkedList<Column>> indexSchemaMap, List<Index> indexes, 
long jobId) {
+            Map<Long, LinkedList<Column>> indexSchemaMap,
+            Map<Long, List<Column>> oldIndexSchemaMap,
+            List<Index> indexes, long jobId) {
         this.rawSql = rawSql;
         this.dbId = dbId;
         this.tableId = tableId;
         this.indexSchemaMap = indexSchemaMap;
+        this.oldIndexSchemaMap = oldIndexSchemaMap;
         this.indexes = indexes;
         this.jobId = jobId;
     }
@@ -111,6 +116,7 @@ public class TableAddOrDropColumnsInfo implements Writable {
         sb.append(" dbId: ").append(dbId);
         sb.append(" tableId: ").append(tableId);
         sb.append(" indexSchemaMap: ").append(indexSchemaMap);
+        sb.append(" oldIndexSchemaMap: ").append(oldIndexSchemaMap);
         sb.append(" indexes: ").append(indexes);
         sb.append(" jobId: ").append(jobId);
         return sb.toString();
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/persist/TableAddOrDropColumnsInfoTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/persist/TableAddOrDropColumnsInfoTest.java
index be71998eac3..4df2759e9df 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/persist/TableAddOrDropColumnsInfoTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/persist/TableAddOrDropColumnsInfoTest.java
@@ -64,11 +64,14 @@ public class TableAddOrDropColumnsInfoTest {
         Map<Long, LinkedList<Column>> indexSchemaMap = new HashMap<>();
         indexSchemaMap.put(tableId, fullSchema);
 
+        Map<Long, List<Column>> oldIndexSchemaMap = new HashMap<>();
+        oldIndexSchemaMap.put(tableId, fullSchema);
+
         List<Index> indexes = Lists.newArrayList(
                 new Index(0, "index", Lists.newArrayList("testCol1"), 
IndexDef.IndexType.INVERTED, null, "xxxxxx", Lists.newArrayList(1)));
 
         TableAddOrDropColumnsInfo tableAddOrDropColumnsInfo1 = new 
TableAddOrDropColumnsInfo("", dbId, tableId,
-                indexSchemaMap, indexes, jobId);
+                indexSchemaMap, oldIndexSchemaMap, indexes, jobId);
 
         String c1Json = GsonUtils.GSON.toJson(tableAddOrDropColumnsInfo1);
         Text.writeString(out, c1Json);


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

Reply via email to