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