(fix)(Headless) Fix getting tables and columns failed from h2 db (#1818)

Co-authored-by: lxwcodemonkey
This commit is contained in:
LXW
2024-10-17 11:16:11 +08:00
committed by GitHub
parent 2c8a9c1378
commit c8d2d75ad5
2 changed files with 20 additions and 2 deletions

View File

@@ -81,4 +81,5 @@ public abstract class BaseDbAdaptor implements DbAdaptor {
connectionInfo.getUserName(), connectionInfo.getPassword());
return connection.getMetaData();
}
}

View File

@@ -1,12 +1,15 @@
package com.tencent.supersonic.headless.core.adaptor.db;
import com.google.common.collect.Lists;
import com.tencent.supersonic.common.pojo.Constants;
import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum;
import lombok.extern.slf4j.Slf4j;
import com.tencent.supersonic.headless.api.pojo.DBColumn;
import com.tencent.supersonic.headless.core.pojo.ConnectInfo;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class H2Adaptor extends BaseDbAdaptor {
@@ -41,6 +44,20 @@ public class H2Adaptor extends BaseDbAdaptor {
return metaData.getTables(schemaName, null, null, new String[] {"TABLE", "VIEW"});
}
public List<DBColumn> getColumns(ConnectInfo connectInfo, String schemaName, String tableName)
throws SQLException {
List<DBColumn> dbColumns = Lists.newArrayList();
DatabaseMetaData metaData = getDatabaseMetaData(connectInfo);
ResultSet columns = metaData.getColumns(schemaName, null, tableName, null);
while (columns.next()) {
String columnName = columns.getString("COLUMN_NAME");
String dataType = columns.getString("TYPE_NAME");
String remarks = columns.getString("REMARKS");
dbColumns.add(new DBColumn(columnName, dataType, remarks));
}
return dbColumns;
}
@Override
public String functionNameCorrector(String sql) {
return sql;