diff --git metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java index 664dccd661938bc49eb35f36cc58594d635f8937..c1331a12da226d9479a5dd4c271a62c30ecf45e6 100644 --- metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java +++ metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java @@ -229,6 +229,14 @@ private void promoteRandomMetaStoreURI() { metastoreUris[index] = tmp; } + /** + * Returns true if the Metastore Service is running in the same JVM as the client, false otherwise. + * @return Return true if the MetaStoreURIs is not set, false otherwise. + */ + public boolean isMetaStoreLocal() { + return localMetaStore; + } + @Override public void reconnect() throws MetaException { if (localMetaStore) { diff --git service/src/java/org/apache/hive/service/cli/operation/GetColumnsOperation.java service/src/java/org/apache/hive/service/cli/operation/GetColumnsOperation.java index caf413d5e991bce6b6f67580ec248714a6e9a116..cb718f34044d619b01424b318bfa42722a046d6d 100644 --- service/src/java/org/apache/hive/service/cli/operation/GetColumnsOperation.java +++ service/src/java/org/apache/hive/service/cli/operation/GetColumnsOperation.java @@ -23,6 +23,7 @@ import java.util.List; import java.util.regex.Pattern; +import org.apache.hadoop.hive.metastore.HiveMetaStoreClient; import org.apache.hadoop.hive.metastore.IMetaStoreClient; import org.apache.hadoop.hive.metastore.api.Table; import org.apache.hive.service.cli.ColumnDescriptor; @@ -122,6 +123,9 @@ public void run() throws HiveSQLException { setState(OperationState.RUNNING); try { IMetaStoreClient metastoreClient = getParentSession().getMetaStoreClient(); + if (!((HiveMetaStoreClient)metastoreClient).isMetaStoreLocal()) { + metastoreClient = HiveMetaStoreClient.newSynchronizedClient(metastoreClient); + } String schemaPattern = convertSchemaPattern(schemaName); String tablePattern = convertIdentifierPattern(tableName, true); diff --git service/src/java/org/apache/hive/service/cli/operation/GetSchemasOperation.java service/src/java/org/apache/hive/service/cli/operation/GetSchemasOperation.java index ebca996947c0a361b455be9dfcaecb3f989ffcd8..4091ecefeca4b1f003257eacfa3e63ff564d41da 100644 --- service/src/java/org/apache/hive/service/cli/operation/GetSchemasOperation.java +++ service/src/java/org/apache/hive/service/cli/operation/GetSchemasOperation.java @@ -18,6 +18,7 @@ package org.apache.hive.service.cli.operation; +import org.apache.hadoop.hive.metastore.HiveMetaStoreClient; import org.apache.hadoop.hive.metastore.IMetaStoreClient; import org.apache.hive.service.cli.FetchOrientation; import org.apache.hive.service.cli.HiveSQLException; @@ -58,6 +59,9 @@ public void run() throws HiveSQLException { setState(OperationState.RUNNING); try { IMetaStoreClient metastoreClient = getParentSession().getMetaStoreClient(); + if (!((HiveMetaStoreClient)metastoreClient).isMetaStoreLocal()) { + metastoreClient = HiveMetaStoreClient.newSynchronizedClient(metastoreClient); + } String schemaPattern = convertSchemaPattern(schemaName); for (String dbName : metastoreClient.getDatabases(schemaPattern)) { rowSet.addRow(new Object[] {dbName, DEFAULT_HIVE_CATALOG}); diff --git service/src/java/org/apache/hive/service/cli/operation/GetTablesOperation.java service/src/java/org/apache/hive/service/cli/operation/GetTablesOperation.java index 315dbea4bb1645ea5f3f55b93fddc0b0586b8b3c..07dae2eaaa3a91651e2593f5d1ae63378e93eb1c 100644 --- service/src/java/org/apache/hive/service/cli/operation/GetTablesOperation.java +++ service/src/java/org/apache/hive/service/cli/operation/GetTablesOperation.java @@ -22,6 +22,7 @@ import java.util.List; import org.apache.hadoop.hive.conf.HiveConf; +import org.apache.hadoop.hive.metastore.HiveMetaStoreClient; import org.apache.hadoop.hive.metastore.IMetaStoreClient; import org.apache.hadoop.hive.metastore.api.Table; import org.apache.hive.service.cli.FetchOrientation; @@ -79,6 +80,9 @@ public void run() throws HiveSQLException { setState(OperationState.RUNNING); try { IMetaStoreClient metastoreClient = getParentSession().getMetaStoreClient(); + if (!((HiveMetaStoreClient)metastoreClient).isMetaStoreLocal()) { + metastoreClient = HiveMetaStoreClient.newSynchronizedClient(metastoreClient); + } String schemaPattern = convertSchemaPattern(schemaName); String tablePattern = convertIdentifierPattern(tableName, true); for (String dbName : metastoreClient.getDatabases(schemaPattern)) {