Oliver Schiller created HIVE-27193: -------------------------------------- Summary: Database names starting with '@' cause error during ALTER/DROP table. Key: HIVE-27193 URL: https://issues.apache.org/jira/browse/HIVE-27193 Project: Hive Issue Type: Bug Components: Metastore, Standalone Metastore Affects Versions: 4.0.0-alpha-2 Reporter: Oliver Schiller
The creation of database that start with '@' is supported: {code:java} create database `@test`;{code} The creation of a table in this database works: {code:java} create table `@test`.testtable (c1 integer);{code} However, dropping or altering the table result in an error: {code:java} drop table `@test`.testtable; FAILED: SemanticException Unable to fetch table testtable. @test is prepended with the catalog marker but does not appear to have a catalog name in it Error: Error while compiling statement: FAILED: SemanticException Unable to fetch table testtable. @test is prepended with the catalog marker but does not appear to have a catalog name in it (state=42000,code=40000) alter table `@test`.testtable add columns (c2 integer); FAILED: SemanticException Unable to fetch table testtable. @test is prepended with the catalog marker but does not appear to have a catalog name in it Error: Error while compiling statement: FAILED: SemanticException Unable to fetch table testtable. @test is prepended with the catalog marker but does not appear to have a catalog name in it (state=42000,code=40000) {code} Relevant snippet of stack trace: {{}} {code:java} org.apache.hadoop.hive.metastore.api.MetaException: @TEST is prepended with the catalog marker but does not appear to have a catalog name in it at org.apache.hadoop.hive.metastore.utils.MetaStoreUtils.parseDbName(MetaStoreUtils.java:1031 at org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient.getTempTable(SessionHiveMetaStoreClient.java:651) at org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient.getTable(SessionHiveMetaStoreClient.java:279) at org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient.getTable(SessionHiveMetaStoreClient.java:273) at org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient.getTable(SessionHiveMetaStoreClient.java:258) at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.dropTable(HiveMetaStoreClient.java:1982)org.apache.hadoop.hive.metastore.HiveMetaStoreClient.dropTable(HiveMetaStoreClient.java:1957) ...{code} {{}} My suspicion is that this caused by the implementation of getTempTable and how it is called. The method getTempTable calls parseDbName assuming that the given dbname might be prefixed with a catalog name. I'm wondering whether this is correct at this layer. From poking a bit around, it appears to me that the catalog name is typically prepended when making the actual thrift call. -- This message was sent by Atlassian Jira (v8.20.10#820010)