Skip to content

Commit a058dc8

Browse files
committed
[improvement][launcher]Support DuckDB database and refactor translator code structure.
1 parent 13d4fc3 commit a058dc8

File tree

74 files changed

+275
-201
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+275
-201
lines changed

common/src/main/java/com/tencent/supersonic/common/pojo/enums/EngineType.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ public enum EngineType {
88
KAFKA(4, "kafka"),
99
H2(5, "h2"),
1010
POSTGRESQL(6, "postgresql"),
11-
OTHER(7, "other");
11+
OTHER(7, "other"),
12+
DUCKDB(8, "duckdb");
1213

1314
private Integer code;
1415

headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/enums/DataType.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@ public enum DataType {
4545

4646
TDENGINE("TAOS", "TAOS", "com.taosdata.jdbc.TSDBDriver", "'", "'", "\"", "\""),
4747

48-
POSTGRESQL("postgresql", "postgresql", "org.postgresql.Driver", "'", "'", "\"", "\"");
48+
POSTGRESQL("postgresql", "postgresql", "org.postgresql.Driver", "'", "'", "\"", "\""),
49+
DUCKDB("duckdb", "duckdb", "org.duckdb.DuckDBDriver", "'", "'", "\"", "\"");
4950

5051
private String feature;
5152
private String desc;

headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/ClickHouseAdaptor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public String getDateFormat(String dateType, String dateFormat, String column) {
3434
}
3535

3636
@Override
37-
public String functionNameCorrector(String sql) {
37+
public String rewriteSql(String sql) {
3838
Map<String, String> functionMap = new HashMap<>();
3939
functionMap.put("MONTH".toLowerCase(), "toMonth");
4040
functionMap.put("DAY".toLowerCase(), "toDayOfMonth");

headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/DbAdaptor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public interface DbAdaptor {
1111

1212
String getDateFormat(String dateType, String dateFormat, String column);
1313

14-
String functionNameCorrector(String sql);
14+
String rewriteSql(String sql);
1515

1616
List<String> getDBs(ConnectInfo connectInfo) throws SQLException;
1717

headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/DbAdaptorFactory.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public class DbAdaptorFactory {
1616
dbAdaptorMap.put(EngineType.H2.getName(), new H2Adaptor());
1717
dbAdaptorMap.put(EngineType.POSTGRESQL.getName(), new PostgresqlAdaptor());
1818
dbAdaptorMap.put(EngineType.OTHER.getName(), new DefaultDbAdaptor());
19+
dbAdaptorMap.put(EngineType.DUCKDB.getName(), new DuckdbAdaptor());
1920
}
2021

2122
public static DbAdaptor getEngineAdaptor(String engineType) {

headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/DefaultDbAdaptor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public String getDateFormat(String dateType, String dateFormat, String column) {
88
}
99

1010
@Override
11-
public String functionNameCorrector(String sql) {
11+
public String rewriteSql(String sql) {
1212
return sql;
1313
}
1414
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package com.tencent.supersonic.headless.core.adaptor.db;
2+
3+
import com.google.common.collect.Lists;
4+
import com.tencent.supersonic.headless.api.pojo.DBColumn;
5+
import com.tencent.supersonic.headless.api.pojo.enums.FieldType;
6+
import com.tencent.supersonic.headless.core.pojo.ConnectInfo;
7+
import lombok.extern.slf4j.Slf4j;
8+
9+
import java.sql.DatabaseMetaData;
10+
import java.sql.ResultSet;
11+
import java.sql.SQLException;
12+
import java.util.List;
13+
14+
@Slf4j
15+
public class DuckdbAdaptor extends DefaultDbAdaptor {
16+
17+
protected ResultSet getResultSet(String schemaName, DatabaseMetaData metaData)
18+
throws SQLException {
19+
return metaData.getTables(schemaName, null, null, new String[] {"TABLE", "VIEW"});
20+
}
21+
22+
public List<DBColumn> getColumns(ConnectInfo connectInfo, String schemaName, String tableName)
23+
throws SQLException {
24+
List<DBColumn> dbColumns = Lists.newArrayList();
25+
DatabaseMetaData metaData = getDatabaseMetaData(connectInfo);
26+
ResultSet columns = metaData.getColumns(schemaName, null, tableName, null);
27+
while (columns.next()) {
28+
String columnName = columns.getString("COLUMN_NAME");
29+
String dataType = columns.getString("TYPE_NAME");
30+
String remarks = columns.getString("REMARKS");
31+
FieldType fieldType = classifyColumnType(dataType);
32+
dbColumns.add(new DBColumn(columnName, dataType, remarks, fieldType));
33+
}
34+
return dbColumns;
35+
}
36+
37+
@Override
38+
public String rewriteSql(String sql) {
39+
return sql.replaceAll("`", "");
40+
}
41+
42+
}

headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/H2Adaptor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public List<DBColumn> getColumns(ConnectInfo connectInfo, String schemaName, Str
6262
}
6363

6464
@Override
65-
public String functionNameCorrector(String sql) {
65+
public String rewriteSql(String sql) {
6666
return sql;
6767
}
6868
}

headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/MysqlAdaptor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public String getDateFormat(String dateType, String dateFormat, String column) {
3131
}
3232

3333
@Override
34-
public String functionNameCorrector(String sql) {
34+
public String rewriteSql(String sql) {
3535
return sql;
3636
}
3737
}

headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/PostgresqlAdaptor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public String getDateFormat(String dateType, String dateFormat, String column) {
4848
}
4949

5050
@Override
51-
public String functionNameCorrector(String sql) {
51+
public String rewriteSql(String sql) {
5252
Map<String, String> functionMap = new HashMap<>();
5353
functionMap.put("MONTH".toLowerCase(), "TO_CHAR");
5454
functionMap.put("DAY".toLowerCase(), "TO_CHAR");

0 commit comments

Comments
 (0)