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

commit ac8ba43d8deeda89c678d0a5f57f53ac7774c452
Author: slothever <18522955+w...@users.noreply.github.com>
AuthorDate: Fri Mar 22 21:30:43 2024 +0800

    [fix](multi-catalog)resolve hive meta store compatibility for different 
version issues (#32551)
    
    Fix hive list partition at different version.
    Only Hive3 uses the prependCatalogToDbName() to wrap db_name.
---
 .../hadoop/hive/metastore/HiveMetaStoreClient.java | 98 +++++++++++++---------
 1 file changed, 59 insertions(+), 39 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java
 
b/fe/fe-core/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java
index 37bf73b2fa0..b1e47c49484 100644
--- 
a/fe/fe-core/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java
+++ 
b/fe/fe-core/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java
@@ -278,6 +278,16 @@ import javax.security.auth.login.LoginException;
  * 7. getSchema()
  * 8. getTableColumnStatistics()
  * 9. getPartitionColumnStatistics()
+ * 10. getPartitionsByNames()
+ * 11. listPartitions()
+ * 12. alter_partition()
+ * 13. add_partitions()
+ * 14. dropPartition()
+ * 15. alter_table()
+ * 16. alter_table_with_environmentContext()
+ * 17. renamePartition()
+ * 18. truncateTable()
+ * 19. drop_table_with_environment_context()
  */
 @InterfaceAudience.Public
 @InterfaceStability.Evolving
@@ -529,7 +539,7 @@ public class HiveMetaStoreClient implements 
IMetaStoreClient, AutoCloseable {
   @Override
   public boolean isCompatibleWith(Configuration conf) {
     // Make a copy of currentMetaVars, there is a race condition that
-       // currentMetaVars might be changed during the execution of the method
+    // currentMetaVars might be changed during the execution of the method
     Map<String, String> currentMetaVarsCopy = currentMetaVars;
     if (currentMetaVarsCopy == null) {
       return false; // recreate
@@ -600,14 +610,14 @@ public class HiveMetaStoreClient implements 
IMetaStoreClient, AutoCloseable {
     if (hook != null) {
       hook.preAlterTable(new_tbl, envContext);
     }
-    client.alter_table_with_environment_context(prependCatalogToDbName(dbname, 
conf),
-        tbl_name, new_tbl, envContext);
+    client.alter_table_with_environment_context(
+        prependCatalogToDbNameByVersion(hiveVersion, null, dbname, conf), 
tbl_name, new_tbl, envContext);
   }
 
   @Override
   public void alter_table(String catName, String dbName, String tblName, Table 
newTable,
                          EnvironmentContext envContext) throws TException {
-    client.alter_table_with_environment_context(prependCatalogToDbName(catName,
+    
client.alter_table_with_environment_context(prependCatalogToDbNameByVersion(hiveVersion,
 catName,
         dbName, conf), tblName, newTable, envContext);
   }
 
@@ -620,7 +630,8 @@ public class HiveMetaStoreClient implements 
IMetaStoreClient, AutoCloseable {
   @Override
   public void renamePartition(String catName, String dbname, String tableName, 
List<String> part_vals,
                               Partition newPart) throws TException {
-    client.rename_partition(prependCatalogToDbName(catName, dbname, conf), 
tableName, part_vals, newPart);
+    client.rename_partition(prependCatalogToDbNameByVersion(hiveVersion, 
catName, dbname, conf),
+        tableName, part_vals, newPart);
 
   }
 
@@ -882,8 +893,10 @@ public class HiveMetaStoreClient implements 
IMetaStoreClient, AutoCloseable {
   @Override
   public int add_partitions(List<Partition> new_parts) throws TException {
     if (new_parts != null && !new_parts.isEmpty() && 
!new_parts.get(0).isSetCatName()) {
-      final String defaultCat = getDefaultCatalog(conf);
-      new_parts.forEach(p -> p.setCatName(defaultCat));
+      if (hiveVersion == HiveVersion.V3_0) {
+        final String defaultCat = getDefaultCatalog(conf);
+        new_parts.forEach(p -> p.setCatName(defaultCat));
+      }
     }
     return client.add_partitions(new_parts);
   }
@@ -931,24 +944,24 @@ public class HiveMetaStoreClient implements 
IMetaStoreClient, AutoCloseable {
   @Override
   public Partition appendPartition(String catName, String dbName, String 
tableName,
                                    String name) throws TException {
-    Partition p = client.append_partition_by_name(prependCatalogToDbName(
-        catName, dbName, conf), tableName, name);
+    Partition p = client.append_partition_by_name(
+        prependCatalogToDbNameByVersion(hiveVersion, catName, dbName, conf), 
tableName, name);
     return deepCopy(p);
   }
 
   @Override
   public Partition appendPartition(String catName, String dbName, String 
tableName,
                                    List<String> partVals) throws TException {
-    Partition p = client.append_partition(prependCatalogToDbName(
-        catName, dbName, conf), tableName, partVals);
+    Partition p = client.append_partition(
+        prependCatalogToDbNameByVersion(hiveVersion, catName, dbName, conf), 
tableName, partVals);
     return deepCopy(p);
   }
 
   @Deprecated
   public Partition appendPartition(String dbName, String tableName, 
List<String> partVals,
                                    EnvironmentContext ec) throws TException {
-    return 
client.append_partition_with_environment_context(prependCatalogToDbName(dbName, 
conf),
-        tableName, partVals, ec).deepCopy();
+    return client.append_partition_with_environment_context(
+        prependCatalogToDbNameByVersion(hiveVersion, null, dbName, conf), 
tableName, partVals, ec).deepCopy();
   }
 
   /**
@@ -1260,7 +1273,7 @@ public class HiveMetaStoreClient implements 
IMetaStoreClient, AutoCloseable {
         }
       }
     }
-    client.drop_database(prependCatalogToDbName(catalogName, dbName, conf), 
deleteData, cascade);
+    client.drop_database(prependCatalogToDbNameByVersion(hiveVersion, 
catalogName, dbName, conf), deleteData, cascade);
   }
 
   @Override
@@ -1272,7 +1285,7 @@ public class HiveMetaStoreClient implements 
IMetaStoreClient, AutoCloseable {
   @Override
   public boolean dropPartition(String catName, String db_name, String 
tbl_name, String name,
                                boolean deleteData) throws TException {
-    return 
client.drop_partition_by_name_with_environment_context(prependCatalogToDbName(
+    return 
client.drop_partition_by_name_with_environment_context(prependCatalogToDbNameByVersion(hiveVersion,
         catName, db_name, conf), tbl_name, name, deleteData, null);
   }
 
@@ -1289,21 +1302,23 @@ public class HiveMetaStoreClient implements 
IMetaStoreClient, AutoCloseable {
   @Deprecated
   public boolean dropPartition(String db_name, String tbl_name, List<String> 
part_vals,
       EnvironmentContext env_context) throws TException {
-    return 
client.drop_partition_with_environment_context(prependCatalogToDbName(db_name, 
conf),
-        tbl_name, part_vals, true, env_context);
+    return client.drop_partition_with_environment_context(
+        prependCatalogToDbNameByVersion(hiveVersion, null, db_name, conf), 
tbl_name, part_vals, true, env_context);
   }
 
   @Deprecated
   public boolean dropPartition(String dbName, String tableName, String 
partName, boolean dropData,
                                EnvironmentContext ec) throws TException {
-    return 
client.drop_partition_by_name_with_environment_context(prependCatalogToDbName(dbName,
 conf),
+    return client.drop_partition_by_name_with_environment_context(
+        prependCatalogToDbNameByVersion(hiveVersion, null, dbName, conf),
         tableName, partName, dropData, ec);
   }
 
   @Deprecated
   public boolean dropPartition(String dbName, String tableName, List<String> 
partVals)
       throws TException {
-    return client.drop_partition(prependCatalogToDbName(dbName, conf), 
tableName, partVals, true);
+    return client.drop_partition(prependCatalogToDbNameByVersion(hiveVersion, 
null, dbName, conf),
+        tableName, partVals, true);
   }
 
   @Override
@@ -1340,7 +1355,7 @@ public class HiveMetaStoreClient implements 
IMetaStoreClient, AutoCloseable {
         }
       }
     }
-    return 
client.drop_partition_with_environment_context(prependCatalogToDbName(
+    return 
client.drop_partition_with_environment_context(prependCatalogToDbNameByVersion(hiveVersion,
         catName, db_name, conf), tbl_name, part_vals, options.deleteData,
         options.purgeData ? getEnvironmentContextWithIfPurgeSet() : null);
   }
@@ -1391,7 +1406,9 @@ public class HiveMetaStoreClient implements 
IMetaStoreClient, AutoCloseable {
     }
     rps.setExprs(exprs);
     DropPartitionsRequest req = new DropPartitionsRequest(dbName, tblName, 
rps);
-    req.setCatName(catName);
+    if (hiveVersion == HiveVersion.V3_0) {
+      req.setCatName(catName);
+    }
     req.setDeleteData(options.deleteData);
     req.setNeedResult(options.returnResults);
     req.setIfExists(options.ifExists);
@@ -1501,7 +1518,7 @@ public class HiveMetaStoreClient implements 
IMetaStoreClient, AutoCloseable {
   @Override
   public void truncateTable(String catName, String dbName, String tableName, 
List<String> partNames)
       throws TException {
-    client.truncate_table(prependCatalogToDbName(catName, dbName, conf), 
tableName, partNames);
+    client.truncate_table(prependCatalogToDbNameByVersion(hiveVersion, 
catName, dbName, conf), tableName, partNames);
   }
 
   /**
@@ -1581,7 +1598,7 @@ public class HiveMetaStoreClient implements 
IMetaStoreClient, AutoCloseable {
   @Override
   public List<Partition> listPartitions(String catName, String db_name, String 
tbl_name,
                                         int max_parts) throws TException {
-    List<Partition> parts = 
client.get_partitions(prependCatalogToDbName(catName, db_name, conf),
+    List<Partition> parts = 
client.get_partitions(prependCatalogToDbNameByVersion(hiveVersion, catName, 
db_name, conf),
         tbl_name, shrinkMaxtoShort(max_parts));
     return deepCopyPartitions(filterHook.filterPartitions(parts));
   }
@@ -1607,7 +1624,8 @@ public class HiveMetaStoreClient implements 
IMetaStoreClient, AutoCloseable {
   @Override
   public List<Partition> listPartitions(String catName, String db_name, String 
tbl_name,
                                         List<String> part_vals, int max_parts) 
throws TException {
-    List<Partition> parts = 
client.get_partitions_ps(prependCatalogToDbName(catName, db_name, conf),
+    List<Partition> parts = client.get_partitions_ps(
+        prependCatalogToDbNameByVersion(hiveVersion, catName, db_name, conf),
         tbl_name, part_vals, shrinkMaxtoShort(max_parts));
     return deepCopyPartitions(filterHook.filterPartitions(parts));
   }
@@ -1624,7 +1642,7 @@ public class HiveMetaStoreClient implements 
IMetaStoreClient, AutoCloseable {
   public List<Partition> listPartitionsWithAuthInfo(String catName, String 
dbName, String tableName,
                                                     int maxParts, String 
userName,
                                                     List<String> groupNames) 
throws TException {
-    List<Partition> parts = 
client.get_partitions_with_auth(prependCatalogToDbName(catName,
+    List<Partition> parts = 
client.get_partitions_with_auth(prependCatalogToDbNameByVersion(hiveVersion, 
catName,
         dbName, conf), tableName, shrinkMaxtoShort(maxParts), userName, 
groupNames);
     return deepCopyPartitions(filterHook.filterPartitions(parts));
   }
@@ -1643,8 +1661,8 @@ public class HiveMetaStoreClient implements 
IMetaStoreClient, AutoCloseable {
                                                     List<String> partialPvals, 
int maxParts,
                                                     String userName, 
List<String> groupNames)
       throws TException {
-    List<Partition> parts = 
client.get_partitions_ps_with_auth(prependCatalogToDbName(catName,
-        dbName, conf), tableName, partialPvals, shrinkMaxtoShort(maxParts), 
userName, groupNames);
+    List<Partition> parts = 
client.get_partitions_ps_with_auth(prependCatalogToDbNameByVersion(hiveVersion,
+        catName, dbName, conf), tableName, partialPvals, 
shrinkMaxtoShort(maxParts), userName, groupNames);
     return deepCopyPartitions(filterHook.filterPartitions(parts));
   }
 
@@ -1784,8 +1802,8 @@ public class HiveMetaStoreClient implements 
IMetaStoreClient, AutoCloseable {
   public Partition getPartitionWithAuthInfo(String catName, String dbName, 
String tableName,
                                             List<String> pvals, String 
userName,
                                             List<String> groupNames) throws 
TException {
-    Partition p = 
client.get_partition_with_auth(prependCatalogToDbName(catName, dbName, conf), 
tableName,
-        pvals, userName, groupNames);
+    Partition p = 
client.get_partition_with_auth(prependCatalogToDbNameByVersion(hiveVersion, 
catName, dbName, conf),
+        tableName, pvals, userName, groupNames);
     return deepCopy(filterHook.filterPartition(p));
   }
 
@@ -1866,7 +1884,7 @@ public class HiveMetaStoreClient implements 
IMetaStoreClient, AutoCloseable {
   public List<String> listTableNamesByFilter(String catName, String dbName, 
String filter,
                                              int maxTables) throws TException {
     return filterHook.filterTableNames(catName, dbName,
-        client.get_table_names_by_filter(prependCatalogToDbName(catName, 
dbName, conf), filter,
+        
client.get_table_names_by_filter(prependCatalogToDbNameByVersion(hiveVersion, 
catName, dbName, conf), filter,
             shrinkMaxtoShort(maxTables)));
   }
 
@@ -2065,8 +2083,8 @@ public class HiveMetaStoreClient implements 
IMetaStoreClient, AutoCloseable {
   @Override
   public void alter_partition(String catName, String dbName, String tblName, 
Partition newPart,
                               EnvironmentContext environmentContext) throws 
TException {
-    
client.alter_partition_with_environment_context(prependCatalogToDbName(catName, 
dbName, conf), tblName,
-        newPart, environmentContext);
+    
client.alter_partition_with_environment_context(prependCatalogToDbNameByVersion(hiveVersion,
 catName, dbName, conf),
+        tblName, newPart, environmentContext);
   }
 
   @Override
@@ -2085,7 +2103,8 @@ public class HiveMetaStoreClient implements 
IMetaStoreClient, AutoCloseable {
   public void alter_partitions(String catName, String dbName, String tblName,
                                List<Partition> newParts,
                                EnvironmentContext environmentContext) throws 
TException {
-    
client.alter_partitions_with_environment_context(prependCatalogToDbName(catName,
 dbName, conf),
+    client.alter_partitions_with_environment_context(
+        prependCatalogToDbNameByVersion(hiveVersion, catName, dbName, conf),
         tblName, newParts, environmentContext);
   }
 
@@ -2096,7 +2115,7 @@ public class HiveMetaStoreClient implements 
IMetaStoreClient, AutoCloseable {
 
   @Override
   public void alterDatabase(String catName, String dbName, Database newDb) 
throws TException {
-    client.alter_database(prependCatalogToDbName(catName, dbName, conf), 
newDb);
+    client.alter_database(prependCatalogToDbNameByVersion(hiveVersion, 
catName, dbName, conf), newDb);
   }
 
   @Override
@@ -2249,7 +2268,8 @@ public class HiveMetaStoreClient implements 
IMetaStoreClient, AutoCloseable {
   public boolean deletePartitionColumnStatistics(String catName, String 
dbName, String tableName,
                                                  String partName, String 
colName)
       throws TException {
-    return 
client.delete_partition_column_statistics(prependCatalogToDbName(catName, 
dbName, conf),
+    return client.delete_partition_column_statistics(
+        prependCatalogToDbNameByVersion(hiveVersion, catName, dbName, conf),
         tableName, partName, colName);
   }
 
@@ -2262,7 +2282,7 @@ public class HiveMetaStoreClient implements 
IMetaStoreClient, AutoCloseable {
   @Override
   public boolean deleteTableColumnStatistics(String catName, String dbName, 
String tableName,
                                              String colName) throws TException 
{
-    return 
client.delete_table_column_statistics(prependCatalogToDbName(catName, dbName, 
conf),
+    return 
client.delete_table_column_statistics(prependCatalogToDbNameByVersion(hiveVersion,
 catName, dbName, conf),
         tableName, colName);
   }
 
@@ -2304,8 +2324,8 @@ public class HiveMetaStoreClient implements 
IMetaStoreClient, AutoCloseable {
   @Override
   public Partition getPartition(String catName, String dbName, String tblName, 
String name)
       throws TException {
-    Partition p = client.get_partition_by_name(prependCatalogToDbName(catName, 
dbName, conf), tblName,
-        name);
+    Partition p = 
client.get_partition_by_name(prependCatalogToDbNameByVersion(hiveVersion, 
catName, dbName, conf),
+        tblName, name);
     return deepCopy(filterHook.filterPartition(p));
   }
 
@@ -3144,7 +3164,7 @@ public class HiveMetaStoreClient implements 
IMetaStoreClient, AutoCloseable {
 
   protected void drop_table_with_environment_context(String catName, String 
dbname, String name,
       boolean deleteData, EnvironmentContext envContext) throws TException {
-    client.drop_table_with_environment_context(prependCatalogToDbName(catName, 
dbname, conf),
+    
client.drop_table_with_environment_context(prependCatalogToDbNameByVersion(hiveVersion,
 catName, dbname, conf),
         name, deleteData, envContext);
   }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to