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]

Reply via email to