From 97dd634cdc8fc9c6430d4959367bd44c0a0dc655 Mon Sep 17 00:00:00 2001 From: Zhengguo Yang Date: Wed, 30 Sep 2020 10:01:49 +0800 Subject: [PATCH] Fix hidden cloumn may disappeared (#4686) * xx * xx * xx --- .../org/apache/doris/alter/MaterializedViewHandler.java | 8 +++++++- .../java/org/apache/doris/alter/SchemaChangeHandler.java | 4 ++-- .../src/main/java/org/apache/doris/catalog/OlapTable.java | 7 ++++++- 3 files changed, 15 insertions(+), 4 deletions(-) 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 d121a29ec7..3e920907cf 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 class MaterializedViewHandler extends AlterHandler { 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 class MaterializedViewHandler extends AlterHandler { 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 916eb73398..6b061ed383 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 @@ public class SchemaChangeHandler extends AlterHandler { // 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 class SchemaChangeHandler extends AlterHandler { // 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 e30e896946..8ae24b3270 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 class OlapTable extends Table { // 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; }