From c8d2d75ad524955a6bbb7d087e48b6f839dcb4de Mon Sep 17 00:00:00 2001 From: LXW <1264174498@qq.com> Date: Thu, 17 Oct 2024 11:16:11 +0800 Subject: [PATCH] (fix)(Headless) Fix getting tables and columns failed from h2 db (#1818) Co-authored-by: lxwcodemonkey --- .../core/adaptor/db/BaseDbAdaptor.java | 1 + .../headless/core/adaptor/db/H2Adaptor.java | 21 +++++++++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/BaseDbAdaptor.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/BaseDbAdaptor.java index a0cba187e..9b2f1029e 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/BaseDbAdaptor.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/BaseDbAdaptor.java @@ -81,4 +81,5 @@ public abstract class BaseDbAdaptor implements DbAdaptor { connectionInfo.getUserName(), connectionInfo.getPassword()); return connection.getMetaData(); } + } diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/H2Adaptor.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/H2Adaptor.java index e10969fef..44e120058 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/H2Adaptor.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/H2Adaptor.java @@ -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 getColumns(ConnectInfo connectInfo, String schemaName, String tableName) + throws SQLException { + List 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;