[fix](hms) fix compatibility issue of hive metastore client (#27327)
For hive version lower than 2.3.7, there is no enum ClientCapability.INSERT_ONLY_TABLES. So if we send this enum to the server side, the server side will get a null, and this will cause some undefined behavior, eg, failed to get tables infos from hms.
This commit is contained in:
@ -343,11 +343,17 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
|
||||
|
||||
hiveVersion = HiveVersionUtil.getVersion(conf.get(HMSProperties.HIVE_VERSION));
|
||||
|
||||
version = MetastoreConf.getBoolVar(conf, ConfVars.HIVE_IN_TEST) ? TEST_VERSION : VERSION;
|
||||
// For hive 2.3.7, there is no ClientCapability.INSERT_ONLY_TABLES
|
||||
if (hiveVersion == HiveVersion.V1_0 || hiveVersion == HiveVersion.V2_0 || hiveVersion == HiveVersion.V2_3) {
|
||||
version = MetastoreConf.getBoolVar(conf, ConfVars.HIVE_IN_TEST) ? TEST_VERSION : null;
|
||||
} else {
|
||||
version = MetastoreConf.getBoolVar(conf, ConfVars.HIVE_IN_TEST) ? TEST_VERSION : VERSION;
|
||||
}
|
||||
|
||||
filterHook = loadFilterHooks();
|
||||
uriResolverHook = loadUriResolverHook();
|
||||
fileMetadataBatchSize = MetastoreConf.getIntVar(
|
||||
conf, ConfVars.BATCH_RETRIEVE_OBJECTS_MAX);
|
||||
conf, ConfVars.BATCH_RETRIEVE_OBJECTS_MAX);
|
||||
|
||||
String msUri = MetastoreConf.getVar(conf, ConfVars.THRIFT_URIS);
|
||||
localMetaStore = MetastoreConf.isEmbeddedMetaStore(msUri);
|
||||
|
||||
Reference in New Issue
Block a user