diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java b/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java index e0f9907..ae1e3fa 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java @@ -134,19 +134,17 @@ public MetaStoreDirectSql(PersistenceManager pm, Configuration conf) { private DB determineDbType() { DB dbType = DB.OTHER; - if (runDbCheck("SET @@session.sql_mode=ANSI_QUOTES", "MySql")) { + String productName = getProductName(); + if (productName != null && productName.toLowerCase().contains("mysql")) { dbType = DB.MYSQL; - } else if (runDbCheck("SELECT version FROM v$instance", "Oracle")) { + } else if (productName != null && productName.toLowerCase().contains("oracle")) { dbType = DB.ORACLE; - } else if (runDbCheck("SELECT @@version", "MSSQL")) { + } else if (productName != null && productName.toLowerCase().contains("microsoft sql server")) { 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; - } - } + } else if (productName != null && productName.toLowerCase().contains("derby")) { + dbType = DB.DERBY; + } else; + return dbType; } @@ -179,6 +177,9 @@ private boolean ensureDbInit() { private boolean runTestQuery() { Transaction tx = pm.currentTransaction(); + if (!tx.isActive()) { + tx.begin(); + } // Run a self-test query. If it doesn't work, we will self-disable. What a PITA... String selfTestQuery = "select \"DB_ID\" from \"DBS\""; try {