This is an automated email from the ASF dual-hosted git repository. yiguolei pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push: new a291cb17be [fix](information-schema) fix bug that query tables in information_schema db will return error #15336 a291cb17be is described below commit a291cb17beb8e7dd47c91654fa08ec9e21ceaf45 Author: Mingyu Chen <morning...@163.com> AuthorDate: Sun Dec 25 10:09:40 2022 +0800 [fix](information-schema) fix bug that query tables in information_schema db will return error #15336 --- .../apache/doris/alter/SchemaChangeHandler.java | 8 ++--- .../org/apache/doris/alter/SchemaChangeJobV2.java | 6 ++-- .../java/org/apache/doris/analysis/InsertStmt.java | 2 +- .../main/java/org/apache/doris/catalog/Column.java | 8 ++--- .../java/org/apache/doris/catalog/DatabaseIf.java | 42 ++++++++++++++++++++++ .../java/org/apache/doris/catalog/OlapTable.java | 1 + .../java/org/apache/doris/catalog/Partition.java | 2 ++ .../java/org/apache/doris/catalog/TableIf.java | 14 ++++++++ .../catalog/external/JdbcExternalDatabase.java | 1 - .../java/org/apache/doris/common/FeNameFormat.java | 2 +- .../org/apache/doris/datasource/CatalogIf.java | 14 ++++++++ .../apache/doris/datasource/ExternalCatalog.java | 14 ++++++-- .../src/main/java/org/apache/doris/load/Load.java | 8 ++--- .../apache/doris/load/update/UpdatePlanner.java | 4 +-- .../apache/doris/service/FrontendServiceImpl.java | 21 ++++++----- .../org/apache/doris/task/CreateReplicaTask.java | 4 +-- .../apache/doris/planner/UpdatePlannerTest.java | 2 +- 17 files changed, 120 insertions(+), 33 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 a14b03aa31..1a0489ea58 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 @@ -111,7 +111,7 @@ public class SchemaChangeHandler extends AlterHandler { private static final Logger LOG = LogManager.getLogger(SchemaChangeHandler.class); // all shadow indexes should have this prefix in name - public static final String SHADOW_NAME_PRFIX = "__doris_shadow_"; + public static final String SHADOW_NAME_PREFIX = "__doris_shadow_"; public static final int MAX_ACTIVE_SCHEMA_CHANGE_JOB_V2_SIZE = 10; @@ -681,7 +681,7 @@ public class SchemaChangeHandler extends AlterHandler { * And if the column type is not changed, the same column name is still to the same column type, * so no need to add prefix. */ - modColumn.setName(SHADOW_NAME_PRFIX + modColumn.getName()); + modColumn.setName(SHADOW_NAME_PREFIX + modColumn.getName()); } } @@ -1470,7 +1470,7 @@ public class SchemaChangeHandler extends AlterHandler { while (currentSchemaHash == newSchemaHash) { newSchemaHash = Util.generateSchemaHash(); } - String newIndexName = SHADOW_NAME_PRFIX + olapTable.getIndexNameById(originIndexId); + String newIndexName = SHADOW_NAME_PREFIX + olapTable.getIndexNameById(originIndexId); short newShortKeyColumnCount = indexIdToShortKeyColumnCount.get(originIndexId); long shadowIndexId = idGeneratorBuffer.getNextId(); @@ -2252,7 +2252,7 @@ public class SchemaChangeHandler extends AlterHandler { for (Map.Entry<Long, List<Column>> entry : changedIndexIdToSchema.entrySet()) { long originIndexId = entry.getKey(); - String newIndexName = SHADOW_NAME_PRFIX + olapTable.getIndexNameById(originIndexId); + String newIndexName = SHADOW_NAME_PREFIX + olapTable.getIndexNameById(originIndexId); MaterializedIndexMeta currentIndexMeta = olapTable.getIndexMetaByIndexId(originIndexId); // 1. get new schema version/schema version hash, short key column count int currentSchemaVersion = currentIndexMeta.getSchemaVersion(); 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 72b9457a3f..51321cac8e 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 @@ -424,9 +424,9 @@ public class SchemaChangeJobV2 extends AlterJobV2 { destSlotDesc.setColumn(column); destSlotDesc.setIsNullable(column.isAllowNull()); - if (indexColumnMap.containsKey(SchemaChangeHandler.SHADOW_NAME_PRFIX + column.getName())) { + if (indexColumnMap.containsKey(SchemaChangeHandler.SHADOW_NAME_PREFIX + column.getName())) { Column newColumn = indexColumnMap - .get(SchemaChangeHandler.SHADOW_NAME_PRFIX + column.getName()); + .get(SchemaChangeHandler.SHADOW_NAME_PREFIX + column.getName()); if (newColumn.getType() != column.getType()) { try { SlotRef slot = new SlotRef(destSlotDesc); @@ -860,7 +860,7 @@ public class SchemaChangeJobV2 extends AlterJobV2 { info.add(TimeUtils.longToTimeStringWithms(createTimeMs)); info.add(TimeUtils.longToTimeStringWithms(finishedTimeMs)); // only show the origin index name - info.add(indexIdToName.get(shadowIndexId).substring(SchemaChangeHandler.SHADOW_NAME_PRFIX.length())); + info.add(indexIdToName.get(shadowIndexId).substring(SchemaChangeHandler.SHADOW_NAME_PREFIX.length())); info.add(shadowIndexId); info.add(entry.getValue()); info.add(indexSchemaVersionAndHashMap.get(shadowIndexId).toString()); diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/InsertStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/InsertStmt.java index 0a3ede083c..44140b24e9 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/InsertStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/InsertStmt.java @@ -444,7 +444,7 @@ public class InsertStmt extends DdlStmt { */ List<Pair<Integer, Column>> origColIdxsForExtendCols = Lists.newArrayList(); for (Column column : targetTable.getFullSchema()) { - if (column.isNameWithPrefix(SchemaChangeHandler.SHADOW_NAME_PRFIX)) { + if (column.isNameWithPrefix(SchemaChangeHandler.SHADOW_NAME_PREFIX)) { String origName = Column.removeNamePrefix(column.getName()); for (int i = 0; i < targetColumns.size(); i++) { if (targetColumns.get(i).nameEquals(origName, false)) { diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Column.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/Column.java index 4432db3335..cd7cde3cbc 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Column.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Column.java @@ -495,8 +495,8 @@ public class Column implements Writable, GsonPostProcessable { } public static String removeNamePrefix(String colName) { - if (colName.startsWith(SchemaChangeHandler.SHADOW_NAME_PRFIX)) { - return colName.substring(SchemaChangeHandler.SHADOW_NAME_PRFIX.length()); + if (colName.startsWith(SchemaChangeHandler.SHADOW_NAME_PREFIX)) { + return colName.substring(SchemaChangeHandler.SHADOW_NAME_PREFIX.length()); } return colName; } @@ -505,11 +505,11 @@ public class Column implements Writable, GsonPostProcessable { if (isShadowColumn(colName)) { return colName; } - return SchemaChangeHandler.SHADOW_NAME_PRFIX + colName; + return SchemaChangeHandler.SHADOW_NAME_PREFIX + colName; } public static boolean isShadowColumn(String colName) { - return colName.startsWith(SchemaChangeHandler.SHADOW_NAME_PRFIX); + return colName.startsWith(SchemaChangeHandler.SHADOW_NAME_PREFIX); } public Expr getDefineExpr() { diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/DatabaseIf.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/DatabaseIf.java index 152e3b1223..ffd271d84e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/DatabaseIf.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/DatabaseIf.java @@ -22,6 +22,11 @@ import org.apache.doris.common.DdlException; import org.apache.doris.common.ErrorCode; import org.apache.doris.common.MetaNotFoundException; +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + import java.util.List; import java.util.Optional; import java.util.Set; @@ -35,6 +40,7 @@ import java.util.function.Function; * Maybe changed later. */ public interface DatabaseIf<T extends TableIf> { + Logger LOG = LogManager.getLogger(DatabaseIf.class); void readLock(); @@ -64,18 +70,54 @@ public interface DatabaseIf<T extends TableIf> { List<T> getTables(); + default List<T> getTablesOrEmpty() { + try { + return getTables(); + } catch (Exception e) { + LOG.warn("failed to get tables for db {}", getFullName(), e); + return Lists.newArrayList(); + } + } + List<T> getTablesOnIdOrder(); List<T> getViews(); + default List<T> getViewsOrEmpty() { + try { + return getViews(); + } catch (Exception e) { + LOG.warn("failed to get views for db {}", getFullName(), e); + return Lists.newArrayList(); + } + } + List<T> getTablesOnIdOrderIfExist(List<Long> tableIdList); List<T> getTablesOnIdOrderOrThrowException(List<Long> tableIdList) throws MetaNotFoundException; Set<String> getTableNamesWithLock(); + default Set<String> getTableNamesOrEmptyWithLock() { + try { + return getTableNamesWithLock(); + } catch (Exception e) { + LOG.warn("failed to get table names for db {}", getFullName(), e); + return Sets.newHashSet(); + } + } + T getTableNullable(String tableName); + default T getTableNullableIfException(String tableName) { + try { + return getTableNullable(tableName); + } catch (Exception e) { + LOG.warn("failed to get table {} in database {}", tableName, getFullName(), e); + return null; + } + } + T getTableNullable(long tableId); default Optional<T> getTable(String tableName) { 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 94786d7682..2cde04593d 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 @@ -355,6 +355,7 @@ public class OlapTable extends Table { if (indexId != baseIndexId) { rebuildFullSchema(); } + LOG.info("delete index info {} in table {}-{}", indexName, id, name); return true; } diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Partition.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/Partition.java index 16a298f69f..f74e1a35fc 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Partition.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Partition.java @@ -197,8 +197,10 @@ public class Partition extends MetaObject implements Writable { public MaterializedIndex deleteRollupIndex(long indexId) { if (this.idToVisibleRollupIndex.containsKey(indexId)) { + LOG.info("delete visible rollup index {} in partition {}-{}", indexId, id, name); return idToVisibleRollupIndex.remove(indexId); } else { + LOG.info("delete shadow rollup index {} in partition {}-{}", indexId, id, name); return idToShadowIndex.remove(indexId); } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/TableIf.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/TableIf.java index 4312c8041f..2385863a40 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/TableIf.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/TableIf.java @@ -25,12 +25,17 @@ import org.apache.doris.statistics.AnalysisTaskScheduler; import org.apache.doris.statistics.BaseAnalysisTask; import org.apache.doris.thrift.TTableDescriptor; +import com.google.common.collect.Lists; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + import java.util.Collections; import java.util.List; import java.util.Set; import java.util.concurrent.TimeUnit; public interface TableIf { + Logger LOG = LogManager.getLogger(TableIf.class); void readLock(); @@ -72,6 +77,15 @@ public interface TableIf { List<Column> getBaseSchema(); + default List<Column> getBaseSchemaOrEmpty() { + try { + return getBaseSchema(); + } catch (Exception e) { + LOG.warn("failed to get base schema for table {}", getName(), e); + return Lists.newArrayList(); + } + } + List<Column> getBaseSchema(boolean full); void setNewFullSchema(List<Column> newSchema); diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/external/JdbcExternalDatabase.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/external/JdbcExternalDatabase.java index 45d6b1a647..f0772d8f26 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/external/JdbcExternalDatabase.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/external/JdbcExternalDatabase.java @@ -128,7 +128,6 @@ public class JdbcExternalDatabase extends ExternalDatabase<JdbcExternalTable> im return Lists.newArrayList(idToTbl.values()); } - // TODO(ftw): drew @Override public JdbcExternalTable getTableNullable(String tableName) { makeSureInitialized(); diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/FeNameFormat.java b/fe/fe-core/src/main/java/org/apache/doris/common/FeNameFormat.java index 4048d9f647..7afbff8f37 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/common/FeNameFormat.java +++ b/fe/fe-core/src/main/java/org/apache/doris/common/FeNameFormat.java @@ -72,7 +72,7 @@ public class FeNameFormat { ErrorReport.reportAnalysisException(ErrorCode.ERR_WRONG_COLUMN_NAME, columnName, FeNameFormat.COLUMN_NAME_REGEX); } - if (columnName.startsWith(SchemaChangeHandler.SHADOW_NAME_PRFIX)) { + if (columnName.startsWith(SchemaChangeHandler.SHADOW_NAME_PREFIX)) { ErrorReport.reportAnalysisException(ErrorCode.ERR_WRONG_COLUMN_NAME, columnName, FeNameFormat.COLUMN_NAME_REGEX); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/CatalogIf.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/CatalogIf.java index 2dcfdae86a..d58cc9091b 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/CatalogIf.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/CatalogIf.java @@ -23,6 +23,10 @@ import org.apache.doris.common.DdlException; import org.apache.doris.common.ErrorCode; import org.apache.doris.common.MetaNotFoundException; +import com.google.common.collect.Lists; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + import java.util.List; import java.util.Map; import java.util.Optional; @@ -33,6 +37,7 @@ import javax.annotation.Nullable; * The interface of Catalog */ public interface CatalogIf<T extends DatabaseIf> { + Logger LOG = LogManager.getLogger(CatalogIf.class); // Type of this catalog String getType(); @@ -44,6 +49,15 @@ public interface CatalogIf<T extends DatabaseIf> { List<String> getDbNames(); + default List<String> getDbNamesOrEmpty() { + try { + return getDbNames(); + } catch (Exception e) { + LOG.warn("failed to get db names in catalog {}", getName(), e); + return Lists.newArrayList(); + } + } + List<Long> getDbIds(); @Nullable diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalCatalog.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalCatalog.java index cd6fb701c8..2d68d28fee 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalCatalog.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalCatalog.java @@ -176,7 +176,12 @@ public abstract class ExternalCatalog implements CatalogIf<ExternalDatabase>, Wr @Nullable @Override public ExternalDatabase getDbNullable(String dbName) { - makeSureInitialized(); + try { + makeSureInitialized(); + } catch (Exception e) { + LOG.warn("failed to get db {} in catalog {}", dbName, name, e); + return null; + } String realDbName = ClusterNamespace.getNameFromFullName(dbName); if (!dbNameToId.containsKey(realDbName)) { return null; @@ -187,7 +192,12 @@ public abstract class ExternalCatalog implements CatalogIf<ExternalDatabase>, Wr @Nullable @Override public ExternalDatabase getDbNullable(long dbId) { - makeSureInitialized(); + try { + makeSureInitialized(); + } catch (Exception e) { + LOG.warn("failed to get db {} in catalog {}", dbId, name, e); + return null; + } return idToDb.get(dbId); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/load/Load.java b/fe/fe-core/src/main/java/org/apache/doris/load/Load.java index 2ac0161df3..706f12c6f6 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/load/Load.java +++ b/fe/fe-core/src/main/java/org/apache/doris/load/Load.java @@ -585,8 +585,8 @@ public class Load { // so there will be a shadow column: '__doris_shadow_B' // So the final column mapping should looks like: (A, B, C, __doris_shadow_B = substitute(B)); for (Column column : table.getFullSchema()) { - if (column.isNameWithPrefix(SchemaChangeHandler.SHADOW_NAME_PRFIX)) { - String originCol = column.getNameWithoutPrefix(SchemaChangeHandler.SHADOW_NAME_PRFIX); + if (column.isNameWithPrefix(SchemaChangeHandler.SHADOW_NAME_PREFIX)) { + String originCol = column.getNameWithoutPrefix(SchemaChangeHandler.SHADOW_NAME_PREFIX); if (parsedColumnExprMap.containsKey(originCol)) { Expr mappingExpr = parsedColumnExprMap.get(originCol); if (mappingExpr != null) { @@ -749,11 +749,11 @@ public class Load { public static List<ImportColumnDesc> getSchemaChangeShadowColumnDesc(Table tbl, Map<String, Expr> columnExprMap) { List<ImportColumnDesc> shadowColumnDescs = Lists.newArrayList(); for (Column column : tbl.getFullSchema()) { - if (!column.isNameWithPrefix(SchemaChangeHandler.SHADOW_NAME_PRFIX)) { + if (!column.isNameWithPrefix(SchemaChangeHandler.SHADOW_NAME_PREFIX)) { continue; } - String originCol = column.getNameWithoutPrefix(SchemaChangeHandler.SHADOW_NAME_PRFIX); + String originCol = column.getNameWithoutPrefix(SchemaChangeHandler.SHADOW_NAME_PREFIX); if (columnExprMap.containsKey(originCol)) { Expr mappingExpr = columnExprMap.get(originCol); if (mappingExpr != null) { diff --git a/fe/fe-core/src/main/java/org/apache/doris/load/update/UpdatePlanner.java b/fe/fe-core/src/main/java/org/apache/doris/load/update/UpdatePlanner.java index 70092bb6e1..d116477bcc 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/load/update/UpdatePlanner.java +++ b/fe/fe-core/src/main/java/org/apache/doris/load/update/UpdatePlanner.java @@ -159,8 +159,8 @@ public class UpdatePlanner extends OriginalPlanner { for (int i = 0; i < targetTable.getFullSchema().size(); i++) { Column column = targetTable.getFullSchema().get(i); // pay attention to case ignore of column name - String originColumnName = (column.getName().startsWith(SchemaChangeHandler.SHADOW_NAME_PRFIX) - ? column.getName().substring(SchemaChangeHandler.SHADOW_NAME_PRFIX.length()) : column.getName()) + String originColumnName = (column.getName().startsWith(SchemaChangeHandler.SHADOW_NAME_PREFIX) + ? column.getName().substring(SchemaChangeHandler.SHADOW_NAME_PREFIX.length()) : column.getName()) .toLowerCase(); Expr setExpr = columnNameToSetExpr.get(originColumnName); SlotDescriptor srcSlotDesc = columnNameToSrcSlotDesc.get(originColumnName); diff --git a/fe/fe-core/src/main/java/org/apache/doris/service/FrontendServiceImpl.java b/fe/fe-core/src/main/java/org/apache/doris/service/FrontendServiceImpl.java index e0a622b55c..71784eae21 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/service/FrontendServiceImpl.java +++ b/fe/fe-core/src/main/java/org/apache/doris/service/FrontendServiceImpl.java @@ -139,6 +139,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.Set; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; @@ -180,7 +181,7 @@ public class FrontendServiceImpl implements FrontendService.Iface { .getCatalogOrException(params.catalog, catalog -> new TException("Unknown catalog " + catalog))); } for (CatalogIf catalog : catalogIfs) { - List<String> dbNames = catalog.getDbNames(); + List<String> dbNames = catalog.getDbNamesOrEmpty(); LOG.debug("get db names: {}, in catalog: {}", dbNames, catalog.getName()); UserIdentity currentUser = null; @@ -234,11 +235,14 @@ public class FrontendServiceImpl implements FrontendService.Iface { } String catalogName = Strings.isNullOrEmpty(params.catalog) ? InternalCatalog.INTERNAL_CATALOG_NAME : params.catalog; + DatabaseIf<TableIf> db = Env.getCurrentEnv().getCatalogMgr() .getCatalogOrException(catalogName, catalog -> new TException("Unknown catalog " + catalog)) .getDbNullable(params.db); + if (db != null) { - for (String tableName : db.getTableNamesWithLock()) { + Set<String> tableNames = db.getTableNamesOrEmptyWithLock(); + for (String tableName : tableNames) { LOG.debug("get table: {}, wait to check", tableName); if (!Env.getCurrentEnv().getAuth() .checkTblPriv(currentUser, params.db, tableName, PrivPredicate.SHOW)) { @@ -286,16 +290,16 @@ public class FrontendServiceImpl implements FrontendService.Iface { if (catalog != null) { DatabaseIf db = catalog.getDbNullable(params.db); if (db != null) { - List<TableIf> tables = null; + List<TableIf> tables = Lists.newArrayList(); if (!params.isSetType() || params.getType() == null || params.getType().isEmpty()) { - tables = db.getTables(); + tables = db.getTablesOrEmpty(); } else { switch (params.getType()) { case "VIEW": - tables = db.getViews(); + tables = db.getViewsOrEmpty(); break; default: - tables = db.getTables(); + tables = db.getTablesOrEmpty(); } } for (TableIf table : tables) { @@ -421,11 +425,12 @@ public class FrontendServiceImpl implements FrontendService.Iface { .getCatalogOrException(catalogName, catalog -> new TException("Unknown catalog " + catalog)) .getDbNullable(params.db); if (db != null) { - TableIf table = db.getTableNullable(params.getTableName()); + TableIf table = db.getTableNullableIfException(params.getTableName()); if (table != null) { table.readLock(); try { - for (Column column : table.getBaseSchema()) { + List<Column> baseSchema = table.getBaseSchemaOrEmpty(); + for (Column column : baseSchema) { final TColumnDesc desc = new TColumnDesc(column.getName(), column.getDataType().toThrift()); final Integer precision = column.getOriginType().getPrecision(); if (precision != null) { diff --git a/fe/fe-core/src/main/java/org/apache/doris/task/CreateReplicaTask.java b/fe/fe-core/src/main/java/org/apache/doris/task/CreateReplicaTask.java index 2da8f6dda3..d416c75796 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/task/CreateReplicaTask.java +++ b/fe/fe-core/src/main/java/org/apache/doris/task/CreateReplicaTask.java @@ -202,8 +202,8 @@ public class CreateReplicaTask extends AgentTask { } // when doing schema change, some modified column has a prefix in name. // this prefix is only used in FE, not visible to BE, so we should remove this prefix. - if (column.getName().startsWith(SchemaChangeHandler.SHADOW_NAME_PRFIX)) { - tColumn.setColumnName(column.getName().substring(SchemaChangeHandler.SHADOW_NAME_PRFIX.length())); + if (column.getName().startsWith(SchemaChangeHandler.SHADOW_NAME_PREFIX)) { + tColumn.setColumnName(column.getName().substring(SchemaChangeHandler.SHADOW_NAME_PREFIX.length())); } tColumn.setVisible(column.isVisible()); tColumns.add(tColumn); diff --git a/fe/fe-core/src/test/java/org/apache/doris/planner/UpdatePlannerTest.java b/fe/fe-core/src/test/java/org/apache/doris/planner/UpdatePlannerTest.java index 3573614198..253ce82930 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/planner/UpdatePlannerTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/planner/UpdatePlannerTest.java @@ -96,7 +96,7 @@ public class UpdatePlannerTest { v1.getName(); result = "v1"; shadowV1.getName(); - result = SchemaChangeHandler.SHADOW_NAME_PRFIX + "v1"; + result = SchemaChangeHandler.SHADOW_NAME_PREFIX + "v1"; } }; --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org