This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.1 by this push:
new c6b18e70754 branch-2.1: [fix](catalog) fix refresh logic with lower
case table name(#52989) (#53991)
c6b18e70754 is described below
commit c6b18e707540b5a116c2dd93740b2abedcb62209
Author: Mingyu Chen (Rayner) <[email protected]>
AuthorDate: Tue Jul 29 19:12:10 2025 -0700
branch-2.1: [fix](catalog) fix refresh logic with lower case table
name(#52989) (#53991)
pick part of #52989
---
.../apache/doris/datasource/ExternalDatabase.java | 25 +++++++++++-----------
1 file changed, 13 insertions(+), 12 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalDatabase.java
b/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalDatabase.java
index a4f7893a47c..0e5972182ca 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalDatabase.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalDatabase.java
@@ -135,6 +135,7 @@ public abstract class ExternalDatabase<T extends
ExternalTable>
public synchronized void setUnInitialized(boolean invalidCache) {
this.initialized = false;
this.invalidCacheInInit = invalidCache;
+ this.lowerCaseToTableName = Maps.newConcurrentMap();
if (extCatalog.getUseMetaCache().isPresent()) {
if (extCatalog.getUseMetaCache().get() && metaCache != null) {
metaCache.invalidateAll();
@@ -318,6 +319,7 @@ public abstract class ExternalDatabase<T extends
ExternalTable>
private List<Pair<String, String>> listTableNames() {
List<Pair<String, String>> tableNames;
+ this.lowerCaseToTableName.clear();
if (name.equals(InfoSchemaDb.DATABASE_NAME)) {
tableNames = ExternalInfoSchemaDatabase.listTableNames().stream()
.map(tableName -> {
@@ -583,37 +585,36 @@ public abstract class ExternalDatabase<T extends
ExternalTable>
@Override
public T getTableNullable(String tableName) {
makeSureInitialized();
+ String finalName = tableName;
if (this.isStoredTableNamesLowerCase()) {
- tableName = tableName.toLowerCase();
+ finalName = tableName.toLowerCase();
}
if (this.isTableNamesCaseInsensitive()) {
- String realTableName =
lowerCaseToTableName.get(tableName.toLowerCase());
- if (realTableName == null) {
+ finalName = lowerCaseToTableName.get(tableName.toLowerCase());
+ if (finalName == null) {
// Here we need to execute listTableNames() once to fill in
lowerCaseToTableName
// to prevent lowerCaseToTableName from being empty in some
cases
listTableNames();
- tableName = lowerCaseToTableName.get(tableName.toLowerCase());
- if (tableName == null) {
+ finalName = lowerCaseToTableName.get(tableName.toLowerCase());
+ if (finalName == null) {
return null;
}
- } else {
- tableName = realTableName;
}
}
if (extCatalog.getLowerCaseMetaNames().equalsIgnoreCase("true")
&& (this.isTableNamesCaseInsensitive())) {
- tableName = tableName.toLowerCase();
+ finalName = tableName.toLowerCase();
}
if (extCatalog.getUseMetaCache().get()) {
// must use full qualified name to generate id.
// otherwise, if 2 databases have the same table name, the id will
be the same.
- return metaCache.getMetaObj(tableName,
- Util.genIdByName(extCatalog.getName(), name,
tableName)).orElse(null);
+ return metaCache.getMetaObj(finalName,
+ Util.genIdByName(extCatalog.getName(), name,
finalName)).orElse(null);
} else {
- if (!tableNameToId.containsKey(tableName)) {
+ if (!tableNameToId.containsKey(finalName)) {
return null;
}
- return idToTbl.get(tableNameToId.get(tableName));
+ return idToTbl.get(tableNameToId.get(finalName));
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]