diff --git a/fe/fe-core/src/main/java/org/apache/doris/alter/MaterializedViewHandler.java b/fe/fe-core/src/main/java/org/apache/doris/alter/MaterializedViewHandler.java index d121a29ec7c5eb..3e920907cfd25e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/alter/MaterializedViewHandler.java +++ b/fe/fe-core/src/main/java/org/apache/doris/alter/MaterializedViewHandler.java @@ -517,7 +517,7 @@ public List checkAndPrepareMaterializedView(AddRollupClause addRollupCla boolean meetReplaceValue = false; KeysType keysType = olapTable.getKeysType(); Map baseColumnNameToColumn = Maps.newHashMap(); - for (Column column : olapTable.getSchemaByIndexId(baseIndexId)) { + for (Column column : olapTable.getSchemaByIndexId(baseIndexId, true)) { baseColumnNameToColumn.put(column.getName(), column); } if (keysType.isAggregationFamily()) { @@ -555,6 +555,12 @@ public List checkAndPrepareMaterializedView(AddRollupClause addRollupCla throw new DdlException("Rollup should contains all keys if there is a REPLACE value"); } } + if (KeysType.UNIQUE_KEYS == olapTable.getKeysType() && olapTable.hasDeleteSign()) { + rollupSchema.add(new Column(olapTable.getDeleteSignColumn())); + } + if (KeysType.UNIQUE_KEYS == olapTable.getKeysType() && olapTable.hasSequenceCol()) { + rollupSchema.add(new Column(olapTable.getSequenceCol())); + } } } else if (KeysType.DUP_KEYS == keysType) { // supplement the duplicate key 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 916eb73398bcaa..6b061ed3831735 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 @@ -582,7 +582,7 @@ private void addColumnInternal(OlapTable olapTable, Column newColumn, ColumnPosi // check if the new column already exist in base schema. // do not support adding new column which already exist in base schema. - List baseSchema = olapTable.getBaseSchema(); + List baseSchema = olapTable.getBaseSchema(true); boolean found = false; for (Column column : baseSchema) { if (column.getName().equalsIgnoreCase(newColName)) { @@ -1381,7 +1381,7 @@ public void process(List alterClauses, String clusterName, Database // index id -> index schema Map> indexSchemaMap = new HashMap<>(); - for (Map.Entry> entry : olapTable.getIndexIdToSchema().entrySet()) { + for (Map.Entry> entry : olapTable.getIndexIdToSchema(true).entrySet()) { indexSchemaMap.put(entry.getKey(), new LinkedList<>(entry.getValue())); } List newIndexes = olapTable.getCopiedIndexes(); 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 e30e896946b55d..8ae24b327070b2 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 @@ -514,9 +514,14 @@ public List getIndexIdListExceptBaseIndex() { // schema public Map> getIndexIdToSchema() { + return getIndexIdToSchema(Util.showHiddenColumns()); + } + + // schema + public Map> getIndexIdToSchema(boolean full) { Map> result = Maps.newHashMap(); for (Map.Entry entry : indexIdToMeta.entrySet()) { - result.put(entry.getKey(), entry.getValue().getSchema(Util.showHiddenColumns())); + result.put(entry.getKey(), entry.getValue().getSchema(full)); } return result; }