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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]