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)