diff --git a/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/service/jdbc/src/main/java/org/apache/linkis/metadata/query/service/mysql/SqlConnection.java b/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/service/jdbc/src/main/java/org/apache/linkis/metadata/query/service/mysql/SqlConnection.java index d907d084662..913368544fc 100644 --- a/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/service/jdbc/src/main/java/org/apache/linkis/metadata/query/service/mysql/SqlConnection.java +++ b/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/service/jdbc/src/main/java/org/apache/linkis/metadata/query/service/mysql/SqlConnection.java @@ -131,7 +131,7 @@ public List getColumns(String database, String table) ResultSet rs = null; ResultSetMetaData meta = null; try { - List primaryKeys = getPrimaryKeys(getDBConnection(connectMessage, database), table); + List primaryKeys = getPrimaryKeys(getDBConnection(connectMessage, database), database, table); ps = conn.prepareStatement(columnSql); rs = ps.executeQuery(); meta = rs.getMetaData(); @@ -156,16 +156,17 @@ public List getColumns(String database, String table) * Get primary keys * * @param connection connection + * @param database database name * @param table table name * @return * @throws SQLException */ - private List getPrimaryKeys(Connection connection, String table) throws SQLException { + private List getPrimaryKeys(Connection connection, String database, String table) throws SQLException { ResultSet rs = null; List primaryKeys = new ArrayList<>(); try { DatabaseMetaData dbMeta = connection.getMetaData(); - rs = dbMeta.getPrimaryKeys(null, null, table); + rs = dbMeta.getPrimaryKeys(database, null, table); while (rs.next()) { primaryKeys.add(rs.getString("column_name")); } diff --git a/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/service/jdbc/src/main/java/org/apache/linkis/metadata/query/service/AbstractSqlConnection.java b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/service/jdbc/src/main/java/org/apache/linkis/metadata/query/service/AbstractSqlConnection.java index 66439aa393b..06138527543 100755 --- a/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/service/jdbc/src/main/java/org/apache/linkis/metadata/query/service/AbstractSqlConnection.java +++ b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/service/jdbc/src/main/java/org/apache/linkis/metadata/query/service/AbstractSqlConnection.java @@ -37,6 +37,8 @@ public abstract class AbstractSqlConnection implements Closeable { public ConnectMessage connectMessage; + protected String database; + public AbstractSqlConnection( String host, Integer port, @@ -45,6 +47,7 @@ public AbstractSqlConnection( String database, Map extraParams) throws ClassNotFoundException, SQLException { + this.database = database; connectMessage = new ConnectMessage(host, port, username, password, extraParams); conn = getDBConnection(connectMessage, database); // Try to create statement @@ -63,7 +66,7 @@ public List getColumns(String schemaname, String table) ResultSet rs = null; ResultSetMetaData meta; try { - List primaryKeys = getPrimaryKeys(table); + List primaryKeys = getPrimaryKeys(database, table); ps = conn.prepareStatement(columnSql); rs = ps.executeQuery(); meta = rs.getMetaData(); @@ -87,16 +90,17 @@ public List getColumns(String schemaname, String table) /** * Get primary keys // * @param connection connection * + * @param database database name * @param table table name * @return * @throws SQLException */ - public List getPrimaryKeys(String table) throws SQLException { + public List getPrimaryKeys(String database, String table) throws SQLException { ResultSet rs = null; List primaryKeys = new ArrayList<>(); try { DatabaseMetaData dbMeta = conn.getMetaData(); - rs = dbMeta.getPrimaryKeys(null, null, table); + rs = dbMeta.getPrimaryKeys(database, null, table); while (rs.next()) { primaryKeys.add(rs.getString("column_name")); } diff --git a/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/service/jdbc/src/main/java/org/apache/linkis/metadata/query/service/mysql/SqlConnection.java b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/service/jdbc/src/main/java/org/apache/linkis/metadata/query/service/mysql/SqlConnection.java index ae4605176e8..c224d96d202 100644 --- a/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/service/jdbc/src/main/java/org/apache/linkis/metadata/query/service/mysql/SqlConnection.java +++ b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/service/jdbc/src/main/java/org/apache/linkis/metadata/query/service/mysql/SqlConnection.java @@ -112,7 +112,7 @@ public List getColumns(String database, String table) ResultSet rs = null; ResultSetMetaData meta = null; try { - List primaryKeys = getPrimaryKeys(table); + List primaryKeys = getPrimaryKeys(database, table); ps = conn.prepareStatement(columnSql); rs = ps.executeQuery(); meta = rs.getMetaData(); @@ -136,16 +136,17 @@ public List getColumns(String database, String table) /** * Get primary keys * + * @param database database name * @param table table name * @return * @throws SQLException */ - private List getPrimaryKeys(String table) throws SQLException { + private List getPrimaryKeys(String database, String table) throws SQLException { ResultSet rs = null; List primaryKeys = new ArrayList<>(); try { DatabaseMetaData dbMeta = conn.getMetaData(); - rs = dbMeta.getPrimaryKeys(null, null, table); + rs = dbMeta.getPrimaryKeys(database, null, table); while (rs.next()) { primaryKeys.add(rs.getString("column_name")); }