hive-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ashutosh Chauhan (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HIVE-11628) DB type detection code is failing on Oracle 12
Date Mon, 24 Aug 2015 20:37:45 GMT

    [ https://issues.apache.org/jira/browse/HIVE-11628?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14710019#comment-14710019
] 

Ashutosh Chauhan commented on HIVE-11628:
-----------------------------------------

I think HIVE-11123 has a better fix for this.

> DB type detection code is failing on Oracle 12
> ----------------------------------------------
>
>                 Key: HIVE-11628
>                 URL: https://issues.apache.org/jira/browse/HIVE-11628
>             Project: Hive
>          Issue Type: Bug
>          Components: Metastore
>         Environment: Oracle 12
>            Reporter: Deepesh Khandelwal
>            Assignee: Deepesh Khandelwal
>             Fix For: 2.0.0
>
>         Attachments: HIVE-11628.patch
>
>
> DB type detection code is failing when using Oracle 12 as backing store.
> When determining qualification for direct SQL, in the logs following message is seen:
> {noformat}
> 2015-08-14 01:15:16,020 INFO  [pool-6-thread-109]: metastore.MetaStoreDirectSql (MetaStoreDirectSql.java:<init>(131))
- Using direct SQL, underlying DB is OTHER
> {noformat}
> Currently in org/apache/hadoop/hive/metastore/MetaStoreDirectSql, there is a code snippet:
> {code}
>   private DB determineDbType() {
>     DB dbType = DB.OTHER;
>     if (runDbCheck("SET @@session.sql_mode=ANSI_QUOTES", "MySql")) {
>       dbType = DB.MYSQL;
>     } else if (runDbCheck("SELECT version from v$instance", "Oracle")) {
>       dbType = DB.ORACLE;
>     } else if (runDbCheck("SELECT @@version", "MSSQL")) {
>       dbType = DB.MSSQL;
>     } else {
>       // TODO: maybe we should use getProductName to identify all the DBs
>       String productName = getProductName();
>       if (productName != null && productName.toLowerCase().contains("derby"))
{
>         dbType = DB.DERBY;
>       }
>     }
>     return dbType;
>   }
> {code}
> The code relies on access to v$instance in order to identify the backend DB as Oracle,
but this can fail if users are not granted select privileges on v$ tables. An alternate way
is specified on [Oracle Database Reference pages|http://docs.oracle.com/cd/B19306_01/server.102/b14237/statviews_4224.htm]
works.
> I will attach a potential patch that should work.
> Without the patch the workaround here would be to grant select privileges on v$ tables.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message