mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-12 12:37:55 +00:00
Merge branch 'master' into feature/detail_style_rebuild
This commit is contained in:
@@ -8,7 +8,8 @@ public enum EngineType {
|
|||||||
KAFKA(4, "kafka"),
|
KAFKA(4, "kafka"),
|
||||||
H2(5, "h2"),
|
H2(5, "h2"),
|
||||||
POSTGRESQL(6, "postgresql"),
|
POSTGRESQL(6, "postgresql"),
|
||||||
OTHER(7, "other");
|
OTHER(7, "other"),
|
||||||
|
DUCKDB(8, "duckdb");
|
||||||
|
|
||||||
private Integer code;
|
private Integer code;
|
||||||
|
|
||||||
|
|||||||
@@ -45,7 +45,8 @@ public enum DataType {
|
|||||||
|
|
||||||
TDENGINE("TAOS", "TAOS", "com.taosdata.jdbc.TSDBDriver", "'", "'", "\"", "\""),
|
TDENGINE("TAOS", "TAOS", "com.taosdata.jdbc.TSDBDriver", "'", "'", "\"", "\""),
|
||||||
|
|
||||||
POSTGRESQL("postgresql", "postgresql", "org.postgresql.Driver", "'", "'", "\"", "\"");
|
POSTGRESQL("postgresql", "postgresql", "org.postgresql.Driver", "'", "'", "\"", "\""),
|
||||||
|
DUCKDB("duckdb", "duckdb", "org.duckdb.DuckDBDriver", "'", "'", "\"", "\"");
|
||||||
|
|
||||||
private String feature;
|
private String feature;
|
||||||
private String desc;
|
private String desc;
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ public class ClickHouseAdaptor extends BaseDbAdaptor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String functionNameCorrector(String sql) {
|
public String rewriteSql(String sql) {
|
||||||
Map<String, String> functionMap = new HashMap<>();
|
Map<String, String> functionMap = new HashMap<>();
|
||||||
functionMap.put("MONTH".toLowerCase(), "toMonth");
|
functionMap.put("MONTH".toLowerCase(), "toMonth");
|
||||||
functionMap.put("DAY".toLowerCase(), "toDayOfMonth");
|
functionMap.put("DAY".toLowerCase(), "toDayOfMonth");
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ public interface DbAdaptor {
|
|||||||
|
|
||||||
String getDateFormat(String dateType, String dateFormat, String column);
|
String getDateFormat(String dateType, String dateFormat, String column);
|
||||||
|
|
||||||
String functionNameCorrector(String sql);
|
String rewriteSql(String sql);
|
||||||
|
|
||||||
List<String> getDBs(ConnectInfo connectInfo) throws SQLException;
|
List<String> getDBs(ConnectInfo connectInfo) throws SQLException;
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ public class DbAdaptorFactory {
|
|||||||
dbAdaptorMap.put(EngineType.H2.getName(), new H2Adaptor());
|
dbAdaptorMap.put(EngineType.H2.getName(), new H2Adaptor());
|
||||||
dbAdaptorMap.put(EngineType.POSTGRESQL.getName(), new PostgresqlAdaptor());
|
dbAdaptorMap.put(EngineType.POSTGRESQL.getName(), new PostgresqlAdaptor());
|
||||||
dbAdaptorMap.put(EngineType.OTHER.getName(), new DefaultDbAdaptor());
|
dbAdaptorMap.put(EngineType.OTHER.getName(), new DefaultDbAdaptor());
|
||||||
|
dbAdaptorMap.put(EngineType.DUCKDB.getName(), new DuckdbAdaptor());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static DbAdaptor getEngineAdaptor(String engineType) {
|
public static DbAdaptor getEngineAdaptor(String engineType) {
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ public class DefaultDbAdaptor extends BaseDbAdaptor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String functionNameCorrector(String sql) {
|
public String rewriteSql(String sql) {
|
||||||
return sql;
|
return sql;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,42 @@
|
|||||||
|
package com.tencent.supersonic.headless.core.adaptor.db;
|
||||||
|
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
import com.tencent.supersonic.headless.api.pojo.DBColumn;
|
||||||
|
import com.tencent.supersonic.headless.api.pojo.enums.FieldType;
|
||||||
|
import com.tencent.supersonic.headless.core.pojo.ConnectInfo;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
import java.sql.DatabaseMetaData;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
public class DuckdbAdaptor extends DefaultDbAdaptor {
|
||||||
|
|
||||||
|
protected ResultSet getResultSet(String schemaName, DatabaseMetaData metaData)
|
||||||
|
throws SQLException {
|
||||||
|
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");
|
||||||
|
FieldType fieldType = classifyColumnType(dataType);
|
||||||
|
dbColumns.add(new DBColumn(columnName, dataType, remarks, fieldType));
|
||||||
|
}
|
||||||
|
return dbColumns;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String rewriteSql(String sql) {
|
||||||
|
return sql.replaceAll("`", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -62,7 +62,7 @@ public class H2Adaptor extends BaseDbAdaptor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String functionNameCorrector(String sql) {
|
public String rewriteSql(String sql) {
|
||||||
return sql;
|
return sql;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ public class MysqlAdaptor extends BaseDbAdaptor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String functionNameCorrector(String sql) {
|
public String rewriteSql(String sql) {
|
||||||
return sql;
|
return sql;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ public class PostgresqlAdaptor extends BaseDbAdaptor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String functionNameCorrector(String sql) {
|
public String rewriteSql(String sql) {
|
||||||
Map<String, String> functionMap = new HashMap<>();
|
Map<String, String> functionMap = new HashMap<>();
|
||||||
functionMap.put("MONTH".toLowerCase(), "TO_CHAR");
|
functionMap.put("MONTH".toLowerCase(), "TO_CHAR");
|
||||||
functionMap.put("DAY".toLowerCase(), "TO_CHAR");
|
functionMap.put("DAY".toLowerCase(), "TO_CHAR");
|
||||||
|
|||||||
@@ -3,10 +3,10 @@ package com.tencent.supersonic.headless.core.executor;
|
|||||||
import com.tencent.supersonic.common.calcite.Configuration;
|
import com.tencent.supersonic.common.calcite.Configuration;
|
||||||
import com.tencent.supersonic.common.jsqlparser.SqlSelectHelper;
|
import com.tencent.supersonic.common.jsqlparser.SqlSelectHelper;
|
||||||
import com.tencent.supersonic.headless.core.pojo.Materialization;
|
import com.tencent.supersonic.headless.core.pojo.Materialization;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.TimeRange;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.S2CalciteTable;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.S2CalciteTable;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.S2CalciteTable.Builder;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.S2CalciteTable.Builder;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.SchemaBuilder;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.SchemaBuilder;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.TimeRange;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.calcite.adapter.enumerable.EnumerableRules;
|
import org.apache.calcite.adapter.enumerable.EnumerableRules;
|
||||||
import org.apache.calcite.config.CalciteConnectionConfigImpl;
|
import org.apache.calcite.config.CalciteConnectionConfigImpl;
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package com.tencent.supersonic.headless.core.pojo;
|
package com.tencent.supersonic.headless.core.pojo;
|
||||||
|
|
||||||
import com.tencent.supersonic.headless.api.pojo.response.SemanticSchemaResp;
|
import com.tencent.supersonic.headless.api.pojo.response.SemanticSchemaResp;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Ontology;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.Ontology;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.OntologyQueryParam;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.OntologyQueryParam;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.commons.lang3.tuple.Triple;
|
import org.apache.commons.lang3.tuple.Triple;
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator;
|
package com.tencent.supersonic.headless.core.translator;
|
||||||
|
|
||||||
import com.tencent.supersonic.common.calcite.SqlMergeWithUtils;
|
import com.tencent.supersonic.common.calcite.SqlMergeWithUtils;
|
||||||
import com.tencent.supersonic.common.jsqlparser.SqlSelectHelper;
|
|
||||||
import com.tencent.supersonic.common.pojo.enums.EngineType;
|
import com.tencent.supersonic.common.pojo.enums.EngineType;
|
||||||
import com.tencent.supersonic.headless.core.pojo.QueryStatement;
|
import com.tencent.supersonic.headless.core.pojo.QueryStatement;
|
||||||
import com.tencent.supersonic.headless.core.pojo.SqlQueryParam;
|
import com.tencent.supersonic.headless.core.pojo.SqlQueryParam;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.OntologyQueryParam;
|
|
||||||
import com.tencent.supersonic.headless.core.translator.converter.QueryConverter;
|
import com.tencent.supersonic.headless.core.translator.converter.QueryConverter;
|
||||||
|
import com.tencent.supersonic.headless.core.translator.optimizer.QueryOptimizer;
|
||||||
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.OntologyQueryParam;
|
||||||
import com.tencent.supersonic.headless.core.utils.ComponentFactory;
|
import com.tencent.supersonic.headless.core.utils.ComponentFactory;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
@@ -40,10 +40,6 @@ public class DefaultSemanticTranslator implements SemanticTranslator {
|
|||||||
if (StringUtils.isBlank(queryStatement.getSql())) {
|
if (StringUtils.isBlank(queryStatement.getSql())) {
|
||||||
throw new RuntimeException("parse exception: " + queryStatement.getErrMsg());
|
throw new RuntimeException("parse exception: " + queryStatement.getErrMsg());
|
||||||
}
|
}
|
||||||
if (!SqlSelectHelper.hasLimit(queryStatement.getSql())) {
|
|
||||||
queryStatement
|
|
||||||
.setSql(queryStatement.getSql() + " limit " + queryStatement.getLimit());
|
|
||||||
}
|
|
||||||
|
|
||||||
for (QueryOptimizer queryOptimizer : ComponentFactory.getQueryOptimizers()) {
|
for (QueryOptimizer queryOptimizer : ComponentFactory.getQueryOptimizers()) {
|
||||||
queryOptimizer.rewrite(queryStatement);
|
queryOptimizer.rewrite(queryStatement);
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import com.tencent.supersonic.common.jsqlparser.SqlAddHelper;
|
|||||||
import com.tencent.supersonic.common.jsqlparser.SqlSelectHelper;
|
import com.tencent.supersonic.common.jsqlparser.SqlSelectHelper;
|
||||||
import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum;
|
import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum;
|
||||||
import com.tencent.supersonic.headless.core.pojo.QueryStatement;
|
import com.tencent.supersonic.headless.core.pojo.QueryStatement;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Dimension;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.Dimension;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.sf.jsqlparser.expression.Expression;
|
import net.sf.jsqlparser.expression.Expression;
|
||||||
import net.sf.jsqlparser.expression.StringValue;
|
import net.sf.jsqlparser.expression.StringValue;
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import com.tencent.supersonic.headless.core.pojo.Database;
|
|||||||
import com.tencent.supersonic.headless.core.pojo.QueryStatement;
|
import com.tencent.supersonic.headless.core.pojo.QueryStatement;
|
||||||
import com.tencent.supersonic.headless.core.pojo.SqlQueryParam;
|
import com.tencent.supersonic.headless.core.pojo.SqlQueryParam;
|
||||||
import com.tencent.supersonic.headless.core.pojo.StructQueryParam;
|
import com.tencent.supersonic.headless.core.pojo.StructQueryParam;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.OntologyQueryParam;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.OntologyQueryParam;
|
||||||
import com.tencent.supersonic.headless.core.utils.SqlGenerateUtils;
|
import com.tencent.supersonic.headless.core.utils.SqlGenerateUtils;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|||||||
@@ -12,11 +12,9 @@ import com.tencent.supersonic.headless.api.pojo.SchemaItem;
|
|||||||
import com.tencent.supersonic.headless.api.pojo.enums.AggOption;
|
import com.tencent.supersonic.headless.api.pojo.enums.AggOption;
|
||||||
import com.tencent.supersonic.headless.api.pojo.enums.MetricType;
|
import com.tencent.supersonic.headless.api.pojo.enums.MetricType;
|
||||||
import com.tencent.supersonic.headless.api.pojo.response.*;
|
import com.tencent.supersonic.headless.api.pojo.response.*;
|
||||||
import com.tencent.supersonic.headless.core.adaptor.db.DbAdaptor;
|
|
||||||
import com.tencent.supersonic.headless.core.adaptor.db.DbAdaptorFactory;
|
|
||||||
import com.tencent.supersonic.headless.core.pojo.QueryStatement;
|
import com.tencent.supersonic.headless.core.pojo.QueryStatement;
|
||||||
import com.tencent.supersonic.headless.core.pojo.SqlQueryParam;
|
import com.tencent.supersonic.headless.core.pojo.SqlQueryParam;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.OntologyQueryParam;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.OntologyQueryParam;
|
||||||
import com.tencent.supersonic.headless.core.utils.SqlGenerateUtils;
|
import com.tencent.supersonic.headless.core.utils.SqlGenerateUtils;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
@@ -40,7 +38,6 @@ public class SqlQueryConverter implements QueryConverter {
|
|||||||
@Override
|
@Override
|
||||||
public void convert(QueryStatement queryStatement) throws Exception {
|
public void convert(QueryStatement queryStatement) throws Exception {
|
||||||
convertNameToBizName(queryStatement);
|
convertNameToBizName(queryStatement);
|
||||||
rewriteFunction(queryStatement);
|
|
||||||
rewriteOrderBy(queryStatement);
|
rewriteOrderBy(queryStatement);
|
||||||
|
|
||||||
// fill sqlQuery
|
// fill sqlQuery
|
||||||
@@ -245,22 +242,6 @@ public class SqlQueryConverter implements QueryConverter {
|
|||||||
queryStatement.getSqlQueryParam().setSql(newSql);
|
queryStatement.getSqlQueryParam().setSql(newSql);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void rewriteFunction(QueryStatement queryStatement) {
|
|
||||||
SemanticSchemaResp semanticSchemaResp = queryStatement.getSemanticSchemaResp();
|
|
||||||
DatabaseResp database = semanticSchemaResp.getDatabaseResp();
|
|
||||||
String sql = queryStatement.getSqlQueryParam().getSql();
|
|
||||||
if (Objects.isNull(database) || Objects.isNull(database.getType())) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
String type = database.getType();
|
|
||||||
DbAdaptor engineAdaptor = DbAdaptorFactory.getEngineAdaptor(type.toLowerCase());
|
|
||||||
if (Objects.nonNull(engineAdaptor)) {
|
|
||||||
String functionNameCorrector = engineAdaptor.functionNameCorrector(sql);
|
|
||||||
queryStatement.getSqlQueryParam().setSql(functionNameCorrector);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
protected Map<String, String> getFieldNameToBizNameMap(SemanticSchemaResp semanticSchemaResp) {
|
protected Map<String, String> getFieldNameToBizNameMap(SemanticSchemaResp semanticSchemaResp) {
|
||||||
// support fieldName and field alias to bizName
|
// support fieldName and field alias to bizName
|
||||||
Map<String, String> dimensionResults = semanticSchemaResp.getDimensions().stream().flatMap(
|
Map<String, String> dimensionResults = semanticSchemaResp.getDimensions().stream().flatMap(
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import com.tencent.supersonic.headless.api.pojo.enums.ModelDefineType;
|
|||||||
import com.tencent.supersonic.headless.api.pojo.response.ModelResp;
|
import com.tencent.supersonic.headless.api.pojo.response.ModelResp;
|
||||||
import com.tencent.supersonic.headless.api.pojo.response.SemanticSchemaResp;
|
import com.tencent.supersonic.headless.api.pojo.response.SemanticSchemaResp;
|
||||||
import com.tencent.supersonic.headless.core.pojo.QueryStatement;
|
import com.tencent.supersonic.headless.core.pojo.QueryStatement;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.DataModel;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.DataModel;
|
||||||
import com.tencent.supersonic.headless.core.utils.SqlVariableParseUtils;
|
import com.tencent.supersonic.headless.core.utils.SqlVariableParseUtils;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import com.tencent.supersonic.headless.core.pojo.Database;
|
|||||||
import com.tencent.supersonic.headless.core.pojo.QueryStatement;
|
import com.tencent.supersonic.headless.core.pojo.QueryStatement;
|
||||||
import com.tencent.supersonic.headless.core.pojo.SqlQueryParam;
|
import com.tencent.supersonic.headless.core.pojo.SqlQueryParam;
|
||||||
import com.tencent.supersonic.headless.core.pojo.StructQueryParam;
|
import com.tencent.supersonic.headless.core.pojo.StructQueryParam;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.OntologyQueryParam;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.OntologyQueryParam;
|
||||||
import com.tencent.supersonic.headless.core.utils.SqlGenerateUtils;
|
import com.tencent.supersonic.headless.core.utils.SqlGenerateUtils;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
package com.tencent.supersonic.headless.core.translator.optimizer;
|
||||||
|
|
||||||
|
import com.tencent.supersonic.headless.api.pojo.response.DatabaseResp;
|
||||||
|
import com.tencent.supersonic.headless.api.pojo.response.SemanticSchemaResp;
|
||||||
|
import com.tencent.supersonic.headless.core.adaptor.db.DbAdaptor;
|
||||||
|
import com.tencent.supersonic.headless.core.adaptor.db.DbAdaptorFactory;
|
||||||
|
import com.tencent.supersonic.headless.core.pojo.QueryStatement;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
@Component("DbDialectOptimizer")
|
||||||
|
public class DbDialectOptimizer implements QueryOptimizer {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void rewrite(QueryStatement queryStatement) {
|
||||||
|
SemanticSchemaResp semanticSchemaResp = queryStatement.getSemanticSchemaResp();
|
||||||
|
DatabaseResp database = semanticSchemaResp.getDatabaseResp();
|
||||||
|
String sql = queryStatement.getSql();
|
||||||
|
if (Objects.isNull(database) || Objects.isNull(database.getType())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String type = database.getType();
|
||||||
|
DbAdaptor engineAdaptor = DbAdaptorFactory.getEngineAdaptor(type.toLowerCase());
|
||||||
|
if (Objects.nonNull(engineAdaptor)) {
|
||||||
|
String adaptedSql = engineAdaptor.rewriteSql(sql);
|
||||||
|
queryStatement.setSql(adaptedSql);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator;
|
package com.tencent.supersonic.headless.core.translator.optimizer;
|
||||||
|
|
||||||
import com.tencent.supersonic.headless.core.pojo.QueryStatement;
|
import com.tencent.supersonic.headless.core.pojo.QueryStatement;
|
||||||
import com.tencent.supersonic.headless.core.pojo.StructQueryParam;
|
import com.tencent.supersonic.headless.core.pojo.StructQueryParam;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator;
|
package com.tencent.supersonic.headless.core.translator.optimizer;
|
||||||
|
|
||||||
import com.tencent.supersonic.headless.core.pojo.QueryStatement;
|
import com.tencent.supersonic.headless.core.pojo.QueryStatement;
|
||||||
|
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package com.tencent.supersonic.headless.core.translator.optimizer;
|
||||||
|
|
||||||
|
import com.tencent.supersonic.common.jsqlparser.SqlSelectHelper;
|
||||||
|
import com.tencent.supersonic.headless.core.pojo.QueryStatement;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
@Component("ResultLimitOptimizer")
|
||||||
|
public class ResultLimitOptimizer implements QueryOptimizer {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void rewrite(QueryStatement queryStatement) {
|
||||||
|
if (!SqlSelectHelper.hasLimit(queryStatement.getSql())) {
|
||||||
|
queryStatement.setSql(queryStatement.getSql() + " limit " + queryStatement.getLimit());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator;
|
package com.tencent.supersonic.headless.core.translator.parser;
|
||||||
|
|
||||||
import com.tencent.supersonic.headless.core.pojo.QueryStatement;
|
import com.tencent.supersonic.headless.core.pojo.QueryStatement;
|
||||||
|
|
||||||
@@ -1,11 +1,8 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite;
|
package com.tencent.supersonic.headless.core.translator.parser.calcite;
|
||||||
|
|
||||||
import com.tencent.supersonic.headless.core.pojo.QueryStatement;
|
import com.tencent.supersonic.headless.core.pojo.QueryStatement;
|
||||||
import com.tencent.supersonic.headless.core.translator.QueryParser;
|
import com.tencent.supersonic.headless.core.translator.parser.QueryParser;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Ontology;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.Ontology;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.RuntimeOptions;
|
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.S2CalciteSchema;
|
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.SqlBuilder;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.sql;
|
package com.tencent.supersonic.headless.core.translator.parser.calcite;
|
||||||
|
|
||||||
import org.apache.calcite.plan.RelOptRuleCall;
|
import org.apache.calcite.plan.RelOptRuleCall;
|
||||||
import org.apache.calcite.plan.RelRule;
|
import org.apache.calcite.plan.RelRule;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.sql;
|
package com.tencent.supersonic.headless.core.translator.parser.calcite;
|
||||||
|
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.sql;
|
package com.tencent.supersonic.headless.core.translator.parser.calcite;
|
||||||
|
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.DataModel;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.DataModel;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Dimension;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.Dimension;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.JoinRelation;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.JoinRelation;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Metric;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.Metric;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Ontology;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.Ontology;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.apache.calcite.schema.Schema;
|
import org.apache.calcite.schema.Schema;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.sql;
|
package com.tencent.supersonic.headless.core.translator.parser.calcite;
|
||||||
|
|
||||||
import org.apache.calcite.DataContext;
|
import org.apache.calcite.DataContext;
|
||||||
import org.apache.calcite.linq4j.Enumerable;
|
import org.apache.calcite.linq4j.Enumerable;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.sql;
|
package com.tencent.supersonic.headless.core.translator.parser.calcite;
|
||||||
|
|
||||||
import org.apache.calcite.rel.type.RelDataTypeFactory;
|
import org.apache.calcite.rel.type.RelDataTypeFactory;
|
||||||
import org.apache.calcite.sql.SqlOperatorTable;
|
import org.apache.calcite.sql.SqlOperatorTable;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.sql;
|
package com.tencent.supersonic.headless.core.translator.parser.calcite;
|
||||||
|
|
||||||
import com.tencent.supersonic.common.calcite.Configuration;
|
import com.tencent.supersonic.common.calcite.Configuration;
|
||||||
import com.tencent.supersonic.common.pojo.enums.EngineType;
|
import com.tencent.supersonic.common.pojo.enums.EngineType;
|
||||||
@@ -1,19 +1,19 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.sql;
|
package com.tencent.supersonic.headless.core.translator.parser.calcite;
|
||||||
|
|
||||||
import com.tencent.supersonic.common.calcite.Configuration;
|
import com.tencent.supersonic.common.calcite.Configuration;
|
||||||
import com.tencent.supersonic.common.pojo.enums.EngineType;
|
import com.tencent.supersonic.common.pojo.enums.EngineType;
|
||||||
import com.tencent.supersonic.headless.api.pojo.enums.AggOption;
|
import com.tencent.supersonic.headless.api.pojo.enums.AggOption;
|
||||||
import com.tencent.supersonic.headless.core.pojo.Database;
|
import com.tencent.supersonic.headless.core.pojo.Database;
|
||||||
import com.tencent.supersonic.headless.core.pojo.QueryStatement;
|
import com.tencent.supersonic.headless.core.pojo.QueryStatement;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Constants;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.node.DataModelNode;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.DataModel;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.node.SemanticNode;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.OntologyQueryParam;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.render.FilterRender;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.node.DataModelNode;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.render.OutputRender;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.node.SemanticNode;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.render.Renderer;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.render.FilterRender;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.render.SourceRender;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.render.OutputRender;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.Constants;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.render.Renderer;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.DataModel;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.render.SourceRender;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.OntologyQueryParam;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.calcite.sql.SqlNode;
|
import org.apache.calcite.sql.SqlNode;
|
||||||
import org.apache.calcite.sql.parser.SqlParser;
|
import org.apache.calcite.sql.parser.SqlParser;
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.sql;
|
package com.tencent.supersonic.headless.core.translator.parser.calcite;
|
||||||
|
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.DataModel;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.DataModel;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.apache.calcite.sql.SqlBasicCall;
|
import org.apache.calcite.sql.SqlBasicCall;
|
||||||
import org.apache.calcite.sql.SqlKind;
|
import org.apache.calcite.sql.SqlKind;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.sql.node;
|
package com.tencent.supersonic.headless.core.translator.parser.calcite.node;
|
||||||
|
|
||||||
import com.tencent.supersonic.common.pojo.enums.EngineType;
|
import com.tencent.supersonic.common.pojo.enums.EngineType;
|
||||||
import org.apache.calcite.sql.SqlNode;
|
import org.apache.calcite.sql.SqlNode;
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.sql.node;
|
package com.tencent.supersonic.headless.core.translator.parser.calcite.node;
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.tencent.supersonic.common.calcite.Configuration;
|
import com.tencent.supersonic.common.calcite.Configuration;
|
||||||
import com.tencent.supersonic.common.jsqlparser.SqlSelectHelper;
|
import com.tencent.supersonic.common.jsqlparser.SqlSelectHelper;
|
||||||
import com.tencent.supersonic.common.pojo.enums.EngineType;
|
import com.tencent.supersonic.common.pojo.enums.EngineType;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.*;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.S2CalciteSchema;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.S2CalciteSchema;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.SchemaBuilder;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.SchemaBuilder;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.*;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.calcite.sql.*;
|
import org.apache.calcite.sql.*;
|
||||||
import org.apache.calcite.sql.parser.SqlParser;
|
import org.apache.calcite.sql.parser.SqlParser;
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.sql.node;
|
package com.tencent.supersonic.headless.core.translator.parser.calcite.node;
|
||||||
|
|
||||||
import com.tencent.supersonic.common.pojo.enums.EngineType;
|
import com.tencent.supersonic.common.pojo.enums.EngineType;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Constants;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.Constants;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Dimension;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.Dimension;
|
||||||
import org.apache.calcite.sql.SqlNode;
|
import org.apache.calcite.sql.SqlNode;
|
||||||
import org.apache.calcite.sql.validate.SqlValidatorScope;
|
import org.apache.calcite.sql.validate.SqlValidatorScope;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.sql.node;
|
package com.tencent.supersonic.headless.core.translator.parser.calcite.node;
|
||||||
|
|
||||||
import org.apache.calcite.sql.SqlCall;
|
import org.apache.calcite.sql.SqlCall;
|
||||||
import org.apache.calcite.sql.SqlInternalOperator;
|
import org.apache.calcite.sql.SqlInternalOperator;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.sql.node;
|
package com.tencent.supersonic.headless.core.translator.parser.calcite.node;
|
||||||
|
|
||||||
import org.apache.calcite.sql.SqlBasicCall;
|
import org.apache.calcite.sql.SqlBasicCall;
|
||||||
import org.apache.calcite.sql.SqlIdentifier;
|
import org.apache.calcite.sql.SqlIdentifier;
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.sql.node;
|
package com.tencent.supersonic.headless.core.translator.parser.calcite.node;
|
||||||
|
|
||||||
import com.tencent.supersonic.common.pojo.enums.EngineType;
|
import com.tencent.supersonic.common.pojo.enums.EngineType;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Identify;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.Identify;
|
||||||
import org.apache.calcite.sql.SqlNode;
|
import org.apache.calcite.sql.SqlNode;
|
||||||
import org.apache.calcite.sql.validate.SqlValidatorScope;
|
import org.apache.calcite.sql.validate.SqlValidatorScope;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.sql.node;
|
package com.tencent.supersonic.headless.core.translator.parser.calcite.node;
|
||||||
|
|
||||||
import org.apache.calcite.linq4j.Ord;
|
import org.apache.calcite.linq4j.Ord;
|
||||||
import org.apache.calcite.sql.SqlCall;
|
import org.apache.calcite.sql.SqlCall;
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.sql.node;
|
package com.tencent.supersonic.headless.core.translator.parser.calcite.node;
|
||||||
|
|
||||||
import com.tencent.supersonic.common.pojo.enums.EngineType;
|
import com.tencent.supersonic.common.pojo.enums.EngineType;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Measure;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.Measure;
|
||||||
import org.apache.calcite.sql.SqlNode;
|
import org.apache.calcite.sql.SqlNode;
|
||||||
import org.apache.calcite.sql.validate.SqlValidatorScope;
|
import org.apache.calcite.sql.validate.SqlValidatorScope;
|
||||||
|
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.sql.node;
|
package com.tencent.supersonic.headless.core.translator.parser.calcite.node;
|
||||||
|
|
||||||
import com.tencent.supersonic.common.pojo.enums.EngineType;
|
import com.tencent.supersonic.common.pojo.enums.EngineType;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Metric;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.S2CalciteSchema;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.S2CalciteSchema;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.Metric;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.apache.calcite.sql.SqlNode;
|
import org.apache.calcite.sql.SqlNode;
|
||||||
import org.apache.calcite.sql.validate.SqlValidatorScope;
|
import org.apache.calcite.sql.validate.SqlValidatorScope;
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.sql.node;
|
package com.tencent.supersonic.headless.core.translator.parser.calcite.node;
|
||||||
|
|
||||||
import com.tencent.supersonic.common.calcite.Configuration;
|
import com.tencent.supersonic.common.calcite.Configuration;
|
||||||
import com.tencent.supersonic.common.calcite.SemanticSqlDialect;
|
import com.tencent.supersonic.common.calcite.SemanticSqlDialect;
|
||||||
import com.tencent.supersonic.common.calcite.SqlDialectFactory;
|
import com.tencent.supersonic.common.calcite.SqlDialectFactory;
|
||||||
import com.tencent.supersonic.common.pojo.enums.EngineType;
|
import com.tencent.supersonic.common.pojo.enums.EngineType;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Constants;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.FilterToGroupScanRule;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.FilterToGroupScanRule;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.S2CalciteSchema;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.S2CalciteSchema;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.Constants;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.calcite.plan.RelOptPlanner;
|
import org.apache.calcite.plan.RelOptPlanner;
|
||||||
import org.apache.calcite.plan.hep.HepPlanner;
|
import org.apache.calcite.plan.hep.HepPlanner;
|
||||||
@@ -1,15 +1,15 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.sql.render;
|
package com.tencent.supersonic.headless.core.translator.parser.calcite.render;
|
||||||
|
|
||||||
import com.tencent.supersonic.common.pojo.enums.EngineType;
|
import com.tencent.supersonic.common.pojo.enums.EngineType;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Constants;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.S2CalciteSchema;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.DataModel;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.TableView;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Metric;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.node.FilterNode;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.OntologyQueryParam;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.node.MetricNode;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.S2CalciteSchema;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.node.SemanticNode;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.TableView;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.Constants;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.node.FilterNode;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.DataModel;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.node.MetricNode;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.Metric;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.node.SemanticNode;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.OntologyQueryParam;
|
||||||
import org.apache.calcite.sql.SqlIdentifier;
|
import org.apache.calcite.sql.SqlIdentifier;
|
||||||
import org.apache.calcite.sql.SqlNode;
|
import org.apache.calcite.sql.SqlNode;
|
||||||
import org.apache.calcite.sql.parser.SqlParserPos;
|
import org.apache.calcite.sql.parser.SqlParserPos;
|
||||||
@@ -1,22 +1,22 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.sql.render;
|
package com.tencent.supersonic.headless.core.translator.parser.calcite.render;
|
||||||
|
|
||||||
import com.tencent.supersonic.common.pojo.enums.EngineType;
|
import com.tencent.supersonic.common.pojo.enums.EngineType;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Constants;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.S2CalciteSchema;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.DataModel;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.TableView;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Dimension;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.node.AggFunctionNode;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Identify;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.node.DataModelNode;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.JoinRelation;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.node.FilterNode;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Materialization;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.node.IdentifyNode;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Metric;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.node.MetricNode;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.OntologyQueryParam;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.node.SemanticNode;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.S2CalciteSchema;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.Constants;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.TableView;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.DataModel;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.node.AggFunctionNode;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.Dimension;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.node.DataModelNode;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.Identify;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.node.FilterNode;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.JoinRelation;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.node.IdentifyNode;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.Materialization;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.node.MetricNode;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.Metric;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.node.SemanticNode;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.OntologyQueryParam;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.calcite.sql.JoinConditionType;
|
import org.apache.calcite.sql.JoinConditionType;
|
||||||
import org.apache.calcite.sql.SqlBasicCall;
|
import org.apache.calcite.sql.SqlBasicCall;
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.sql.render;
|
package com.tencent.supersonic.headless.core.translator.parser.calcite.render;
|
||||||
|
|
||||||
import com.tencent.supersonic.common.pojo.ColumnOrder;
|
import com.tencent.supersonic.common.pojo.ColumnOrder;
|
||||||
import com.tencent.supersonic.common.pojo.enums.EngineType;
|
import com.tencent.supersonic.common.pojo.enums.EngineType;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.DataModel;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.S2CalciteSchema;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.OntologyQueryParam;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.TableView;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.S2CalciteSchema;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.node.MetricNode;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.TableView;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.node.SemanticNode;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.node.MetricNode;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.DataModel;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.node.SemanticNode;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.OntologyQueryParam;
|
||||||
import org.apache.calcite.sql.SqlNode;
|
import org.apache.calcite.sql.SqlNode;
|
||||||
import org.apache.calcite.sql.SqlNodeList;
|
import org.apache.calcite.sql.SqlNodeList;
|
||||||
import org.apache.calcite.sql.fun.SqlStdOperatorTable;
|
import org.apache.calcite.sql.fun.SqlStdOperatorTable;
|
||||||
@@ -1,17 +1,17 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.sql.render;
|
package com.tencent.supersonic.headless.core.translator.parser.calcite.render;
|
||||||
|
|
||||||
import com.tencent.supersonic.common.pojo.enums.EngineType;
|
import com.tencent.supersonic.common.pojo.enums.EngineType;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.DataModel;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.S2CalciteSchema;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Dimension;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.TableView;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Identify;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.node.MeasureNode;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Measure;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.node.MetricNode;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Metric;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.node.SemanticNode;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.OntologyQueryParam;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.DataModel;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.S2CalciteSchema;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.Dimension;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.TableView;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.Identify;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.node.MeasureNode;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.Measure;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.node.MetricNode;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.Metric;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.node.SemanticNode;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.OntologyQueryParam;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.apache.calcite.sql.SqlNode;
|
import org.apache.calcite.sql.SqlNode;
|
||||||
import org.apache.calcite.sql.validate.SqlValidatorScope;
|
import org.apache.calcite.sql.validate.SqlValidatorScope;
|
||||||
@@ -1,22 +1,22 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.sql.render;
|
package com.tencent.supersonic.headless.core.translator.parser.calcite.render;
|
||||||
|
|
||||||
import com.tencent.supersonic.common.pojo.enums.EngineType;
|
import com.tencent.supersonic.common.pojo.enums.EngineType;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Constants;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.S2CalciteSchema;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.DataModel;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.TableView;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Dimension;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.node.DataModelNode;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Identify;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.node.DimensionNode;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Materialization;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.node.FilterNode;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Measure;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.node.IdentifyNode;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Metric;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.node.MetricNode;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.OntologyQueryParam;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.node.SemanticNode;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.S2CalciteSchema;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.Constants;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.TableView;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.DataModel;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.node.DataModelNode;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.Dimension;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.node.DimensionNode;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.Identify;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.node.FilterNode;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.Materialization;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.node.IdentifyNode;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.Measure;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.node.MetricNode;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.Metric;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.node.SemanticNode;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.OntologyQueryParam;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.calcite.sql.SqlNode;
|
import org.apache.calcite.sql.SqlNode;
|
||||||
import org.apache.calcite.sql.validate.SqlValidatorScope;
|
import org.apache.calcite.sql.validate.SqlValidatorScope;
|
||||||
@@ -34,7 +34,7 @@ import java.util.Set;
|
|||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static com.tencent.supersonic.headless.core.translator.calcite.s2sql.Constants.DIMENSION_DELIMITER;
|
import static com.tencent.supersonic.headless.core.translator.parser.s2sql.Constants.DIMENSION_DELIMITER;
|
||||||
|
|
||||||
/** process the table dataSet from the defined data model schema */
|
/** process the table dataSet from the defined data model schema */
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.s2sql;
|
package com.tencent.supersonic.headless.core.translator.parser.s2sql;
|
||||||
|
|
||||||
public class Constants {
|
public class Constants {
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.s2sql;
|
package com.tencent.supersonic.headless.core.translator.parser.s2sql;
|
||||||
|
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.s2sql;
|
package com.tencent.supersonic.headless.core.translator.parser.s2sql;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.s2sql;
|
package com.tencent.supersonic.headless.core.translator.parser.s2sql;
|
||||||
|
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.s2sql;
|
package com.tencent.supersonic.headless.core.translator.parser.s2sql;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.s2sql;
|
package com.tencent.supersonic.headless.core.translator.parser.s2sql;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.s2sql;
|
package com.tencent.supersonic.headless.core.translator.parser.s2sql;
|
||||||
|
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.s2sql;
|
package com.tencent.supersonic.headless.core.translator.parser.s2sql;
|
||||||
|
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.s2sql;
|
package com.tencent.supersonic.headless.core.translator.parser.s2sql;
|
||||||
|
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.s2sql;
|
package com.tencent.supersonic.headless.core.translator.parser.s2sql;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.s2sql;
|
package com.tencent.supersonic.headless.core.translator.parser.s2sql;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.s2sql;
|
package com.tencent.supersonic.headless.core.translator.parser.s2sql;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.s2sql;
|
package com.tencent.supersonic.headless.core.translator.parser.s2sql;
|
||||||
|
|
||||||
import com.tencent.supersonic.headless.core.pojo.Database;
|
import com.tencent.supersonic.headless.core.pojo.Database;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.s2sql;
|
package com.tencent.supersonic.headless.core.translator.parser.s2sql;
|
||||||
|
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import com.tencent.supersonic.common.pojo.ColumnOrder;
|
import com.tencent.supersonic.common.pojo.ColumnOrder;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.s2sql;
|
package com.tencent.supersonic.headless.core.translator.parser.s2sql;
|
||||||
|
|
||||||
public interface SemanticItem {
|
public interface SemanticItem {
|
||||||
String getName();
|
String getName();
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.tencent.supersonic.headless.core.translator.calcite.s2sql;
|
package com.tencent.supersonic.headless.core.translator.parser.s2sql;
|
||||||
|
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -4,9 +4,9 @@ import com.tencent.supersonic.common.util.ContextUtils;
|
|||||||
import com.tencent.supersonic.headless.core.cache.QueryCache;
|
import com.tencent.supersonic.headless.core.cache.QueryCache;
|
||||||
import com.tencent.supersonic.headless.core.executor.QueryAccelerator;
|
import com.tencent.supersonic.headless.core.executor.QueryAccelerator;
|
||||||
import com.tencent.supersonic.headless.core.executor.QueryExecutor;
|
import com.tencent.supersonic.headless.core.executor.QueryExecutor;
|
||||||
import com.tencent.supersonic.headless.core.translator.QueryOptimizer;
|
|
||||||
import com.tencent.supersonic.headless.core.translator.QueryParser;
|
|
||||||
import com.tencent.supersonic.headless.core.translator.converter.QueryConverter;
|
import com.tencent.supersonic.headless.core.translator.converter.QueryConverter;
|
||||||
|
import com.tencent.supersonic.headless.core.translator.optimizer.QueryOptimizer;
|
||||||
|
import com.tencent.supersonic.headless.core.translator.parser.QueryParser;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.core.io.support.SpringFactoriesLoader;
|
import org.springframework.core.io.support.SpringFactoriesLoader;
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package com.tencent.supersonic.chat.core.parser.aggregate;
|
|||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.tencent.supersonic.headless.core.pojo.QueryStatement;
|
import com.tencent.supersonic.headless.core.pojo.QueryStatement;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.CalciteQueryParser;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.CalciteQueryParser;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.testng.Assert;
|
import org.testng.Assert;
|
||||||
|
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ import com.tencent.supersonic.common.pojo.ModelRela;
|
|||||||
import com.tencent.supersonic.common.pojo.enums.FilterOperatorEnum;
|
import com.tencent.supersonic.common.pojo.enums.FilterOperatorEnum;
|
||||||
import com.tencent.supersonic.headless.api.pojo.response.DatabaseResp;
|
import com.tencent.supersonic.headless.api.pojo.response.DatabaseResp;
|
||||||
import com.tencent.supersonic.headless.api.pojo.response.SemanticSchemaResp;
|
import com.tencent.supersonic.headless.api.pojo.response.SemanticSchemaResp;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.*;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.S2CalciteSchema;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Materialization.TimePartType;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.*;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.S2CalciteSchema;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.Materialization.TimePartType;
|
||||||
import com.tencent.supersonic.headless.server.pojo.yaml.*;
|
import com.tencent.supersonic.headless.server.pojo.yaml.*;
|
||||||
import com.tencent.supersonic.headless.server.service.SchemaService;
|
import com.tencent.supersonic.headless.server.service.SchemaService;
|
||||||
import com.tencent.supersonic.headless.server.utils.DatabaseConverter;
|
import com.tencent.supersonic.headless.server.utils.DatabaseConverter;
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ import com.tencent.supersonic.common.pojo.ColumnOrder;
|
|||||||
import com.tencent.supersonic.common.pojo.enums.EngineType;
|
import com.tencent.supersonic.common.pojo.enums.EngineType;
|
||||||
import com.tencent.supersonic.headless.api.pojo.response.SqlParserResp;
|
import com.tencent.supersonic.headless.api.pojo.response.SqlParserResp;
|
||||||
import com.tencent.supersonic.headless.core.pojo.QueryStatement;
|
import com.tencent.supersonic.headless.core.pojo.QueryStatement;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.OntologyQueryParam;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.S2CalciteSchema;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.S2CalciteSchema;
|
import com.tencent.supersonic.headless.core.translator.parser.calcite.SqlBuilder;
|
||||||
import com.tencent.supersonic.headless.core.translator.calcite.sql.SqlBuilder;
|
import com.tencent.supersonic.headless.core.translator.parser.s2sql.OntologyQueryParam;
|
||||||
import com.tencent.supersonic.headless.server.manager.SemanticSchemaManager;
|
import com.tencent.supersonic.headless.server.manager.SemanticSchemaManager;
|
||||||
import com.tencent.supersonic.headless.server.pojo.yaml.*;
|
import com.tencent.supersonic.headless.server.pojo.yaml.*;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|||||||
@@ -31,11 +31,13 @@ com.tencent.supersonic.headless.core.translator.converter.QueryConverter=\
|
|||||||
com.tencent.supersonic.headless.core.translator.converter.SqlQueryConverter,\
|
com.tencent.supersonic.headless.core.translator.converter.SqlQueryConverter,\
|
||||||
com.tencent.supersonic.headless.core.translator.converter.StructQueryConverter
|
com.tencent.supersonic.headless.core.translator.converter.StructQueryConverter
|
||||||
|
|
||||||
com.tencent.supersonic.headless.core.translator.QueryOptimizer=\
|
com.tencent.supersonic.headless.core.translator.optimizer.QueryOptimizer=\
|
||||||
com.tencent.supersonic.headless.core.translator.DetailQueryOptimizer
|
com.tencent.supersonic.headless.core.translator.optimizer.DetailQueryOptimizer,\
|
||||||
|
com.tencent.supersonic.headless.core.translator.optimizer.DbDialectOptimizer,\
|
||||||
|
com.tencent.supersonic.headless.core.translator.optimizer.ResultLimitOptimizer
|
||||||
|
|
||||||
com.tencent.supersonic.headless.core.translator.QueryParser=\
|
com.tencent.supersonic.headless.core.translator.parser.QueryParser=\
|
||||||
com.tencent.supersonic.headless.core.translator.calcite.CalciteQueryParser
|
com.tencent.supersonic.headless.core.translator.parser.calcite.CalciteQueryParser
|
||||||
|
|
||||||
com.tencent.supersonic.headless.core.executor.QueryExecutor=\
|
com.tencent.supersonic.headless.core.executor.QueryExecutor=\
|
||||||
com.tencent.supersonic.headless.core.executor.JdbcExecutor
|
com.tencent.supersonic.headless.core.executor.JdbcExecutor
|
||||||
|
|||||||
@@ -108,9 +108,9 @@ public abstract class S2BaseDemo implements CommandLineRunner {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract void doRun();
|
protected abstract void doRun();
|
||||||
|
|
||||||
abstract boolean checkNeedToRun();
|
protected abstract boolean checkNeedToRun();
|
||||||
|
|
||||||
protected DatabaseResp addDatabaseIfNotExist() {
|
protected DatabaseResp addDatabaseIfNotExist() {
|
||||||
List<DatabaseResp> databaseList = databaseService.getDatabaseList(defaultUser);
|
List<DatabaseResp> databaseList = databaseService.getDatabaseList(defaultUser);
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ public class S2CompanyDemo extends S2BaseDemo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
boolean checkNeedToRun() {
|
protected boolean checkNeedToRun() {
|
||||||
List<DomainResp> domainList = domainService.getDomainList();
|
List<DomainResp> domainList = domainService.getDomainList();
|
||||||
for (DomainResp domainResp : domainList) {
|
for (DomainResp domainResp : domainList) {
|
||||||
if (domainResp.getBizName().equalsIgnoreCase("corporate")) {
|
if (domainResp.getBizName().equalsIgnoreCase("corporate")) {
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ public class S2SingerDemo extends S2BaseDemo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
boolean checkNeedToRun() {
|
protected boolean checkNeedToRun() {
|
||||||
List<DomainResp> domainList = domainService.getDomainList();
|
List<DomainResp> domainList = domainService.getDomainList();
|
||||||
for (DomainResp domainResp : domainList) {
|
for (DomainResp domainResp : domainList) {
|
||||||
if (domainResp.getBizName().equalsIgnoreCase("singer")) {
|
if (domainResp.getBizName().equalsIgnoreCase("singer")) {
|
||||||
|
|||||||
@@ -46,9 +46,10 @@ public class S2SmallTalkDemo extends S2BaseDemo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
boolean checkNeedToRun() {
|
protected boolean checkNeedToRun() {
|
||||||
List<String> agentNames =
|
List<String> agentNames =
|
||||||
agentService.getAgents().stream().map(Agent::getName).collect(Collectors.toList());
|
agentService.getAgents().stream().map(Agent::getName).collect(Collectors.toList());
|
||||||
return !agentNames.contains("闲聊助手");
|
return !agentNames.contains("闲聊助手");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,11 +31,13 @@ com.tencent.supersonic.headless.core.translator.converter.QueryConverter=\
|
|||||||
com.tencent.supersonic.headless.core.translator.converter.SqlQueryConverter,\
|
com.tencent.supersonic.headless.core.translator.converter.SqlQueryConverter,\
|
||||||
com.tencent.supersonic.headless.core.translator.converter.StructQueryConverter
|
com.tencent.supersonic.headless.core.translator.converter.StructQueryConverter
|
||||||
|
|
||||||
com.tencent.supersonic.headless.core.translator.QueryOptimizer=\
|
com.tencent.supersonic.headless.core.translator.optimizer.QueryOptimizer=\
|
||||||
com.tencent.supersonic.headless.core.translator.DetailQueryOptimizer
|
com.tencent.supersonic.headless.core.translator.optimizer.DetailQueryOptimizer,\
|
||||||
|
com.tencent.supersonic.headless.core.translator.optimizer.DbDialectOptimizer,\
|
||||||
|
com.tencent.supersonic.headless.core.translator.optimizer.ResultLimitOptimizer
|
||||||
|
|
||||||
com.tencent.supersonic.headless.core.translator.QueryParser=\
|
com.tencent.supersonic.headless.core.translator.parser.QueryParser=\
|
||||||
com.tencent.supersonic.headless.core.translator.calcite.CalciteQueryParser
|
com.tencent.supersonic.headless.core.translator.parser.calcite.CalciteQueryParser
|
||||||
|
|
||||||
com.tencent.supersonic.headless.core.executor.QueryExecutor=\
|
com.tencent.supersonic.headless.core.executor.QueryExecutor=\
|
||||||
com.tencent.supersonic.headless.core.executor.JdbcExecutor
|
com.tencent.supersonic.headless.core.executor.JdbcExecutor
|
||||||
|
|||||||
@@ -21,6 +21,10 @@ spring:
|
|||||||
# username: root
|
# username: root
|
||||||
# password:
|
# password:
|
||||||
# sql:
|
# sql:
|
||||||
|
# enabled: true
|
||||||
|
# mode: always
|
||||||
|
# username: root
|
||||||
|
# password:
|
||||||
# init:
|
# init:
|
||||||
# schema-locations: classpath:db/schema-mysql.sql,classpath:db/schema-mysql-demo.sql
|
# schema-locations: classpath:db/schema-mysql.sql,classpath:db/schema-mysql-demo.sql
|
||||||
# data-locations: classpath:db/data-mysql.sql,classpath:db/data-mysql-demo.sql
|
# data-locations: classpath:db/data-mysql.sql,classpath:db/data-mysql-demo.sql
|
||||||
|
|||||||
@@ -541,7 +541,7 @@ CREATE TABLE IF NOT EXISTS `s2_term` (
|
|||||||
PRIMARY KEY (`id`)
|
PRIMARY KEY (`id`)
|
||||||
) ENGINE = InnoDB DEFAULT CHARSET = utf8 COMMENT ='术语表';
|
) ENGINE = InnoDB DEFAULT CHARSET = utf8 COMMENT ='术语表';
|
||||||
|
|
||||||
CREATE TABLE `s2_user_token` (
|
CREATE TABLE IF NOT EXISTS `s2_user_token` (
|
||||||
`id` bigint NOT NULL AUTO_INCREMENT,
|
`id` bigint NOT NULL AUTO_INCREMENT,
|
||||||
`name` VARCHAR(255) NOT NULL,
|
`name` VARCHAR(255) NOT NULL,
|
||||||
`user_name` VARCHAR(255) NOT NULL,
|
`user_name` VARCHAR(255) NOT NULL,
|
||||||
|
|||||||
@@ -21,6 +21,10 @@ spring:
|
|||||||
# username: root
|
# username: root
|
||||||
# password:
|
# password:
|
||||||
# sql:
|
# sql:
|
||||||
|
# enabled: true
|
||||||
|
# mode: always
|
||||||
|
# username: root
|
||||||
|
# password:
|
||||||
# init:
|
# init:
|
||||||
# schema-locations: classpath:db/schema-mysql.sql,classpath:db/schema-mysql-demo.sql
|
# schema-locations: classpath:db/schema-mysql.sql,classpath:db/schema-mysql-demo.sql
|
||||||
# data-locations: classpath:db/data-mysql.sql,classpath:db/data-mysql-demo.sql
|
# data-locations: classpath:db/data-mysql.sql,classpath:db/data-mysql-demo.sql
|
||||||
|
|||||||
2
pom.xml
2
pom.xml
@@ -47,7 +47,7 @@
|
|||||||
<yaml.utils.version>2.14.1</yaml.utils.version>
|
<yaml.utils.version>2.14.1</yaml.utils.version>
|
||||||
<transmittable.thread.local.version>2.12.1</transmittable.thread.local.version>
|
<transmittable.thread.local.version>2.12.1</transmittable.thread.local.version>
|
||||||
<jjwt.version>0.12.3</jjwt.version>
|
<jjwt.version>0.12.3</jjwt.version>
|
||||||
<alibaba.druid.version>1.2.3</alibaba.druid.version>
|
<alibaba.druid.version>1.2.24</alibaba.druid.version>
|
||||||
<mysql.connector.java.version>5.1.46</mysql.connector.java.version>
|
<mysql.connector.java.version>5.1.46</mysql.connector.java.version>
|
||||||
<mybatis.plus.version>3.5.7</mybatis.plus.version>
|
<mybatis.plus.version>3.5.7</mybatis.plus.version>
|
||||||
<clickhouse.jdbc.version>0.4.6</clickhouse.jdbc.version>
|
<clickhouse.jdbc.version>0.4.6</clickhouse.jdbc.version>
|
||||||
|
|||||||
Reference in New Issue
Block a user