Alexander Behm created HIVE-5264:
------------------------------------

             Summary: SQL generated by MetaStoreDirectSql.java not compliant 
with Postgres.
                 Key: HIVE-5264
                 URL: https://issues.apache.org/jira/browse/HIVE-5264
             Project: Hive
          Issue Type: Bug
          Components: Metastore
    Affects Versions: 0.11.0
         Environment: Ubuntu 12.04
PostgreSQL 9.1.8
            Reporter: Alexander Behm


Some operations against the Hive Metastore seem broken
against Postgres.

For example, when using HiveMetastoreClient.listPartitions()
the Postgres logs show queries such as:

2013-09-09 19:10:01 PDT STATEMENT:  select PARTITIONS.PART_ID from
PARTITIONS  inner join TBLS on PARTITIONS.TBL_ID = TBLS.TBL_ID   inner
join DBS on TBLS.DB_ID = DBS.DB_ID  where TBLS.TBL_NAME = $1 and
DBS.NAME = $2 order by PART_NAME asc

with a somewhat cryptic (but correct) error:

ERROR:  relation "partitions" does not exist at character 32

Postgres identifiers are somewhat unusual. Unquoted identifiers are interpreted 
as lower case (there is no Postgres option to change this). Since the Metastore 
table schema uses upper case table names, the correct SQL requires escaped 
identifiers to those tables, i.e.,
select "PARTITIONS"."PART_ID" from "PARTITIONS"...

Hive sets metastore.try.direct.sql=true by default, so the above SQL is 
generated by hive/metastore/MetaStoreDirectSql.java, i.e., this is not a 
Datanucleus problem.

When I set metastore.try.direct.sql=false, then the Metastore backed by 
Postgres works.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to