This is an automated email from the ASF dual-hosted git repository. yiguolei pushed a commit to branch 2.1-tmp in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/2.1-tmp by this push: new 29777bc3a8f [fix](fe)reduce memory usage in alter (#32810) (#33474) 29777bc3a8f is described below commit 29777bc3a8f5d5c9ecce0974c5411de59a865430 Author: Luwei <814383...@qq.com> AuthorDate: Wed Apr 10 16:04:50 2024 +0800 [fix](fe)reduce memory usage in alter (#32810) (#33474) Co-authored-by: kylinmac <kylin...@163.com> --- .../org/apache/doris/alter/SchemaChangeJobV2.java | 51 ++++++++++------------ 1 file changed, 23 insertions(+), 28 deletions(-) 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 011cc53979f..33e605c7af4 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 @@ -418,6 +418,29 @@ public class SchemaChangeJobV2 extends AlterJobV2 { Preconditions.checkState(tbl.getState() == OlapTableState.SCHEMA_CHANGE); + Map<String, Expr> defineExprs = Maps.newHashMap(); + List<Column> fullSchema = tbl.getBaseSchema(true); + DescriptorTable descTable = new DescriptorTable(); + TupleDescriptor destTupleDesc = descTable.createTupleDescriptor(); + for (Column column : fullSchema) { + SlotDescriptor destSlotDesc = descTable.addSlotDescriptor(destTupleDesc); + destSlotDesc.setIsMaterialized(true); + destSlotDesc.setColumn(column); + destSlotDesc.setIsNullable(column.isAllowNull()); + + if (indexColumnMap.containsKey(SchemaChangeHandler.SHADOW_NAME_PREFIX + column.getName())) { + Column newColumn = indexColumnMap.get(SchemaChangeHandler.SHADOW_NAME_PREFIX + column.getName()); + if (newColumn.getType() != column.getType()) { + try { + SlotRef slot = new SlotRef(destSlotDesc); + slot.setCol(column.getName()); + defineExprs.put(column.getName(), slot.castTo(newColumn.getType())); + } catch (AnalysisException e) { + throw new AlterCancelException(e.getMessage()); + } + } + } + } for (long partitionId : partitionIndexMap.rowKeySet()) { Partition partition = tbl.getPartition(partitionId); Preconditions.checkNotNull(partition, partitionId); @@ -430,34 +453,6 @@ public class SchemaChangeJobV2 extends AlterJobV2 { for (Map.Entry<Long, MaterializedIndex> entry : shadowIndexMap.entrySet()) { long shadowIdxId = entry.getKey(); MaterializedIndex shadowIdx = entry.getValue(); - - Map<String, Expr> defineExprs = Maps.newHashMap(); - - List<Column> fullSchema = tbl.getBaseSchema(true); - DescriptorTable descTable = new DescriptorTable(); - TupleDescriptor destTupleDesc = descTable.createTupleDescriptor(); - for (Column column : fullSchema) { - SlotDescriptor destSlotDesc = descTable.addSlotDescriptor(destTupleDesc); - destSlotDesc.setIsMaterialized(true); - destSlotDesc.setColumn(column); - destSlotDesc.setIsNullable(column.isAllowNull()); - - if (indexColumnMap.containsKey(SchemaChangeHandler.SHADOW_NAME_PREFIX + column.getName())) { - Column newColumn = indexColumnMap - .get(SchemaChangeHandler.SHADOW_NAME_PREFIX + column.getName()); - if (newColumn.getType() != column.getType()) { - try { - SlotRef slot = new SlotRef(destSlotDesc); - slot.setCol(column.getName()); - defineExprs.put(column.getName(), slot.castTo(newColumn.getType())); - } catch (AnalysisException e) { - throw new AlterCancelException(e.getMessage()); - } - } - } - - } - long originIdxId = indexIdMap.get(shadowIdxId); int shadowSchemaHash = indexSchemaVersionAndHashMap.get(shadowIdxId).schemaHash; int originSchemaHash = tbl.getSchemaHashByIndexId(indexIdMap.get(shadowIdxId)); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org