[ 
https://issues.apache.org/jira/browse/HIVE-26767?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tim Thorpe updated HIVE-26767:
------------------------------
    Description: 
HIVE-24120 introduced code to support custom RDBMS.

DatabaseProduct.getDbType(String productName) will return *DbType.UNDEFINED* 
for anything other than the hardcoded/internally supported database types.

When initializing DatabaseProduct with an external/custom RDBMS, it follows 
this logic:

 

        boolean isExternal = MetastoreConf.getBoolVar(conf, 
ConfVars.USE_CUSTOM_RDBMS);

        if (isExternal) {
          // The DatabaseProduct will be created by instantiating an external 
class via
          // reflection. The external class can override any method in the 
current class
          String className = MetastoreConf.getVar(conf, 
ConfVars.CUSTOM_RDBMS_CLASSNAME);

          if (className != null) {
            try {
              theDatabaseProduct = (DatabaseProduct)
                  ReflectionUtils.newInstance(Class.forName(className), conf);

              LOG.info(String.format("Using custom RDBMS %s", className));
              dbt = DbType.CUSTOM;

These 2 database types (DbType.UNDEFINED, DbType.CUSTOM) are then compared to 
each other to make sure they are the same.

 

Preconditions.checkState(theDatabaseProduct.dbType == getDbType(productName));`

 

[https://github.com/gatorblue/hive/blob/3a65c6cf9cb552e7c34bfb449a419abfde0a58b6/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/DatabaseProduct.java#L80]

 

  was:
HIVE-24120 introduced code to support custom RDBMS.

DatabaseProduct.getDbType(String productName) will return `DbType.UNDEFINED` 
for anything other than the hardcoded/internally supported database types.

When initializing DatabaseProduct with an external/custom RDBMS, it follows 
this logic:

 

        boolean isExternal = MetastoreConf.getBoolVar(conf, 
ConfVars.USE_CUSTOM_RDBMS);

        if (isExternal) {
          // The DatabaseProduct will be created by instantiating an external 
class via
          // reflection. The external class can override any method in the 
current class
          String className = MetastoreConf.getVar(conf, 
ConfVars.CUSTOM_RDBMS_CLASSNAME);

          if (className != null) {
            try {
              theDatabaseProduct = (DatabaseProduct)
                  ReflectionUtils.newInstance(Class.forName(className), conf);

              LOG.info(String.format("Using custom RDBMS %s", className));
              dbt = DbType.CUSTOM;



These 2 database types (DbType.UNDEFINED, DbType.CUSTOM) are then compared to 
each other to make sure they are the same.

 

`Preconditions.checkState(theDatabaseProduct.dbType == getDbType(productName));`

 

[https://github.com/gatorblue/hive/blob/3a65c6cf9cb552e7c34bfb449a419abfde0a58b6/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/DatabaseProduct.java#L80]

 


> Support for custom RDBMS is broken
> ----------------------------------
>
>                 Key: HIVE-26767
>                 URL: https://issues.apache.org/jira/browse/HIVE-26767
>             Project: Hive
>          Issue Type: Bug
>          Components: Metastore
>    Affects Versions: 4.0.0
>            Reporter: Tim Thorpe
>            Priority: Minor
>
> HIVE-24120 introduced code to support custom RDBMS.
> DatabaseProduct.getDbType(String productName) will return *DbType.UNDEFINED* 
> for anything other than the hardcoded/internally supported database types.
> When initializing DatabaseProduct with an external/custom RDBMS, it follows 
> this logic:
>  
>         boolean isExternal = MetastoreConf.getBoolVar(conf, 
> ConfVars.USE_CUSTOM_RDBMS);
>         if (isExternal) {
>           // The DatabaseProduct will be created by instantiating an external 
> class via
>           // reflection. The external class can override any method in the 
> current class
>           String className = MetastoreConf.getVar(conf, 
> ConfVars.CUSTOM_RDBMS_CLASSNAME);
>           if (className != null) {
>             try {
>               theDatabaseProduct = (DatabaseProduct)
>                   ReflectionUtils.newInstance(Class.forName(className), conf);
>               LOG.info(String.format("Using custom RDBMS %s", className));
>               dbt = DbType.CUSTOM;
> These 2 database types (DbType.UNDEFINED, DbType.CUSTOM) are then compared to 
> each other to make sure they are the same.
>  
> Preconditions.checkState(theDatabaseProduct.dbType == 
> getDbType(productName));`
>  
> [https://github.com/gatorblue/hive/blob/3a65c6cf9cb552e7c34bfb449a419abfde0a58b6/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/DatabaseProduct.java#L80]
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to