diff --git a/common/src/java/org/apache/hadoop/hive/conf/Constants.java b/common/src/java/org/apache/hadoop/hive/conf/Constants.java index ee954d9aac..a2e6f49e56 100644 --- a/common/src/java/org/apache/hadoop/hive/conf/Constants.java +++ b/common/src/java/org/apache/hadoop/hive/conf/Constants.java @@ -45,6 +45,8 @@ public static final String JDBC_HIVE_STORAGE_HANDLER_ID = "org.apache.hive.storage.jdbc.JdbcStorageHandler"; public static final String JDBC_CONFIG_PREFIX = "hive.sql"; + public static final String JDBC_CATALOG = JDBC_CONFIG_PREFIX + ".catalog"; + public static final String JDBC_SCHEMA = JDBC_CONFIG_PREFIX + ".schema"; public static final String JDBC_TABLE = JDBC_CONFIG_PREFIX + ".table"; public static final String JDBC_DATABASE_TYPE = JDBC_CONFIG_PREFIX + ".database.type"; public static final String JDBC_URL = JDBC_CONFIG_PREFIX + ".jdbc.url"; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java index de88783584..a7b9e62cfd 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java @@ -2945,12 +2945,14 @@ private RelNode genTableLogicalPlan(String tableAlias, QB qb) throws SemanticExc String key = tabMetaData.getProperty(Constants.JDBC_KEY); pswd = Utilities.getPasswdFromKeystore(keystore, key); } + final String catalogName = tabMetaData.getProperty(Constants.JDBC_CATALOG); + final String schemaName = tabMetaData.getProperty(Constants.JDBC_SCHEMA); final String tableName = tabMetaData.getProperty(Constants.JDBC_TABLE); DataSource ds = JdbcSchema.dataSource(url, driver, user, pswd); SqlDialect jdbcDialect = JdbcSchema.createDialect(SqlDialectFactoryImpl.INSTANCE, ds); JdbcConvention jc = JdbcConvention.of(jdbcDialect, null, dataBaseType); - JdbcSchema schema = new JdbcSchema(ds, jc.dialect, jc, null/*catalog */, null/*schema */); + JdbcSchema schema = new JdbcSchema(ds, jc.dialect, jc, catalogName, schemaName); JdbcTable jt = (JdbcTable) schema.getTable(tableName); if (jt == null) { throw new SemanticException("Table " + tableName + " was not found in the database");