Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
4.0.0
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));
Attachments
Issue Links
- links to