diff --git a/common/src/main/java/com/tencent/supersonic/common/pojo/enums/EngineType.java b/common/src/main/java/com/tencent/supersonic/common/pojo/enums/EngineType.java index 4b05d2620..7acd72ed1 100644 --- a/common/src/main/java/com/tencent/supersonic/common/pojo/enums/EngineType.java +++ b/common/src/main/java/com/tencent/supersonic/common/pojo/enums/EngineType.java @@ -8,7 +8,8 @@ public enum EngineType { KAFKA(4, "kafka"), H2(5, "h2"), POSTGRESQL(6, "postgresql"), - OTHER(7, "other"); + OTHER(7, "other"), + DUCKDB(8, "duckdb"); private Integer code; diff --git a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/enums/DataType.java b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/enums/DataType.java index 38a3b0515..03578c0f9 100644 --- a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/enums/DataType.java +++ b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/enums/DataType.java @@ -45,7 +45,8 @@ public enum DataType { 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 desc; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/ClickHouseAdaptor.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/ClickHouseAdaptor.java index 0b9dfd68e..508b2bdba 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/ClickHouseAdaptor.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/ClickHouseAdaptor.java @@ -34,7 +34,7 @@ public class ClickHouseAdaptor extends BaseDbAdaptor { } @Override - public String functionNameCorrector(String sql) { + public String rewriteSql(String sql) { Map functionMap = new HashMap<>(); functionMap.put("MONTH".toLowerCase(), "toMonth"); functionMap.put("DAY".toLowerCase(), "toDayOfMonth"); diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/DbAdaptor.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/DbAdaptor.java index 63a478e7f..f2e650177 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/DbAdaptor.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/DbAdaptor.java @@ -11,7 +11,7 @@ public interface DbAdaptor { String getDateFormat(String dateType, String dateFormat, String column); - String functionNameCorrector(String sql); + String rewriteSql(String sql); List getDBs(ConnectInfo connectInfo) throws SQLException; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/DbAdaptorFactory.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/DbAdaptorFactory.java index 74c7762cb..c8e0aa582 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/DbAdaptorFactory.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/DbAdaptorFactory.java @@ -16,6 +16,7 @@ public class DbAdaptorFactory { dbAdaptorMap.put(EngineType.H2.getName(), new H2Adaptor()); dbAdaptorMap.put(EngineType.POSTGRESQL.getName(), new PostgresqlAdaptor()); dbAdaptorMap.put(EngineType.OTHER.getName(), new DefaultDbAdaptor()); + dbAdaptorMap.put(EngineType.DUCKDB.getName(), new DuckdbAdaptor()); } public static DbAdaptor getEngineAdaptor(String engineType) { diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/DefaultDbAdaptor.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/DefaultDbAdaptor.java index ae7caae10..16816d64f 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/DefaultDbAdaptor.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/DefaultDbAdaptor.java @@ -8,7 +8,7 @@ public class DefaultDbAdaptor extends BaseDbAdaptor { } @Override - public String functionNameCorrector(String sql) { + public String rewriteSql(String sql) { return sql; } } diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/DuckdbAdaptor.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/DuckdbAdaptor.java new file mode 100644 index 000000000..f578cbdce --- /dev/null +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/DuckdbAdaptor.java @@ -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 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"); + FieldType fieldType = classifyColumnType(dataType); + dbColumns.add(new DBColumn(columnName, dataType, remarks, fieldType)); + } + return dbColumns; + } + + @Override + public String rewriteSql(String sql) { + return sql.replaceAll("`", ""); + } + +} 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 7ae1e7cc1..5d7e4151d 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 @@ -62,7 +62,7 @@ public class H2Adaptor extends BaseDbAdaptor { } @Override - public String functionNameCorrector(String sql) { + public String rewriteSql(String sql) { return sql; } } diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/MysqlAdaptor.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/MysqlAdaptor.java index 64e3a5a4c..5a21036be 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/MysqlAdaptor.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/MysqlAdaptor.java @@ -31,7 +31,7 @@ public class MysqlAdaptor extends BaseDbAdaptor { } @Override - public String functionNameCorrector(String sql) { + public String rewriteSql(String sql) { return sql; } } diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/PostgresqlAdaptor.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/PostgresqlAdaptor.java index 42cff0c5b..7facc8e97 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/PostgresqlAdaptor.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/adaptor/db/PostgresqlAdaptor.java @@ -48,7 +48,7 @@ public class PostgresqlAdaptor extends BaseDbAdaptor { } @Override - public String functionNameCorrector(String sql) { + public String rewriteSql(String sql) { Map functionMap = new HashMap<>(); functionMap.put("MONTH".toLowerCase(), "TO_CHAR"); functionMap.put("DAY".toLowerCase(), "TO_CHAR"); diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/executor/AbstractAccelerator.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/executor/AbstractAccelerator.java index 282a60a35..175ff2497 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/executor/AbstractAccelerator.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/executor/AbstractAccelerator.java @@ -3,10 +3,10 @@ package com.tencent.supersonic.headless.core.executor; import com.tencent.supersonic.common.calcite.Configuration; import com.tencent.supersonic.common.jsqlparser.SqlSelectHelper; 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.calcite.sql.S2CalciteTable; -import com.tencent.supersonic.headless.core.translator.calcite.sql.S2CalciteTable.Builder; -import com.tencent.supersonic.headless.core.translator.calcite.sql.SchemaBuilder; +import com.tencent.supersonic.headless.core.translator.parser.calcite.S2CalciteTable; +import com.tencent.supersonic.headless.core.translator.parser.calcite.S2CalciteTable.Builder; +import com.tencent.supersonic.headless.core.translator.parser.calcite.SchemaBuilder; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.TimeRange; import lombok.extern.slf4j.Slf4j; import org.apache.calcite.adapter.enumerable.EnumerableRules; import org.apache.calcite.config.CalciteConnectionConfigImpl; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/pojo/QueryStatement.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/pojo/QueryStatement.java index 2a6ffd63e..8360ec944 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/pojo/QueryStatement.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/pojo/QueryStatement.java @@ -1,8 +1,8 @@ package com.tencent.supersonic.headless.core.pojo; 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.calcite.s2sql.OntologyQueryParam; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.Ontology; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.OntologyQueryParam; import lombok.Data; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.Triple; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/DefaultSemanticTranslator.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/DefaultSemanticTranslator.java index ef3b73e97..3af2e4bbc 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/DefaultSemanticTranslator.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/DefaultSemanticTranslator.java @@ -1,12 +1,12 @@ package com.tencent.supersonic.headless.core.translator; 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.headless.core.pojo.QueryStatement; 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.optimizer.QueryOptimizer; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.OntologyQueryParam; import com.tencent.supersonic.headless.core.utils.ComponentFactory; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -40,10 +40,6 @@ public class DefaultSemanticTranslator implements SemanticTranslator { if (StringUtils.isBlank(queryStatement.getSql())) { throw new RuntimeException("parse exception: " + queryStatement.getErrMsg()); } - if (!SqlSelectHelper.hasLimit(queryStatement.getSql())) { - queryStatement - .setSql(queryStatement.getSql() + " limit " + queryStatement.getLimit()); - } for (QueryOptimizer queryOptimizer : ComponentFactory.getQueryOptimizers()) { queryOptimizer.rewrite(queryStatement); diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/converter/DefaultDimValueConverter.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/converter/DefaultDimValueConverter.java index 8d44f7750..46f3494b5 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/converter/DefaultDimValueConverter.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/converter/DefaultDimValueConverter.java @@ -5,7 +5,7 @@ import com.tencent.supersonic.common.jsqlparser.SqlAddHelper; import com.tencent.supersonic.common.jsqlparser.SqlSelectHelper; import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum; 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 net.sf.jsqlparser.expression.Expression; import net.sf.jsqlparser.expression.StringValue; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/converter/MetricRatioConverter.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/converter/MetricRatioConverter.java index 05dd0fcfb..5bc209587 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/converter/MetricRatioConverter.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/converter/MetricRatioConverter.java @@ -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.SqlQueryParam; 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 lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/converter/SqlQueryConverter.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/converter/SqlQueryConverter.java index d9ad61187..47ff61e2a 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/converter/SqlQueryConverter.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/converter/SqlQueryConverter.java @@ -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.MetricType; 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.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 lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -40,7 +38,6 @@ public class SqlQueryConverter implements QueryConverter { @Override public void convert(QueryStatement queryStatement) throws Exception { convertNameToBizName(queryStatement); - rewriteFunction(queryStatement); rewriteOrderBy(queryStatement); // fill sqlQuery @@ -245,22 +242,6 @@ public class SqlQueryConverter implements QueryConverter { 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 getFieldNameToBizNameMap(SemanticSchemaResp semanticSchemaResp) { // support fieldName and field alias to bizName Map dimensionResults = semanticSchemaResp.getDimensions().stream().flatMap( diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/converter/SqlVariableConverter.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/converter/SqlVariableConverter.java index d0db39fb1..1ef5c2147 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/converter/SqlVariableConverter.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/converter/SqlVariableConverter.java @@ -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.SemanticSchemaResp; 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 lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/converter/StructQueryConverter.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/converter/StructQueryConverter.java index 0366cc037..ef89dce5c 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/converter/StructQueryConverter.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/converter/StructQueryConverter.java @@ -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.SqlQueryParam; 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 lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/optimizer/DbDialectOptimizer.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/optimizer/DbDialectOptimizer.java new file mode 100644 index 000000000..481379e28 --- /dev/null +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/optimizer/DbDialectOptimizer.java @@ -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); + } + } +} diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/DetailQueryOptimizer.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/optimizer/DetailQueryOptimizer.java similarity index 95% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/DetailQueryOptimizer.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/optimizer/DetailQueryOptimizer.java index 3a30a91f9..92836608a 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/DetailQueryOptimizer.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/optimizer/DetailQueryOptimizer.java @@ -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.StructQueryParam; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/QueryOptimizer.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/optimizer/QueryOptimizer.java similarity index 81% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/QueryOptimizer.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/optimizer/QueryOptimizer.java index a66bb7f12..baeb626dd 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/QueryOptimizer.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/optimizer/QueryOptimizer.java @@ -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; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/optimizer/ResultLimitOptimizer.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/optimizer/ResultLimitOptimizer.java new file mode 100644 index 000000000..3d13d2d0a --- /dev/null +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/optimizer/ResultLimitOptimizer.java @@ -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()); + } + } +} diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/QueryParser.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/QueryParser.java similarity index 78% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/QueryParser.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/QueryParser.java index 344335af0..c3a584832 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/QueryParser.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/QueryParser.java @@ -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; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/CalciteQueryParser.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/CalciteQueryParser.java similarity index 70% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/CalciteQueryParser.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/CalciteQueryParser.java index 8eed9bc2c..c4047b6b5 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/CalciteQueryParser.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/CalciteQueryParser.java @@ -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.translator.QueryParser; -import com.tencent.supersonic.headless.core.translator.calcite.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 com.tencent.supersonic.headless.core.translator.parser.QueryParser; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.Ontology; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/FilterToGroupScanRule.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/FilterToGroupScanRule.java similarity index 98% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/FilterToGroupScanRule.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/FilterToGroupScanRule.java index 59e163791..3cf783931 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/FilterToGroupScanRule.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/FilterToGroupScanRule.java @@ -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.RelRule; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/RuntimeOptions.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/RuntimeOptions.java similarity index 76% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/RuntimeOptions.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/RuntimeOptions.java index 9bf681b3e..67663d5b1 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/RuntimeOptions.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/RuntimeOptions.java @@ -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.Data; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/S2CalciteSchema.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/S2CalciteSchema.java similarity index 65% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/S2CalciteSchema.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/S2CalciteSchema.java index e1559809f..e0e0af42c 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/S2CalciteSchema.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/S2CalciteSchema.java @@ -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.calcite.s2sql.Dimension; -import com.tencent.supersonic.headless.core.translator.calcite.s2sql.JoinRelation; -import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Metric; -import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Ontology; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.DataModel; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.Dimension; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.JoinRelation; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.Metric; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.Ontology; import lombok.Builder; import lombok.Data; import org.apache.calcite.schema.Schema; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/S2CalciteTable.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/S2CalciteTable.java similarity index 98% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/S2CalciteTable.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/S2CalciteTable.java index 98a2b08fc..7b6d2b494 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/S2CalciteTable.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/S2CalciteTable.java @@ -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.linq4j.Enumerable; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/S2SQLSqlValidatorImpl.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/S2SQLSqlValidatorImpl.java similarity index 88% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/S2SQLSqlValidatorImpl.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/S2SQLSqlValidatorImpl.java index b3c7c0a57..c253c1b0f 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/S2SQLSqlValidatorImpl.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/S2SQLSqlValidatorImpl.java @@ -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.sql.SqlOperatorTable; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/SchemaBuilder.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/SchemaBuilder.java similarity index 98% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/SchemaBuilder.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/SchemaBuilder.java index c3ec52b9e..e7bcfb3b3 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/SchemaBuilder.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/SchemaBuilder.java @@ -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.pojo.enums.EngineType; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/SqlBuilder.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/SqlBuilder.java similarity index 83% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/SqlBuilder.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/SqlBuilder.java index 54c79e468..c8e48b352 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/SqlBuilder.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/SqlBuilder.java @@ -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.pojo.enums.EngineType; import com.tencent.supersonic.headless.api.pojo.enums.AggOption; import com.tencent.supersonic.headless.core.pojo.Database; 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.calcite.s2sql.DataModel; -import com.tencent.supersonic.headless.core.translator.calcite.s2sql.OntologyQueryParam; -import com.tencent.supersonic.headless.core.translator.calcite.sql.node.DataModelNode; -import com.tencent.supersonic.headless.core.translator.calcite.sql.node.SemanticNode; -import com.tencent.supersonic.headless.core.translator.calcite.sql.render.FilterRender; -import com.tencent.supersonic.headless.core.translator.calcite.sql.render.OutputRender; -import com.tencent.supersonic.headless.core.translator.calcite.sql.render.Renderer; -import com.tencent.supersonic.headless.core.translator.calcite.sql.render.SourceRender; +import com.tencent.supersonic.headless.core.translator.parser.calcite.node.DataModelNode; +import com.tencent.supersonic.headless.core.translator.parser.calcite.node.SemanticNode; +import com.tencent.supersonic.headless.core.translator.parser.calcite.render.FilterRender; +import com.tencent.supersonic.headless.core.translator.parser.calcite.render.OutputRender; +import com.tencent.supersonic.headless.core.translator.parser.calcite.render.Renderer; +import com.tencent.supersonic.headless.core.translator.parser.calcite.render.SourceRender; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.Constants; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.DataModel; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.OntologyQueryParam; import lombok.extern.slf4j.Slf4j; import org.apache.calcite.sql.SqlNode; import org.apache.calcite.sql.parser.SqlParser; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/TableView.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/TableView.java similarity index 92% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/TableView.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/TableView.java index 74828fbc2..5974ce419 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/TableView.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/TableView.java @@ -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 org.apache.calcite.sql.SqlBasicCall; import org.apache.calcite.sql.SqlKind; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/node/AggFunctionNode.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/node/AggFunctionNode.java similarity index 92% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/node/AggFunctionNode.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/node/AggFunctionNode.java index 54d0b7981..75fc1cf65 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/node/AggFunctionNode.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/node/AggFunctionNode.java @@ -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 org.apache.calcite.sql.SqlNode; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/node/DataModelNode.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/node/DataModelNode.java similarity index 98% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/node/DataModelNode.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/node/DataModelNode.java index b80458045..66113ab9b 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/node/DataModelNode.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/node/DataModelNode.java @@ -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.tencent.supersonic.common.calcite.Configuration; import com.tencent.supersonic.common.jsqlparser.SqlSelectHelper; import com.tencent.supersonic.common.pojo.enums.EngineType; -import com.tencent.supersonic.headless.core.translator.calcite.s2sql.*; -import com.tencent.supersonic.headless.core.translator.calcite.sql.S2CalciteSchema; -import com.tencent.supersonic.headless.core.translator.calcite.sql.SchemaBuilder; +import com.tencent.supersonic.headless.core.translator.parser.calcite.S2CalciteSchema; +import com.tencent.supersonic.headless.core.translator.parser.calcite.SchemaBuilder; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.*; import lombok.extern.slf4j.Slf4j; import org.apache.calcite.sql.*; import org.apache.calcite.sql.parser.SqlParser; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/node/DimensionNode.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/node/DimensionNode.java similarity index 90% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/node/DimensionNode.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/node/DimensionNode.java index 6119e33ba..0328917f6 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/node/DimensionNode.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/node/DimensionNode.java @@ -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.headless.core.translator.calcite.s2sql.Constants; -import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Dimension; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.Constants; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.Dimension; import org.apache.calcite.sql.SqlNode; import org.apache.calcite.sql.validate.SqlValidatorScope; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/node/ExtendNode.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/node/ExtendNode.java similarity index 94% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/node/ExtendNode.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/node/ExtendNode.java index d0a6b6e47..f5ff9ca7d 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/node/ExtendNode.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/node/ExtendNode.java @@ -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.SqlInternalOperator; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/node/FilterNode.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/node/FilterNode.java similarity index 91% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/node/FilterNode.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/node/FilterNode.java index ba8993de1..4528a3751 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/node/FilterNode.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/node/FilterNode.java @@ -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.SqlIdentifier; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/node/IdentifyNode.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/node/IdentifyNode.java similarity index 90% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/node/IdentifyNode.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/node/IdentifyNode.java index d42ef4948..f2b7a03cb 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/node/IdentifyNode.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/node/IdentifyNode.java @@ -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.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.validate.SqlValidatorScope; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/node/LateralViewExplodeNode.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/node/LateralViewExplodeNode.java similarity index 97% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/node/LateralViewExplodeNode.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/node/LateralViewExplodeNode.java index 920bd9a1c..5a2db5a72 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/node/LateralViewExplodeNode.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/node/LateralViewExplodeNode.java @@ -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.sql.SqlCall; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/node/MeasureNode.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/node/MeasureNode.java similarity index 89% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/node/MeasureNode.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/node/MeasureNode.java index 41638d097..1dd815fdd 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/node/MeasureNode.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/node/MeasureNode.java @@ -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.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.validate.SqlValidatorScope; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/node/MetricNode.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/node/MetricNode.java similarity index 86% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/node/MetricNode.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/node/MetricNode.java index fe4ac64d5..34bc55c31 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/node/MetricNode.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/node/MetricNode.java @@ -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.headless.core.translator.calcite.s2sql.Metric; -import com.tencent.supersonic.headless.core.translator.calcite.sql.S2CalciteSchema; +import com.tencent.supersonic.headless.core.translator.parser.calcite.S2CalciteSchema; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.Metric; import lombok.Data; import org.apache.calcite.sql.SqlNode; import org.apache.calcite.sql.validate.SqlValidatorScope; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/node/SemanticNode.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/node/SemanticNode.java similarity index 98% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/node/SemanticNode.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/node/SemanticNode.java index 4f3849e2b..88f2a7d80 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/node/SemanticNode.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/node/SemanticNode.java @@ -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.SemanticSqlDialect; import com.tencent.supersonic.common.calcite.SqlDialectFactory; 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.calcite.sql.FilterToGroupScanRule; -import com.tencent.supersonic.headless.core.translator.calcite.sql.S2CalciteSchema; +import com.tencent.supersonic.headless.core.translator.parser.calcite.FilterToGroupScanRule; +import com.tencent.supersonic.headless.core.translator.parser.calcite.S2CalciteSchema; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.Constants; import lombok.extern.slf4j.Slf4j; import org.apache.calcite.plan.RelOptPlanner; import org.apache.calcite.plan.hep.HepPlanner; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/render/FilterRender.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/render/FilterRender.java similarity index 79% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/render/FilterRender.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/render/FilterRender.java index 90504aff1..58993f49c 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/render/FilterRender.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/render/FilterRender.java @@ -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.headless.core.translator.calcite.s2sql.Constants; -import com.tencent.supersonic.headless.core.translator.calcite.s2sql.DataModel; -import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Metric; -import com.tencent.supersonic.headless.core.translator.calcite.s2sql.OntologyQueryParam; -import com.tencent.supersonic.headless.core.translator.calcite.sql.S2CalciteSchema; -import com.tencent.supersonic.headless.core.translator.calcite.sql.TableView; -import com.tencent.supersonic.headless.core.translator.calcite.sql.node.FilterNode; -import com.tencent.supersonic.headless.core.translator.calcite.sql.node.MetricNode; -import com.tencent.supersonic.headless.core.translator.calcite.sql.node.SemanticNode; +import com.tencent.supersonic.headless.core.translator.parser.calcite.S2CalciteSchema; +import com.tencent.supersonic.headless.core.translator.parser.calcite.TableView; +import com.tencent.supersonic.headless.core.translator.parser.calcite.node.FilterNode; +import com.tencent.supersonic.headless.core.translator.parser.calcite.node.MetricNode; +import com.tencent.supersonic.headless.core.translator.parser.calcite.node.SemanticNode; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.Constants; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.DataModel; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.Metric; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.OntologyQueryParam; import org.apache.calcite.sql.SqlIdentifier; import org.apache.calcite.sql.SqlNode; import org.apache.calcite.sql.parser.SqlParserPos; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/render/JoinRender.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/render/JoinRender.java similarity index 94% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/render/JoinRender.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/render/JoinRender.java index 50fad152a..ba63fc91b 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/render/JoinRender.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/render/JoinRender.java @@ -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.headless.core.translator.calcite.s2sql.Constants; -import com.tencent.supersonic.headless.core.translator.calcite.s2sql.DataModel; -import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Dimension; -import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Identify; -import com.tencent.supersonic.headless.core.translator.calcite.s2sql.JoinRelation; -import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Materialization; -import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Metric; -import com.tencent.supersonic.headless.core.translator.calcite.s2sql.OntologyQueryParam; -import com.tencent.supersonic.headless.core.translator.calcite.sql.S2CalciteSchema; -import com.tencent.supersonic.headless.core.translator.calcite.sql.TableView; -import com.tencent.supersonic.headless.core.translator.calcite.sql.node.AggFunctionNode; -import com.tencent.supersonic.headless.core.translator.calcite.sql.node.DataModelNode; -import com.tencent.supersonic.headless.core.translator.calcite.sql.node.FilterNode; -import com.tencent.supersonic.headless.core.translator.calcite.sql.node.IdentifyNode; -import com.tencent.supersonic.headless.core.translator.calcite.sql.node.MetricNode; -import com.tencent.supersonic.headless.core.translator.calcite.sql.node.SemanticNode; +import com.tencent.supersonic.headless.core.translator.parser.calcite.S2CalciteSchema; +import com.tencent.supersonic.headless.core.translator.parser.calcite.TableView; +import com.tencent.supersonic.headless.core.translator.parser.calcite.node.AggFunctionNode; +import com.tencent.supersonic.headless.core.translator.parser.calcite.node.DataModelNode; +import com.tencent.supersonic.headless.core.translator.parser.calcite.node.FilterNode; +import com.tencent.supersonic.headless.core.translator.parser.calcite.node.IdentifyNode; +import com.tencent.supersonic.headless.core.translator.parser.calcite.node.MetricNode; +import com.tencent.supersonic.headless.core.translator.parser.calcite.node.SemanticNode; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.Constants; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.DataModel; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.Dimension; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.Identify; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.JoinRelation; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.Materialization; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.Metric; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.OntologyQueryParam; import lombok.extern.slf4j.Slf4j; import org.apache.calcite.sql.JoinConditionType; import org.apache.calcite.sql.SqlBasicCall; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/render/OutputRender.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/render/OutputRender.java similarity index 80% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/render/OutputRender.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/render/OutputRender.java index 4ab0daa35..abee245bd 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/render/OutputRender.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/render/OutputRender.java @@ -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.enums.EngineType; -import com.tencent.supersonic.headless.core.translator.calcite.s2sql.DataModel; -import com.tencent.supersonic.headless.core.translator.calcite.s2sql.OntologyQueryParam; -import com.tencent.supersonic.headless.core.translator.calcite.sql.S2CalciteSchema; -import com.tencent.supersonic.headless.core.translator.calcite.sql.TableView; -import com.tencent.supersonic.headless.core.translator.calcite.sql.node.MetricNode; -import com.tencent.supersonic.headless.core.translator.calcite.sql.node.SemanticNode; +import com.tencent.supersonic.headless.core.translator.parser.calcite.S2CalciteSchema; +import com.tencent.supersonic.headless.core.translator.parser.calcite.TableView; +import com.tencent.supersonic.headless.core.translator.parser.calcite.node.MetricNode; +import com.tencent.supersonic.headless.core.translator.parser.calcite.node.SemanticNode; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.DataModel; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.OntologyQueryParam; import org.apache.calcite.sql.SqlNode; import org.apache.calcite.sql.SqlNodeList; import org.apache.calcite.sql.fun.SqlStdOperatorTable; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/render/Renderer.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/render/Renderer.java similarity index 82% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/render/Renderer.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/render/Renderer.java index c3466b540..dfcac8916 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/render/Renderer.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/render/Renderer.java @@ -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.headless.core.translator.calcite.s2sql.DataModel; -import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Dimension; -import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Identify; -import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Measure; -import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Metric; -import com.tencent.supersonic.headless.core.translator.calcite.s2sql.OntologyQueryParam; -import com.tencent.supersonic.headless.core.translator.calcite.sql.S2CalciteSchema; -import com.tencent.supersonic.headless.core.translator.calcite.sql.TableView; -import com.tencent.supersonic.headless.core.translator.calcite.sql.node.MeasureNode; -import com.tencent.supersonic.headless.core.translator.calcite.sql.node.MetricNode; -import com.tencent.supersonic.headless.core.translator.calcite.sql.node.SemanticNode; +import com.tencent.supersonic.headless.core.translator.parser.calcite.S2CalciteSchema; +import com.tencent.supersonic.headless.core.translator.parser.calcite.TableView; +import com.tencent.supersonic.headless.core.translator.parser.calcite.node.MeasureNode; +import com.tencent.supersonic.headless.core.translator.parser.calcite.node.MetricNode; +import com.tencent.supersonic.headless.core.translator.parser.calcite.node.SemanticNode; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.DataModel; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.Dimension; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.Identify; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.Measure; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.Metric; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.OntologyQueryParam; import lombok.Data; import org.apache.calcite.sql.SqlNode; import org.apache.calcite.sql.validate.SqlValidatorScope; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/render/SourceRender.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/render/SourceRender.java similarity index 91% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/render/SourceRender.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/render/SourceRender.java index 399835731..8ac3e0678 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/sql/render/SourceRender.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/render/SourceRender.java @@ -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.headless.core.translator.calcite.s2sql.Constants; -import com.tencent.supersonic.headless.core.translator.calcite.s2sql.DataModel; -import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Dimension; -import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Identify; -import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Materialization; -import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Measure; -import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Metric; -import com.tencent.supersonic.headless.core.translator.calcite.s2sql.OntologyQueryParam; -import com.tencent.supersonic.headless.core.translator.calcite.sql.S2CalciteSchema; -import com.tencent.supersonic.headless.core.translator.calcite.sql.TableView; -import com.tencent.supersonic.headless.core.translator.calcite.sql.node.DataModelNode; -import com.tencent.supersonic.headless.core.translator.calcite.sql.node.DimensionNode; -import com.tencent.supersonic.headless.core.translator.calcite.sql.node.FilterNode; -import com.tencent.supersonic.headless.core.translator.calcite.sql.node.IdentifyNode; -import com.tencent.supersonic.headless.core.translator.calcite.sql.node.MetricNode; -import com.tencent.supersonic.headless.core.translator.calcite.sql.node.SemanticNode; +import com.tencent.supersonic.headless.core.translator.parser.calcite.S2CalciteSchema; +import com.tencent.supersonic.headless.core.translator.parser.calcite.TableView; +import com.tencent.supersonic.headless.core.translator.parser.calcite.node.DataModelNode; +import com.tencent.supersonic.headless.core.translator.parser.calcite.node.DimensionNode; +import com.tencent.supersonic.headless.core.translator.parser.calcite.node.FilterNode; +import com.tencent.supersonic.headless.core.translator.parser.calcite.node.IdentifyNode; +import com.tencent.supersonic.headless.core.translator.parser.calcite.node.MetricNode; +import com.tencent.supersonic.headless.core.translator.parser.calcite.node.SemanticNode; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.Constants; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.DataModel; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.Dimension; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.Identify; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.Materialization; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.Measure; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.Metric; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.OntologyQueryParam; import lombok.extern.slf4j.Slf4j; import org.apache.calcite.sql.SqlNode; import org.apache.calcite.sql.validate.SqlValidatorScope; @@ -34,7 +34,7 @@ import java.util.Set; import java.util.UUID; 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 */ @Slf4j diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/Constants.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/Constants.java similarity index 93% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/Constants.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/Constants.java index e2b38952a..0ad7b9d0f 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/Constants.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/Constants.java @@ -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 { diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/DataModel.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/DataModel.java similarity index 87% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/DataModel.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/DataModel.java index 1de81b929..ab95cbeea 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/DataModel.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/DataModel.java @@ -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.Data; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/DataType.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/DataType.java similarity index 92% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/DataType.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/DataType.java index f14e7b737..e8e5ab633 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/DataType.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/DataType.java @@ -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; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/Dimension.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/Dimension.java similarity index 88% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/Dimension.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/Dimension.java index 559444f32..7fcc6aaba 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/Dimension.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/Dimension.java @@ -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.Data; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/DimensionTimeTypeParams.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/DimensionTimeTypeParams.java similarity index 65% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/DimensionTimeTypeParams.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/DimensionTimeTypeParams.java index 396a60528..d1d1bbdba 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/DimensionTimeTypeParams.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/DimensionTimeTypeParams.java @@ -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; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/Identify.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/Identify.java similarity index 80% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/Identify.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/Identify.java index c8909003d..c9a5fa380 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/Identify.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/Identify.java @@ -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.Data; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/JoinRelation.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/JoinRelation.java similarity index 82% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/JoinRelation.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/JoinRelation.java index 80ef7b71c..ebf7b828f 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/JoinRelation.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/JoinRelation.java @@ -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.Data; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/Materialization.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/Materialization.java similarity index 94% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/Materialization.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/Materialization.java index d4166e862..c882ed1d7 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/Materialization.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/Materialization.java @@ -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.Data; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/MaterializationElement.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/MaterializationElement.java similarity index 73% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/MaterializationElement.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/MaterializationElement.java index 89175e5da..620b0d767 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/MaterializationElement.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/MaterializationElement.java @@ -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.Data; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/Measure.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/Measure.java similarity index 84% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/Measure.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/Measure.java index 20be0f30c..76b15f08a 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/Measure.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/Measure.java @@ -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.Builder; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/Metric.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/Metric.java similarity index 81% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/Metric.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/Metric.java index d58328ec3..da334b2df 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/Metric.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/Metric.java @@ -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; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/MetricTypeParams.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/MetricTypeParams.java similarity index 78% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/MetricTypeParams.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/MetricTypeParams.java index a3386526e..105b7bc00 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/MetricTypeParams.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/MetricTypeParams.java @@ -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; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/Ontology.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/Ontology.java similarity index 91% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/Ontology.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/Ontology.java index c44e7225c..64d802d51 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/Ontology.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/Ontology.java @@ -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 lombok.Data; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/OntologyQueryParam.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/OntologyQueryParam.java similarity index 88% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/OntologyQueryParam.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/OntologyQueryParam.java index 90711c5da..10aea58c5 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/OntologyQueryParam.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/OntologyQueryParam.java @@ -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.tencent.supersonic.common.pojo.ColumnOrder; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/SemanticItem.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/SemanticItem.java similarity index 52% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/SemanticItem.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/SemanticItem.java index be239b1d7..b1ee0e403 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/SemanticItem.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/SemanticItem.java @@ -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 { String getName(); diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/TimeRange.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/TimeRange.java similarity index 65% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/TimeRange.java rename to headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/TimeRange.java index 70e759035..742c7df36 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/calcite/s2sql/TimeRange.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/s2sql/TimeRange.java @@ -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.Data; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/utils/ComponentFactory.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/utils/ComponentFactory.java index 37305db94..b6e573e6d 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/utils/ComponentFactory.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/utils/ComponentFactory.java @@ -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.executor.QueryAccelerator; 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.optimizer.QueryOptimizer; +import com.tencent.supersonic.headless.core.translator.parser.QueryParser; import lombok.extern.slf4j.Slf4j; import org.springframework.core.io.support.SpringFactoriesLoader; diff --git a/headless/core/src/test/java/com/tencent/supersonic/chat/core/parser/aggregate/CalciteSqlParserTest.java b/headless/core/src/test/java/com/tencent/supersonic/chat/core/parser/aggregate/CalciteSqlParserTest.java index 72fa452c9..c85fe7141 100644 --- a/headless/core/src/test/java/com/tencent/supersonic/chat/core/parser/aggregate/CalciteSqlParserTest.java +++ b/headless/core/src/test/java/com/tencent/supersonic/chat/core/parser/aggregate/CalciteSqlParserTest.java @@ -2,7 +2,7 @@ package com.tencent.supersonic.chat.core.parser.aggregate; import com.alibaba.fastjson.JSON; 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.testng.Assert; diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/manager/SemanticSchemaManager.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/manager/SemanticSchemaManager.java index cb4d828af..d1b99f0b2 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/manager/SemanticSchemaManager.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/manager/SemanticSchemaManager.java @@ -4,9 +4,9 @@ import com.tencent.supersonic.common.pojo.ModelRela; 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.SemanticSchemaResp; -import com.tencent.supersonic.headless.core.translator.calcite.s2sql.*; -import com.tencent.supersonic.headless.core.translator.calcite.s2sql.Materialization.TimePartType; -import com.tencent.supersonic.headless.core.translator.calcite.sql.S2CalciteSchema; +import com.tencent.supersonic.headless.core.translator.parser.calcite.S2CalciteSchema; +import com.tencent.supersonic.headless.core.translator.parser.s2sql.*; +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.service.SchemaService; import com.tencent.supersonic.headless.server.utils.DatabaseConverter; diff --git a/headless/server/src/test/java/com/tencent/supersonic/headless/server/calcite/HeadlessParserServiceTest.java b/headless/server/src/test/java/com/tencent/supersonic/headless/server/calcite/HeadlessParserServiceTest.java index 2c4fe832d..dc69e6d70 100644 --- a/headless/server/src/test/java/com/tencent/supersonic/headless/server/calcite/HeadlessParserServiceTest.java +++ b/headless/server/src/test/java/com/tencent/supersonic/headless/server/calcite/HeadlessParserServiceTest.java @@ -4,9 +4,9 @@ import com.tencent.supersonic.common.pojo.ColumnOrder; import com.tencent.supersonic.common.pojo.enums.EngineType; import com.tencent.supersonic.headless.api.pojo.response.SqlParserResp; 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.calcite.sql.S2CalciteSchema; -import com.tencent.supersonic.headless.core.translator.calcite.sql.SqlBuilder; +import com.tencent.supersonic.headless.core.translator.parser.calcite.S2CalciteSchema; +import com.tencent.supersonic.headless.core.translator.parser.calcite.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.pojo.yaml.*; import lombok.extern.slf4j.Slf4j; diff --git a/launchers/headless/src/main/resources/META-INF/spring.factories b/launchers/headless/src/main/resources/META-INF/spring.factories index d91c2e7d3..918a0baf4 100644 --- a/launchers/headless/src/main/resources/META-INF/spring.factories +++ b/launchers/headless/src/main/resources/META-INF/spring.factories @@ -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.StructQueryConverter -com.tencent.supersonic.headless.core.translator.QueryOptimizer=\ - com.tencent.supersonic.headless.core.translator.DetailQueryOptimizer +com.tencent.supersonic.headless.core.translator.optimizer.QueryOptimizer=\ + 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.calcite.CalciteQueryParser +com.tencent.supersonic.headless.core.translator.parser.QueryParser=\ + com.tencent.supersonic.headless.core.translator.parser.calcite.CalciteQueryParser com.tencent.supersonic.headless.core.executor.QueryExecutor=\ com.tencent.supersonic.headless.core.executor.JdbcExecutor diff --git a/launchers/standalone/src/main/java/com/tencent/supersonic/demo/S2BaseDemo.java b/launchers/standalone/src/main/java/com/tencent/supersonic/demo/S2BaseDemo.java index fa94e706f..fc71bd5b2 100644 --- a/launchers/standalone/src/main/java/com/tencent/supersonic/demo/S2BaseDemo.java +++ b/launchers/standalone/src/main/java/com/tencent/supersonic/demo/S2BaseDemo.java @@ -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() { List databaseList = databaseService.getDatabaseList(defaultUser); diff --git a/launchers/standalone/src/main/java/com/tencent/supersonic/demo/S2CompanyDemo.java b/launchers/standalone/src/main/java/com/tencent/supersonic/demo/S2CompanyDemo.java index 6c19cec37..388017106 100644 --- a/launchers/standalone/src/main/java/com/tencent/supersonic/demo/S2CompanyDemo.java +++ b/launchers/standalone/src/main/java/com/tencent/supersonic/demo/S2CompanyDemo.java @@ -52,7 +52,7 @@ public class S2CompanyDemo extends S2BaseDemo { } @Override - boolean checkNeedToRun() { + protected boolean checkNeedToRun() { List domainList = domainService.getDomainList(); for (DomainResp domainResp : domainList) { if (domainResp.getBizName().equalsIgnoreCase("corporate")) { diff --git a/launchers/standalone/src/main/java/com/tencent/supersonic/demo/S2SingerDemo.java b/launchers/standalone/src/main/java/com/tencent/supersonic/demo/S2SingerDemo.java index 1b40be2d5..68ad3150c 100644 --- a/launchers/standalone/src/main/java/com/tencent/supersonic/demo/S2SingerDemo.java +++ b/launchers/standalone/src/main/java/com/tencent/supersonic/demo/S2SingerDemo.java @@ -57,7 +57,7 @@ public class S2SingerDemo extends S2BaseDemo { } @Override - boolean checkNeedToRun() { + protected boolean checkNeedToRun() { List domainList = domainService.getDomainList(); for (DomainResp domainResp : domainList) { if (domainResp.getBizName().equalsIgnoreCase("singer")) { diff --git a/launchers/standalone/src/main/java/com/tencent/supersonic/demo/S2SmallTalkDemo.java b/launchers/standalone/src/main/java/com/tencent/supersonic/demo/S2SmallTalkDemo.java index 3c8afaaff..43ed610c2 100644 --- a/launchers/standalone/src/main/java/com/tencent/supersonic/demo/S2SmallTalkDemo.java +++ b/launchers/standalone/src/main/java/com/tencent/supersonic/demo/S2SmallTalkDemo.java @@ -46,9 +46,10 @@ public class S2SmallTalkDemo extends S2BaseDemo { } @Override - boolean checkNeedToRun() { + protected boolean checkNeedToRun() { List agentNames = agentService.getAgents().stream().map(Agent::getName).collect(Collectors.toList()); return !agentNames.contains("闲聊助手"); } + } diff --git a/launchers/standalone/src/main/resources/META-INF/spring.factories b/launchers/standalone/src/main/resources/META-INF/spring.factories index 0c35cf42d..40943382a 100644 --- a/launchers/standalone/src/main/resources/META-INF/spring.factories +++ b/launchers/standalone/src/main/resources/META-INF/spring.factories @@ -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.StructQueryConverter -com.tencent.supersonic.headless.core.translator.QueryOptimizer=\ - com.tencent.supersonic.headless.core.translator.DetailQueryOptimizer +com.tencent.supersonic.headless.core.translator.optimizer.QueryOptimizer=\ + 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.calcite.CalciteQueryParser +com.tencent.supersonic.headless.core.translator.parser.QueryParser=\ + com.tencent.supersonic.headless.core.translator.parser.calcite.CalciteQueryParser com.tencent.supersonic.headless.core.executor.QueryExecutor=\ com.tencent.supersonic.headless.core.executor.JdbcExecutor diff --git a/launchers/standalone/src/main/resources/application-local.yaml b/launchers/standalone/src/main/resources/application-local.yaml index 6cc6e76cc..a9fa2a589 100644 --- a/launchers/standalone/src/main/resources/application-local.yaml +++ b/launchers/standalone/src/main/resources/application-local.yaml @@ -21,6 +21,10 @@ spring: # username: root # password: # sql: +# enabled: true +# mode: always +# username: root +# password: # init: # 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 diff --git a/launchers/standalone/src/main/resources/db/schema-mysql.sql b/launchers/standalone/src/main/resources/db/schema-mysql.sql index 7d13ad998..a0c1df547 100644 --- a/launchers/standalone/src/main/resources/db/schema-mysql.sql +++ b/launchers/standalone/src/main/resources/db/schema-mysql.sql @@ -541,7 +541,7 @@ CREATE TABLE IF NOT EXISTS `s2_term` ( PRIMARY KEY (`id`) ) 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, `name` VARCHAR(255) NOT NULL, `user_name` VARCHAR(255) NOT NULL, diff --git a/launchers/standalone/src/test/resources/application-local.yaml b/launchers/standalone/src/test/resources/application-local.yaml index 6cc6e76cc..a9fa2a589 100644 --- a/launchers/standalone/src/test/resources/application-local.yaml +++ b/launchers/standalone/src/test/resources/application-local.yaml @@ -21,6 +21,10 @@ spring: # username: root # password: # sql: +# enabled: true +# mode: always +# username: root +# password: # init: # 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 diff --git a/pom.xml b/pom.xml index 3ef71963e..81c9d17f5 100644 --- a/pom.xml +++ b/pom.xml @@ -47,7 +47,7 @@ 2.14.1 2.12.1 0.12.3 - 1.2.3 + 1.2.24 5.1.46 3.5.7 0.4.6