diff --git a/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/pojo/UserWithPassword.java b/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/pojo/UserWithPassword.java
index fc5dfbd05..4da31dac0 100644
--- a/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/pojo/UserWithPassword.java
+++ b/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/pojo/UserWithPassword.java
@@ -24,7 +24,7 @@ public class UserWithPassword extends User {
public UserWithPassword(Long id, String name, String displayName, String email, String password,
Integer isAdmin) {
- super(id, name, displayName, email, isAdmin);
+ super(id, name, displayName, email, isAdmin, null);
this.password = password;
}
diff --git a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/adaptor/DefaultUserAdaptor.java b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/adaptor/DefaultUserAdaptor.java
index fb54432a5..9e1064b50 100644
--- a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/adaptor/DefaultUserAdaptor.java
+++ b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/adaptor/DefaultUserAdaptor.java
@@ -18,6 +18,7 @@ import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
+import java.sql.Timestamp;
import java.util.List;
import java.util.Optional;
import java.util.Set;
@@ -102,7 +103,9 @@ public class DefaultUserAdaptor implements UserAdaptor {
TokenService tokenService = ContextUtils.getBean(TokenService.class);
try {
UserWithPassword user = getUserWithPassword(userReq);
- return tokenService.generateToken(UserWithPassword.convert(user), appKey);
+ String token = tokenService.generateToken(UserWithPassword.convert(user), appKey);
+ updateLastLogin(userReq.getName());
+ return token;
} catch (Exception e) {
log.error("", e);
throw new RuntimeException("password encrypt error, please try again");
@@ -267,4 +270,11 @@ public class DefaultUserAdaptor implements UserAdaptor {
userToken.setExpireDate(userTokenDO.getExpireDateTime());
return userToken;
}
+
+ private void updateLastLogin(String userName) {
+ UserRepository userRepository = ContextUtils.getBean(UserRepository.class);
+ UserDO userDO = userRepository.getUser(userName);
+ userDO.setLastLogin(new Timestamp(System.currentTimeMillis()));
+ userRepository.updateUser(userDO);
+ }
}
diff --git a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/persistence/dataobject/UserDO.java b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/persistence/dataobject/UserDO.java
index 341119b59..bc5d684ad 100644
--- a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/persistence/dataobject/UserDO.java
+++ b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/persistence/dataobject/UserDO.java
@@ -3,7 +3,11 @@ package com.tencent.supersonic.auth.authentication.persistence.dataobject;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import java.sql.Timestamp;
+
+@Data
@TableName("s2_user")
public class UserDO {
@@ -27,71 +31,25 @@ public class UserDO {
/** */
private Integer isAdmin;
- /** @return id */
- public Long getId() {
- return id;
- }
-
- /** @param id */
- public void setId(Long id) {
- this.id = id;
- }
-
- /** @return name */
- public String getName() {
- return name;
- }
+ private Timestamp lastLogin;
/** @param name */
public void setName(String name) {
this.name = name == null ? null : name.trim();
}
- /** @return password */
- public String getPassword() {
- return password;
- }
-
/** @param password */
public void setPassword(String password) {
this.password = password == null ? null : password.trim();
}
- public String getSalt() {
- return salt;
- }
-
public void setSalt(String salt) {
this.salt = salt == null ? null : salt.trim();
}
- /** @return display_name */
- public String getDisplayName() {
- return displayName;
- }
-
- /** @param displayName */
- public void setDisplayName(String displayName) {
- this.displayName = displayName == null ? null : displayName.trim();
- }
-
- /** @return email */
- public String getEmail() {
- return email;
- }
-
/** @param email */
public void setEmail(String email) {
this.email = email == null ? null : email.trim();
}
- /** @return is_admin */
- public Integer getIsAdmin() {
- return isAdmin;
- }
-
- /** @param isAdmin */
- public void setIsAdmin(Integer isAdmin) {
- this.isAdmin = isAdmin;
- }
}
diff --git a/auth/authentication/src/main/resources/mapper/UserDOMapper.xml b/auth/authentication/src/main/resources/mapper/UserDOMapper.xml
index 4bb7ada14..64f9e7040 100644
--- a/auth/authentication/src/main/resources/mapper/UserDOMapper.xml
+++ b/auth/authentication/src/main/resources/mapper/UserDOMapper.xml
@@ -136,6 +136,9 @@
is_admin = #{isAdmin,jdbcType=INTEGER},
+
+ last_login = #{lastLogin,jdbcType=TIMESTAMP},
+
where id = #{id,jdbcType=BIGINT}
diff --git a/common/src/main/java/com/tencent/supersonic/common/pojo/User.java b/common/src/main/java/com/tencent/supersonic/common/pojo/User.java
index b85194984..2d947033d 100644
--- a/common/src/main/java/com/tencent/supersonic/common/pojo/User.java
+++ b/common/src/main/java/com/tencent/supersonic/common/pojo/User.java
@@ -6,6 +6,7 @@ import lombok.NoArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import java.io.Serializable;
+import java.sql.Timestamp;
@Data
@NoArgsConstructor
@@ -22,26 +23,28 @@ public class User implements Serializable {
private Integer isAdmin;
+ private Timestamp lastLogin;
+
public static User get(Long id, String name, String displayName, String email,
Integer isAdmin) {
- return new User(id, name, displayName, email, isAdmin);
+ return new User(id, name, displayName, email, isAdmin, null);
}
public static User get(Long id, String name) {
- return new User(id, name, name, name, 0);
+ return new User(id, name, name, name, 0, null);
}
public static User getDefaultUser() {
- return new User(1L, "admin", "admin", "admin@email", 1);
+ return new User(1L, "admin", "admin", "admin@email", 1, null);
}
public static User getVisitUser() {
- return new User(1L, "visit", "visit", "visit@email", 0);
+ return new User(1L, "visit", "visit", "visit@email", 0, null);
}
public static User getAppUser(int appId) {
String name = String.format("app_%s", appId);
- return new User(1L, name, name, "", 1);
+ return new User(1L, name, name, "", 1, null);
}
public String getDisplayName() {
diff --git a/common/src/main/java/com/tencent/supersonic/common/service/impl/EmbeddingServiceImpl.java b/common/src/main/java/com/tencent/supersonic/common/service/impl/EmbeddingServiceImpl.java
index c486a59c4..9bd6563aa 100644
--- a/common/src/main/java/com/tencent/supersonic/common/service/impl/EmbeddingServiceImpl.java
+++ b/common/src/main/java/com/tencent/supersonic/common/service/impl/EmbeddingServiceImpl.java
@@ -49,7 +49,8 @@ public class EmbeddingServiceImpl implements EmbeddingService {
try {
EmbeddingModel embeddingModel = ModelProvider.getEmbeddingModel();
Embedding embedding = embeddingModel.embed(question).content();
- boolean existSegment = existSegment(embeddingStore, query, embedding);
+ boolean existSegment =
+ existSegment(collectionName, embeddingStore, query, embedding);
if (existSegment) {
continue;
}
@@ -62,14 +63,14 @@ public class EmbeddingServiceImpl implements EmbeddingService {
}
}
- private boolean existSegment(EmbeddingStore embeddingStore, TextSegment query,
- Embedding embedding) {
+ private boolean existSegment(String collectionName, EmbeddingStore embeddingStore,
+ TextSegment query, Embedding embedding) {
String queryId = TextSegmentConvert.getQueryId(query);
if (queryId == null) {
return false;
}
// Check cache first
- Boolean cachedResult = cache.getIfPresent(queryId);
+ Boolean cachedResult = cache.getIfPresent(collectionName + queryId);
if (cachedResult != null) {
return cachedResult;
}
@@ -82,7 +83,7 @@ public class EmbeddingServiceImpl implements EmbeddingService {
EmbeddingSearchResult result = embeddingStore.search(request);
List> relevant = result.matches();
boolean exists = CollectionUtils.isNotEmpty(relevant);
- cache.put(queryId, exists);
+ cache.put(collectionName + queryId, exists);
return exists;
}
diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml
index 81e96e3a1..724c28ec2 100644
--- a/docker/docker-compose.yml
+++ b/docker/docker-compose.yml
@@ -11,8 +11,8 @@ services:
POSTGRES_PASSWORD: supersonic_password
ports:
- "15432:5432"
-# volumes:
-# - postgres_data:/var/lib/postgresql/data
+ volumes:
+ - ./supersonic_pg/data:/var/lib/postgresql/data
networks:
- supersonic_network
dns:
@@ -65,7 +65,6 @@ services:
# propagation: rprivate
# create_host_path: true
#volumes:
-# postgres_data:
# supersonic_data:
networks:
diff --git a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/QueryDataSetReq.java b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/QueryDataSetReq.java
index f385c73fc..e9efbcf3e 100644
--- a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/QueryDataSetReq.java
+++ b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/QueryDataSetReq.java
@@ -30,6 +30,7 @@ public class QueryDataSetReq {
private List metricFilters = new ArrayList<>();
private DateConf dateInfo;
private Long limit = 2000L;
+ private Long offset = 0L;
private QueryType queryType = QueryType.DETAIL;
private boolean innerLayerNative = false;
}
diff --git a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/QueryStructReq.java b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/QueryStructReq.java
index 5a6c3816e..03b85f992 100644
--- a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/QueryStructReq.java
+++ b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/QueryStructReq.java
@@ -3,11 +3,7 @@ package com.tencent.supersonic.headless.api.pojo.request;
import com.google.common.collect.Lists;
import com.tencent.supersonic.common.jsqlparser.SqlAddHelper;
import com.tencent.supersonic.common.jsqlparser.SqlReplaceHelper;
-import com.tencent.supersonic.common.pojo.Aggregator;
-import com.tencent.supersonic.common.pojo.Constants;
-import com.tencent.supersonic.common.pojo.DateConf;
-import com.tencent.supersonic.common.pojo.Filter;
-import com.tencent.supersonic.common.pojo.Order;
+import com.tencent.supersonic.common.pojo.*;
import com.tencent.supersonic.common.pojo.enums.AggOperatorEnum;
import com.tencent.supersonic.common.pojo.enums.QueryType;
import com.tencent.supersonic.common.util.ContextUtils;
@@ -25,12 +21,7 @@ import net.sf.jsqlparser.expression.operators.relational.ExpressionList;
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
import net.sf.jsqlparser.schema.Column;
import net.sf.jsqlparser.schema.Table;
-import net.sf.jsqlparser.statement.select.GroupByElement;
-import net.sf.jsqlparser.statement.select.Limit;
-import net.sf.jsqlparser.statement.select.OrderByElement;
-import net.sf.jsqlparser.statement.select.ParenthesedSelect;
-import net.sf.jsqlparser.statement.select.PlainSelect;
-import net.sf.jsqlparser.statement.select.SelectItem;
+import net.sf.jsqlparser.statement.select.*;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;
@@ -52,6 +43,7 @@ public class QueryStructReq extends SemanticQueryReq {
private List metricFilters = new ArrayList<>();
private DateConf dateInfo;
private long limit = Constants.DEFAULT_DETAIL_LIMIT;
+ private long offset;
private QueryType queryType = QueryType.DETAIL;
private boolean convertToSql = true;
@@ -170,12 +162,15 @@ public class QueryStructReq extends SemanticQueryReq {
// 5. Set the limit clause
plainSelect.setLimit(buildLimit(queryStructReq));
- // 6. Set having clause
+ // 6. Set the offset clause
+ plainSelect.setOffset(buildOffset(queryStructReq));
+
+ // 7. Set the having clause
plainSelect.setHaving(buildHavingClause(queryStructReq));
select.setSelect(plainSelect);
- // 6. Set where clause
+ // 8. Set the where clause
return addWhereClauses(select.toString(), queryStructReq, isBizName);
}
@@ -262,6 +257,15 @@ public class QueryStructReq extends SemanticQueryReq {
return limit;
}
+ private Offset buildOffset(QueryStructReq queryStructReq) {
+ if (Objects.isNull(queryStructReq.getOffset())) {
+ return null;
+ }
+ Offset offset = new Offset();
+ offset.setOffset(new LongValue(queryStructReq.getOffset()));
+ return offset;
+ }
+
private String addWhereClauses(String sql, QueryStructReq queryStructReq, boolean isBizName)
throws JSQLParserException {
SqlFilterUtils sqlFilterUtils = ContextUtils.getBean(SqlFilterUtils.class);
diff --git a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/RuleSqlCorrector.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/RuleSqlCorrector.java
index e090265b5..d7c9f058d 100644
--- a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/RuleSqlCorrector.java
+++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/RuleSqlCorrector.java
@@ -1,12 +1,16 @@
package com.tencent.supersonic.headless.chat.corrector;
+import com.tencent.supersonic.common.util.ContextUtils;
import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo;
import com.tencent.supersonic.headless.chat.ChatQueryContext;
+import com.tencent.supersonic.headless.chat.parser.ParserConfig;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.List;
+import static com.tencent.supersonic.headless.chat.parser.ParserConfig.PARSER_RULE_CORRECTOR_ENABLE;
+
@Slf4j
public class RuleSqlCorrector extends BaseSemanticCorrector {
private List correctors;
@@ -20,6 +24,11 @@ public class RuleSqlCorrector extends BaseSemanticCorrector {
@Override
public void doCorrect(ChatQueryContext chatQueryContext, SemanticParseInfo semanticParseInfo) {
+ ParserConfig parserConfig = ContextUtils.getBean(ParserConfig.class);
+ if (!Boolean.parseBoolean(parserConfig.getParameterValue(PARSER_RULE_CORRECTOR_ENABLE))) {
+ return;
+ }
+
for (BaseSemanticCorrector corrector : correctors) {
corrector.correct(chatQueryContext, semanticParseInfo);
}
diff --git a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/MapResult.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/MapResult.java
index a2583eb88..969a74eca 100644
--- a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/MapResult.java
+++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/MapResult.java
@@ -22,4 +22,9 @@ public abstract class MapResult implements Serializable {
return this.getMapKey().equals(otherResult.getMapKey())
&& this.similarity < otherResult.similarity;
}
+
+ public Boolean lessOrEqualSimilar(MapResult otherResult) {
+ return this.getMapKey().equals(otherResult.getMapKey())
+ && this.similarity <= otherResult.similarity;
+ }
}
diff --git a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/MetaEmbeddingService.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/MetaEmbeddingService.java
index e4f48597b..f8ee287c3 100644
--- a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/MetaEmbeddingService.java
+++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/MetaEmbeddingService.java
@@ -75,6 +75,8 @@ public class MetaEmbeddingService {
return dataSetIds.stream().map(dataSetId -> {
Retrieval newRetrieval = new Retrieval();
BeanUtils.copyProperties(retrieval, newRetrieval);
+ HashMap newMetadata = new HashMap<>(retrieval.getMetadata());
+ newRetrieval.setMetadata(newMetadata);
newRetrieval.getMetadata().putIfAbsent("dataSetId",
dataSetId + Constants.UNDERLINE);
return newRetrieval;
diff --git a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/BaseMatchStrategy.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/BaseMatchStrategy.java
index 57856ccd4..6c02674f5 100644
--- a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/BaseMatchStrategy.java
+++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/BaseMatchStrategy.java
@@ -56,7 +56,7 @@ public abstract class BaseMatchStrategy implements MatchStr
for (T oneRoundResult : oneRoundResults) {
if (existResults.contains(oneRoundResult)) {
boolean isDeleted = existResults.removeIf(existResult -> {
- boolean delete = existResult.lessSimilar(oneRoundResult);
+ boolean delete = existResult.lessOrEqualSimilar(oneRoundResult);
if (delete) {
log.debug("deleted existResult:{}", existResult);
}
diff --git a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/ParserConfig.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/ParserConfig.java
index 527d04a51..ab8c7a0eb 100644
--- a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/ParserConfig.java
+++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/ParserConfig.java
@@ -17,6 +17,10 @@ public class ParserConfig extends ParameterConfig {
"ONE_PASS_SELF_CONSISTENCY: 通过投票方式一步生成sql", "list", "语义解析配置",
Lists.newArrayList("ONE_PASS_SELF_CONSISTENCY"));
+ public static final Parameter PARSER_RULE_CORRECTOR_ENABLE =
+ new Parameter("s2.parser.rule.corrector.enable", "false", "是否开启规则修正器",
+ "规则修正器灵活度有限,在大模型能力足够情况下,不必强制做规则修正", "bool", "语义解析配置");
+
public static final Parameter PARSER_LINKING_VALUE_ENABLE =
new Parameter("s2.parser.linking.value.enable", "true", "是否将Mapper探测识别到的维度值提供给大模型",
"为了数据安全考虑, 这里可进行开关选择", "bool", "语义解析配置");
@@ -55,7 +59,8 @@ public class ParserConfig extends ParameterConfig {
@Override
public List getSysParameters() {
- return Lists.newArrayList(PARSER_LINKING_VALUE_ENABLE, PARSER_FEW_SHOT_NUMBER,
- PARSER_SELF_CONSISTENCY_NUMBER, PARSER_SHOW_COUNT, PARSER_FIELDS_COUNT_THRESHOLD);
+ return Lists.newArrayList(PARSER_LINKING_VALUE_ENABLE, PARSER_RULE_CORRECTOR_ENABLE,
+ PARSER_FEW_SHOT_NUMBER, PARSER_SELF_CONSISTENCY_NUMBER, PARSER_SHOW_COUNT,
+ PARSER_FIELDS_COUNT_THRESHOLD);
}
}
diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/pojo/StructQuery.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/pojo/StructQuery.java
index f6e9489ef..74b9ce019 100644
--- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/pojo/StructQuery.java
+++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/pojo/StructQuery.java
@@ -20,6 +20,7 @@ public class StructQuery {
private List metricFilters = new ArrayList();
private DateConf dateInfo;
private Long limit = 2000L;
+ private Long offset = 0L;
private QueryType queryType;
private List params = new ArrayList<>();
}
diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/aspect/DimValueAspect.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/aspect/DimValueAspect.java
index 68aabbceb..75a91e969 100644
--- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/aspect/DimValueAspect.java
+++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/aspect/DimValueAspect.java
@@ -141,7 +141,7 @@ public class DimValueAspect {
List values = JsonUtil.toList(fieldValue, String.class);
List revisedValues = new ArrayList<>();
for (int i = 0; i < values.size(); i++) {
- Boolean flag = new Boolean(false);
+ Boolean flag = false;
for (DimValueMap dimValueMap : dimension.getDimValueMaps()) {
if (!CollectionUtils.isEmpty(dimValueMap.getAlias())
&& dimValueMap.getAlias().contains(values.get(i))) {
diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DimensionServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DimensionServiceImpl.java
index 3bf6a7692..0bd154ccb 100644
--- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DimensionServiceImpl.java
+++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DimensionServiceImpl.java
@@ -426,6 +426,9 @@ public class DimensionServiceImpl extends ServiceImpl valeAndMapInfo = dimValueMapList.stream()
.collect(Collectors.toMap(DimValueMap::getValue, v -> v, (v1, v2) -> v2));
String value = dimValueMaps.getValue();
diff --git a/launchers/standalone/src/main/resources/config.update/sql-update-mysql.sql b/launchers/standalone/src/main/resources/config.update/sql-update-mysql.sql
index 8c4b195bb..b7b6c1b9b 100644
--- a/launchers/standalone/src/main/resources/config.update/sql-update-mysql.sql
+++ b/launchers/standalone/src/main/resources/config.update/sql-update-mysql.sql
@@ -417,4 +417,7 @@ ALTER TABLE s2_model_rela alter column join_condition type text;
--20250310
ALTER TABLE s2_chat_model add column is_open tinyint DEFAULT NULL COMMENT '是否公开';
-ALTER TABLE s2_database add column is_open tinyint DEFAULT NULL COMMENT '是否公开';
\ No newline at end of file
+ALTER TABLE s2_database add column is_open tinyint DEFAULT NULL COMMENT '是否公开';
+
+--20250321
+ALTER TABLE s2_user add column last_loin datetime DEFAULT NULL;
\ No newline at end of file
diff --git a/launchers/standalone/src/main/resources/db/schema-h2.sql b/launchers/standalone/src/main/resources/db/schema-h2.sql
index d5fc98c5e..13928d300 100644
--- a/launchers/standalone/src/main/resources/db/schema-h2.sql
+++ b/launchers/standalone/src/main/resources/db/schema-h2.sql
@@ -129,6 +129,7 @@ create table IF NOT EXISTS s2_user
salt varchar(256) NULL,
email varchar(100) null,
is_admin INT null,
+ last_login TIMESTAMP NULL,
PRIMARY KEY (`id`)
);
COMMENT ON TABLE s2_user IS 'user information table';
diff --git a/launchers/standalone/src/main/resources/db/schema-mysql.sql b/launchers/standalone/src/main/resources/db/schema-mysql.sql
index 1e40d493f..62eae3ac6 100644
--- a/launchers/standalone/src/main/resources/db/schema-mysql.sql
+++ b/launchers/standalone/src/main/resources/db/schema-mysql.sql
@@ -1,85 +1,85 @@
CREATE TABLE IF NOT EXISTS `s2_agent` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `name` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
- `description` TEXT COLLATE utf8_unicode_ci DEFAULT NULL,
- `examples` TEXT COLLATE utf8_unicode_ci DEFAULT NULL,
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `description` TEXT COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `examples` TEXT COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`status` tinyint DEFAULT NULL,
- `model` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
- `tool_config` TEXT COLLATE utf8_unicode_ci DEFAULT NULL,
- `llm_config` TEXT COLLATE utf8_unicode_ci DEFAULT NULL,
- `chat_model_config` text COLLATE utf8_unicode_ci DEFAULT NULL,
- `visual_config` TEXT COLLATE utf8_unicode_ci DEFAULT NULL,
+ `model` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `tool_config` TEXT COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `llm_config` TEXT COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `chat_model_config` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `visual_config` TEXT COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`enable_search` tinyint DEFAULT 1,
`enable_feedback` tinyint DEFAULT 1,
- `created_by` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
+ `created_by` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`created_at` datetime DEFAULT NULL,
- `updated_by` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
+ `updated_by` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
- `admin` varchar(1000) DEFAULT NULL COMMENT '管理员',
- `admin_org` varchar(1000) DEFAULT NULL COMMENT '管理员组织',
- `is_open` tinyint DEFAULT NULL COMMENT '是否公开',
- `viewer` varchar(1000) DEFAULT NULL COMMENT '可用用户',
- `view_org` varchar(1000) DEFAULT NULL COMMENT '可用组织',
+ `admin` varchar(1000) DEFAULT NULL COMMENT '管理员',
+ `admin_org` varchar(1000) DEFAULT NULL COMMENT '管理员组织',
+ `is_open` tinyint DEFAULT NULL COMMENT '是否公开',
+ `viewer` varchar(1000) DEFAULT NULL COMMENT '可用用户',
+ `view_org` varchar(1000) DEFAULT NULL COMMENT '可用组织',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `s2_auth_groups` (
- `group_id` int(11) NOT NULL,
- `config` varchar(2048) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
- PRIMARY KEY (`group_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+ `group_id` int(11) NOT NULL,
+ `config` varchar(2048) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ PRIMARY KEY (`group_id`)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `s2_available_date_info` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `item_id` int(11) NOT NULL,
- `type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
- `date_format` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,
- `date_period` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
- `start_date` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
- `end_date` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
- `unavailable_date` text COLLATE utf8mb4_unicode_ci,
- `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
- `created_by` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
- `updated_at` timestamp NULL,
- `updated_by` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
- `status` tinyint DEFAULT 0,
- UNIQUE(`item_id`, `type`),
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `item_id` int(11) NOT NULL,
+ `type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
+ `date_format` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,
+ `date_period` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `start_date` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `end_date` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `unavailable_date` text COLLATE utf8mb4_unicode_ci,
+ `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ `created_by` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
+ `updated_at` timestamp NULL,
+ `updated_by` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
+ `status` tinyint DEFAULT 0,
+ UNIQUE(`item_id`, `type`),
+ PRIMARY KEY (`id`)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `s2_chat` (
- `chat_id` bigint(8) NOT NULL AUTO_INCREMENT,
- `agent_id` int(11) DEFAULT NULL,
- `chat_name` varchar(300) DEFAULT NULL,
- `create_time` datetime DEFAULT NULL,
- `last_time` datetime DEFAULT NULL,
- `creator` varchar(30) DEFAULT NULL,
- `last_question` varchar(200) DEFAULT NULL,
- `is_delete` tinyint DEFAULT '0' COMMENT 'is deleted',
- `is_top` tinyint DEFAULT '0' COMMENT 'is top',
- PRIMARY KEY (`chat_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+ `chat_id` bigint(8) NOT NULL AUTO_INCREMENT,
+ `agent_id` int(11) DEFAULT NULL,
+ `chat_name` varchar(300) DEFAULT NULL,
+ `create_time` datetime DEFAULT NULL,
+ `last_time` datetime DEFAULT NULL,
+ `creator` varchar(30) DEFAULT NULL,
+ `last_question` varchar(200) DEFAULT NULL,
+ `is_delete` tinyint DEFAULT '0' COMMENT 'is deleted',
+ `is_top` tinyint DEFAULT '0' COMMENT 'is top',
+ PRIMARY KEY (`chat_id`)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `s2_chat_config` (
- `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
- `model_id` bigint(20) DEFAULT NULL,
- `chat_detail_config` mediumtext COMMENT '明细模式配置信息',
- `chat_agg_config` mediumtext COMMENT '指标模式配置信息',
- `recommended_questions` mediumtext COMMENT '推荐问题配置',
- `created_at` datetime NOT NULL COMMENT '创建时间',
- `updated_at` datetime NOT NULL COMMENT '更新时间',
- `created_by` varchar(100) NOT NULL COMMENT '创建人',
- `updated_by` varchar(100) NOT NULL COMMENT '更新人',
- `status` tinyint NOT NULL COMMENT '主题域扩展信息状态, 0-删除,1-生效',
- `llm_examples` text COMMENT 'llm examples',
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='主题域扩展信息表';
+ `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+ `model_id` bigint(20) DEFAULT NULL,
+ `chat_detail_config` mediumtext COMMENT '明细模式配置信息',
+ `chat_agg_config` mediumtext COMMENT '指标模式配置信息',
+ `recommended_questions` mediumtext COMMENT '推荐问题配置',
+ `created_at` datetime NOT NULL COMMENT '创建时间',
+ `updated_at` datetime NOT NULL COMMENT '更新时间',
+ `created_by` varchar(100) NOT NULL COMMENT '创建人',
+ `updated_by` varchar(100) NOT NULL COMMENT '更新人',
+ `status` tinyint NOT NULL COMMENT '主题域扩展信息状态, 0-删除,1-生效',
+ `llm_examples` text COMMENT 'llm examples',
+ PRIMARY KEY (`id`)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='主题域扩展信息表';
CREATE TABLE IF NOT EXISTS `s2_chat_memory` (
- `id` INT NOT NULL AUTO_INCREMENT,
- `question` varchar(655) COMMENT '用户问题' ,
+ `id` INT NOT NULL AUTO_INCREMENT,
+ `question` varchar(655) COMMENT '用户问题' ,
`side_info` TEXT COMMENT '辅助信息' ,
`query_id` BIGINT COMMENT '问答ID' ,
`agent_id` INT COMMENT '助理ID' ,
@@ -95,29 +95,29 @@ CREATE TABLE IF NOT EXISTS `s2_chat_memory` (
`created_by` varchar(100) DEFAULT NULL ,
`updated_by` varchar(100) DEFAULT NULL ,
PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `s2_chat_context` (
- `chat_id` bigint(20) NOT NULL COMMENT 'context chat id',
- `modified_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'row modify time',
- `query_user` varchar(64) DEFAULT NULL COMMENT 'row modify user',
- `query_text` text COMMENT 'query text',
- `semantic_parse` text COMMENT 'parse data',
- `ext_data` text COMMENT 'extend data',
- PRIMARY KEY (`chat_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+ `chat_id` bigint(20) NOT NULL COMMENT 'context chat id',
+ `modified_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'row modify time',
+ `query_user` varchar(64) DEFAULT NULL COMMENT 'row modify user',
+ `query_text` text COMMENT 'query text',
+ `semantic_parse` text COMMENT 'parse data',
+ `ext_data` text COMMENT 'extend data',
+ PRIMARY KEY (`chat_id`)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `s2_chat_parse` (
- `question_id` bigint NOT NULL,
- `chat_id` int(11) NOT NULL,
- `parse_id` int(11) NOT NULL,
- `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
- `query_text` varchar(500) DEFAULT NULL,
- `user_name` varchar(150) DEFAULT NULL,
- `parse_info` mediumtext NOT NULL,
- `is_candidate` int(11) DEFAULT '1' COMMENT '1是candidate,0是selected',
- KEY `commonIndex` (`question_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+ `question_id` bigint NOT NULL,
+ `chat_id` int(11) NOT NULL,
+ `parse_id` int(11) NOT NULL,
+ `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ `query_text` varchar(500) DEFAULT NULL,
+ `user_name` varchar(150) DEFAULT NULL,
+ `parse_info` mediumtext NOT NULL,
+ `is_candidate` int(11) DEFAULT '1' COMMENT '1是candidate,0是selected',
+ KEY `commonIndex` (`question_id`)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `s2_chat_query`
@@ -135,83 +135,83 @@ CREATE TABLE IF NOT EXISTS `s2_chat_query`
`similar_queries` varchar(1024) DEFAULT '',
`parse_time_cost` varchar(1024) DEFAULT '',
PRIMARY KEY (`question_id`)
-) ENGINE = InnoDB DEFAULT CHARSET = utf8;
+ ) ENGINE = InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `s2_chat_statistics` (
- `question_id` bigint(20) NOT NULL,
- `chat_id` bigint(20) NOT NULL,
- `user_name` varchar(150) DEFAULT NULL,
- `query_text` varchar(200) DEFAULT NULL,
- `interface_name` varchar(100) DEFAULT NULL,
- `cost` int(6) DEFAULT '0',
- `type` int(11) DEFAULT NULL,
- `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
- KEY `commonIndex` (`question_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+ `question_id` bigint(20) NOT NULL,
+ `chat_id` bigint(20) NOT NULL,
+ `user_name` varchar(150) DEFAULT NULL,
+ `query_text` varchar(200) DEFAULT NULL,
+ `interface_name` varchar(100) DEFAULT NULL,
+ `cost` int(6) DEFAULT '0',
+ `type` int(11) DEFAULT NULL,
+ `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ KEY `commonIndex` (`question_id`)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `s2_chat_model` (
- `id` bigint(20) NOT NULL AUTO_INCREMENT,
- `name` varchar(255) NOT NULL COMMENT '名称',
- `description` varchar(500) DEFAULT NULL COMMENT '描述',
- `config` text NOT NULL COMMENT '配置信息',
- `created_at` datetime NOT NULL COMMENT '创建时间',
- `created_by` varchar(100) NOT NULL COMMENT '创建人',
- `updated_at` datetime NOT NULL COMMENT '更新时间',
- `updated_by` varchar(100) NOT NULL COMMENT '更新人',
- `admin` varchar(500) DEFAULT NULL,
- `viewer` varchar(500) DEFAULT NULL,
- `is_open` tinyint DEFAULT NULL COMMENT '是否公开',
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='对话大模型实例表';
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) NOT NULL COMMENT '名称',
+ `description` varchar(500) DEFAULT NULL COMMENT '描述',
+ `config` text NOT NULL COMMENT '配置信息',
+ `created_at` datetime NOT NULL COMMENT '创建时间',
+ `created_by` varchar(100) NOT NULL COMMENT '创建人',
+ `updated_at` datetime NOT NULL COMMENT '更新时间',
+ `updated_by` varchar(100) NOT NULL COMMENT '更新人',
+ `admin` varchar(500) DEFAULT NULL,
+ `viewer` varchar(500) DEFAULT NULL,
+ `is_open` tinyint DEFAULT NULL COMMENT '是否公开',
+ PRIMARY KEY (`id`)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='对话大模型实例表';
CREATE TABLE IF NOT EXISTS `s2_database` (
- `id` bigint(20) NOT NULL AUTO_INCREMENT,
- `name` varchar(255) NOT NULL COMMENT '名称',
- `description` varchar(500) DEFAULT NULL COMMENT '描述',
- `version` varchar(64) DEFAULT NULL,
- `type` varchar(20) NOT NULL COMMENT '类型 mysql,clickhouse,tdw',
- `config` text NOT NULL COMMENT '配置信息',
- `created_at` datetime NOT NULL COMMENT '创建时间',
- `created_by` varchar(100) NOT NULL COMMENT '创建人',
- `updated_at` datetime NOT NULL COMMENT '更新时间',
- `updated_by` varchar(100) NOT NULL COMMENT '更新人',
- `admin` varchar(500) DEFAULT NULL,
- `viewer` varchar(500) DEFAULT NULL,
- `is_open` tinyint DEFAULT NULL COMMENT '是否公开',
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='数据库实例表';
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) NOT NULL COMMENT '名称',
+ `description` varchar(500) DEFAULT NULL COMMENT '描述',
+ `version` varchar(64) DEFAULT NULL,
+ `type` varchar(20) NOT NULL COMMENT '类型 mysql,clickhouse,tdw',
+ `config` text NOT NULL COMMENT '配置信息',
+ `created_at` datetime NOT NULL COMMENT '创建时间',
+ `created_by` varchar(100) NOT NULL COMMENT '创建人',
+ `updated_at` datetime NOT NULL COMMENT '更新时间',
+ `updated_by` varchar(100) NOT NULL COMMENT '更新人',
+ `admin` varchar(500) DEFAULT NULL,
+ `viewer` varchar(500) DEFAULT NULL,
+ `is_open` tinyint DEFAULT NULL COMMENT '是否公开',
+ PRIMARY KEY (`id`)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='数据库实例表';
CREATE TABLE IF NOT EXISTS `s2_dictionary_conf` (
- `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
- `description` varchar(255) ,
- `type` varchar(255) NOT NULL ,
- `item_id` INT NOT NULL ,
- `config` mediumtext ,
- `status` varchar(255) NOT NULL ,
- `created_at` datetime NOT NULL COMMENT '创建时间' ,
- `created_by` varchar(100) NOT NULL ,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='字典配置信息表';
+ `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+ `description` varchar(255) ,
+ `type` varchar(255) NOT NULL ,
+ `item_id` INT NOT NULL ,
+ `config` mediumtext ,
+ `status` varchar(255) NOT NULL ,
+ `created_at` datetime NOT NULL COMMENT '创建时间' ,
+ `created_by` varchar(100) NOT NULL ,
+ PRIMARY KEY (`id`)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='字典配置信息表';
CREATE TABLE IF NOT EXISTS `s2_dictionary_task` (
- `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
- `name` varchar(255) NOT NULL ,
- `description` varchar(255) ,
- `type` varchar(255) NOT NULL ,
- `item_id` INT NOT NULL ,
- `config` mediumtext ,
- `status` varchar(255) NOT NULL ,
- `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `created_by` varchar(100) NOT NULL ,
- `elapsed_ms` int(10) DEFAULT NULL ,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='字典运行任务表';
+ `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) NOT NULL ,
+ `description` varchar(255) ,
+ `type` varchar(255) NOT NULL ,
+ `item_id` INT NOT NULL ,
+ `config` mediumtext ,
+ `status` varchar(255) NOT NULL ,
+ `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ `created_by` varchar(100) NOT NULL ,
+ `elapsed_ms` int(10) DEFAULT NULL ,
+ PRIMARY KEY (`id`)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='字典运行任务表';
CREATE TABLE IF NOT EXISTS `s2_dimension` (
- `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '维度ID',
+ `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '维度ID',
`model_id` bigint(20) DEFAULT NULL,
`name` varchar(255) NOT NULL COMMENT '维度名称',
`biz_name` varchar(255) NOT NULL COMMENT '字段名称',
@@ -227,32 +227,32 @@ CREATE TABLE IF NOT EXISTS `s2_dimension` (
`updated_at` datetime NOT NULL COMMENT '更新时间',
`updated_by` varchar(100) NOT NULL COMMENT '更新人',
`semantic_type` varchar(20) NOT NULL COMMENT '语义类型DATE, ID, CATEGORY',
- `alias` varchar(500) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
+ `alias` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`default_values` varchar(500) DEFAULT NULL,
`dim_value_maps` varchar(5000) DEFAULT NULL,
`is_tag` tinyint DEFAULT NULL,
`ext` varchar(1000) DEFAULT NULL,
PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='维度表';
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='维度表';
CREATE TABLE IF NOT EXISTS `s2_domain` (
- `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
- `name` varchar(255) DEFAULT NULL COMMENT '主题域名称',
- `biz_name` varchar(255) DEFAULT NULL COMMENT '内部名称',
- `parent_id` bigint(20) DEFAULT '0' COMMENT '父主题域ID',
- `status` tinyint NOT NULL COMMENT '主题域状态',
- `created_at` datetime DEFAULT NULL COMMENT '创建时间',
- `created_by` varchar(100) DEFAULT NULL COMMENT '创建人',
- `updated_at` datetime DEFAULT NULL COMMENT '更新时间',
- `updated_by` varchar(100) DEFAULT NULL COMMENT '更新人',
- `admin` varchar(3000) DEFAULT NULL COMMENT '主题域管理员',
- `admin_org` varchar(3000) DEFAULT NULL COMMENT '主题域管理员组织',
- `is_open` tinyint DEFAULT NULL COMMENT '主题域是否公开',
- `viewer` varchar(3000) DEFAULT NULL COMMENT '主题域可用用户',
- `view_org` varchar(3000) DEFAULT NULL COMMENT '主题域可用组织',
- `entity` varchar(500) DEFAULT NULL COMMENT '主题域实体信息',
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='主题域基础信息表';
+ `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
+ `name` varchar(255) DEFAULT NULL COMMENT '主题域名称',
+ `biz_name` varchar(255) DEFAULT NULL COMMENT '内部名称',
+ `parent_id` bigint(20) DEFAULT '0' COMMENT '父主题域ID',
+ `status` tinyint NOT NULL COMMENT '主题域状态',
+ `created_at` datetime DEFAULT NULL COMMENT '创建时间',
+ `created_by` varchar(100) DEFAULT NULL COMMENT '创建人',
+ `updated_at` datetime DEFAULT NULL COMMENT '更新时间',
+ `updated_by` varchar(100) DEFAULT NULL COMMENT '更新人',
+ `admin` varchar(3000) DEFAULT NULL COMMENT '主题域管理员',
+ `admin_org` varchar(3000) DEFAULT NULL COMMENT '主题域管理员组织',
+ `is_open` tinyint DEFAULT NULL COMMENT '主题域是否公开',
+ `viewer` varchar(3000) DEFAULT NULL COMMENT '主题域可用用户',
+ `view_org` varchar(3000) DEFAULT NULL COMMENT '主题域可用组织',
+ `entity` varchar(500) DEFAULT NULL COMMENT '主题域实体信息',
+ PRIMARY KEY (`id`)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='主题域基础信息表';
CREATE TABLE IF NOT EXISTS `s2_metric`
@@ -272,35 +272,35 @@ CREATE TABLE IF NOT EXISTS `s2_metric`
`updated_by` varchar(100) NOT NULL COMMENT '更新人',
`data_format_type` varchar(50) DEFAULT NULL COMMENT '数值类型',
`data_format` varchar(500) DEFAULT NULL COMMENT '数值类型参数',
- `alias` varchar(500) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
- `classifications` varchar(500) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
+ `alias` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `classifications` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`relate_dimensions` varchar(500) DEFAULT NULL COMMENT '指标相关维度',
`ext` text DEFAULT NULL,
`define_type` varchar(50) DEFAULT NULL, -- MEASURE, FIELD, METRIC
`is_publish` tinyint DEFAULT NULL COMMENT '是否发布',
PRIMARY KEY (`id`)
-) ENGINE = InnoDB
- DEFAULT CHARSET = utf8 COMMENT ='指标表';
+ ) ENGINE = InnoDB
+ DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT ='指标表';
CREATE TABLE IF NOT EXISTS `s2_model` (
- `id` bigint(20) NOT NULL AUTO_INCREMENT,
- `name` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
- `biz_name` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `biz_name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`domain_id` bigint(20) DEFAULT NULL,
- `alias` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL,
+ `alias` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`status` tinyint DEFAULT NULL,
`description` varchar(500) DEFAULT NULL,
- `viewer` varchar(500) COLLATE utf8_unicode_ci DEFAULT NULL,
- `view_org` varchar(500) COLLATE utf8_unicode_ci DEFAULT NULL,
- `admin` varchar(500) COLLATE utf8_unicode_ci DEFAULT NULL,
- `admin_org` varchar(500) COLLATE utf8_unicode_ci DEFAULT NULL,
+ `viewer` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `view_org` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `admin` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `admin_org` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`is_open` tinyint DEFAULT NULL,
- `created_by` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
+ `created_by` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`created_at` datetime DEFAULT NULL,
- `updated_by` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
+ `updated_by` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
- `entity` text COLLATE utf8_unicode_ci,
+ `entity` text COLLATE utf8mb4_unicode_ci,
`drill_down_dimensions` TEXT DEFAULT NULL,
`database_id` INT NOT NULL ,
`model_detail` text NOT NULL ,
@@ -310,61 +310,61 @@ CREATE TABLE IF NOT EXISTS `s2_model` (
`tag_object_id` int(11) DEFAULT '0',
`ext` varchar(1000) DEFAULT NULL,
PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `s2_plugin` (
- `id` bigint(20) NOT NULL AUTO_INCREMENT,
- `type` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'DASHBOARD,WIDGET,URL',
- `data_set` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
- `pattern` varchar(500) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
- `parse_mode` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
- `parse_mode_config` text COLLATE utf8mb4_unicode_ci,
- `name` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
- `created_at` datetime DEFAULT NULL,
- `created_by` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
- `updated_at` datetime DEFAULT NULL,
- `updated_by` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
- `config` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
- `comment` text COLLATE utf8mb4_unicode_ci,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'DASHBOARD,WIDGET,URL',
+ `data_set` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `pattern` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `parse_mode` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `parse_mode_config` text COLLATE utf8mb4_unicode_ci,
+ `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `created_at` datetime DEFAULT NULL,
+ `created_by` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `updated_at` datetime DEFAULT NULL,
+ `updated_by` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `config` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
+ `comment` text COLLATE utf8mb4_unicode_ci,
+ PRIMARY KEY (`id`)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `s2_query_stat_info` (
- `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
- `trace_id` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '查询标识',
- `model_id` bigint(20) DEFAULT NULL,
- `data_set_id` bigint(20) DEFAULT NULL,
- `query_user` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '执行sql的用户',
- `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `query_type` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '查询对应的场景',
- `query_type_back` int(10) DEFAULT '0' COMMENT '查询类型, 0-正常查询, 1-预刷类型',
- `query_sql_cmd` mediumtext COLLATE utf8mb4_unicode_ci COMMENT '对应查询的struct',
- `sql_cmd_md5` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'sql md5值',
- `query_struct_cmd` mediumtext COLLATE utf8mb4_unicode_ci COMMENT '对应查询的struct',
- `struct_cmd_md5` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'sql md5值',
- `query_sql` mediumtext COLLATE utf8mb4_unicode_ci COMMENT '对应查询的sql',
- `sql_md5` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'sql md5值',
- `query_engine` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '查询引擎',
- `elapsed_ms` bigint(10) DEFAULT NULL COMMENT '查询耗时',
- `query_state` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '查询最终状态',
- `native_query` int(10) DEFAULT NULL COMMENT '1-明细查询,0-聚合查询',
- `start_date` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'sql开始日期',
- `end_date` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'sql结束日期',
- `dimensions` mediumtext COLLATE utf8mb4_unicode_ci COMMENT 'sql 涉及的维度',
- `metrics` mediumtext COLLATE utf8mb4_unicode_ci COMMENT 'sql 涉及的指标',
- `select_cols` mediumtext COLLATE utf8mb4_unicode_ci COMMENT 'sql select部分涉及的标签',
- `agg_cols` mediumtext COLLATE utf8mb4_unicode_ci COMMENT 'sql agg部分涉及的标签',
- `filter_cols` mediumtext COLLATE utf8mb4_unicode_ci COMMENT 'sql where部分涉及的标签',
- `group_by_cols` mediumtext COLLATE utf8mb4_unicode_ci COMMENT 'sql grouy by部分涉及的标签',
- `order_by_cols` mediumtext COLLATE utf8mb4_unicode_ci COMMENT 'sql order by部分涉及的标签',
- `use_result_cache` tinyint(1) DEFAULT '-1' COMMENT '是否命中sql缓存',
- `use_sql_cache` tinyint(1) DEFAULT '-1' COMMENT '是否命中sql缓存',
- `sql_cache_key` mediumtext COLLATE utf8mb4_unicode_ci COMMENT '缓存的key',
- `result_cache_key` mediumtext COLLATE utf8mb4_unicode_ci COMMENT '缓存的key',
- `query_opt_mode` varchar(20) null comment '优化模式',
- PRIMARY KEY (`id`),
- KEY `domain_index` (`model_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='查询统计信息表';
+ `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+ `trace_id` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '查询标识',
+ `model_id` bigint(20) DEFAULT NULL,
+ `data_set_id` bigint(20) DEFAULT NULL,
+ `query_user` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '执行sql的用户',
+ `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ `query_type` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '查询对应的场景',
+ `query_type_back` int(10) DEFAULT '0' COMMENT '查询类型, 0-正常查询, 1-预刷类型',
+ `query_sql_cmd` mediumtext COLLATE utf8mb4_unicode_ci COMMENT '对应查询的struct',
+ `sql_cmd_md5` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'sql md5值',
+ `query_struct_cmd` mediumtext COLLATE utf8mb4_unicode_ci COMMENT '对应查询的struct',
+ `struct_cmd_md5` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'sql md5值',
+ `query_sql` mediumtext COLLATE utf8mb4_unicode_ci COMMENT '对应查询的sql',
+ `sql_md5` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'sql md5值',
+ `query_engine` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '查询引擎',
+ `elapsed_ms` bigint(10) DEFAULT NULL COMMENT '查询耗时',
+ `query_state` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '查询最终状态',
+ `native_query` int(10) DEFAULT NULL COMMENT '1-明细查询,0-聚合查询',
+ `start_date` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'sql开始日期',
+ `end_date` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'sql结束日期',
+ `dimensions` mediumtext COLLATE utf8mb4_unicode_ci COMMENT 'sql 涉及的维度',
+ `metrics` mediumtext COLLATE utf8mb4_unicode_ci COMMENT 'sql 涉及的指标',
+ `select_cols` mediumtext COLLATE utf8mb4_unicode_ci COMMENT 'sql select部分涉及的标签',
+ `agg_cols` mediumtext COLLATE utf8mb4_unicode_ci COMMENT 'sql agg部分涉及的标签',
+ `filter_cols` mediumtext COLLATE utf8mb4_unicode_ci COMMENT 'sql where部分涉及的标签',
+ `group_by_cols` mediumtext COLLATE utf8mb4_unicode_ci COMMENT 'sql grouy by部分涉及的标签',
+ `order_by_cols` mediumtext COLLATE utf8mb4_unicode_ci COMMENT 'sql order by部分涉及的标签',
+ `use_result_cache` tinyint(1) DEFAULT '-1' COMMENT '是否命中sql缓存',
+ `use_sql_cache` tinyint(1) DEFAULT '-1' COMMENT '是否命中sql缓存',
+ `sql_cache_key` mediumtext COLLATE utf8mb4_unicode_ci COMMENT '缓存的key',
+ `result_cache_key` mediumtext COLLATE utf8mb4_unicode_ci COMMENT '缓存的key',
+ `query_opt_mode` varchar(20) null comment '优化模式',
+ PRIMARY KEY (`id`),
+ KEY `domain_index` (`model_id`)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='查询统计信息表';
CREATE TABLE IF NOT EXISTS `s2_canvas`
(
@@ -377,7 +377,7 @@ CREATE TABLE IF NOT EXISTS `s2_canvas`
`updated_at` datetime DEFAULT NULL,
`updated_by` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
-) ENGINE = InnoDB DEFAULT CHARSET = utf8;
+ ) ENGINE = InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS s2_user
(
@@ -388,16 +388,17 @@ CREATE TABLE IF NOT EXISTS s2_user
salt varchar(256) DEFAULT NULL COMMENT 'md5密码盐',
email varchar(100) null,
is_admin tinyint null,
+ last_login datetime DEFAULT NULL,
UNIQUE (`name`),
PRIMARY KEY (`id`)
-);
+ ) ENGINE = InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS s2_system_config
(
id int primary key AUTO_INCREMENT COMMENT '主键id',
admin varchar(500) COMMENT '系统管理员',
parameters text null COMMENT '配置项'
-)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+ )ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS s2_model_rela
(
@@ -407,27 +408,27 @@ CREATE TABLE IF NOT EXISTS s2_model_rela
to_model_id bigint,
join_type VARCHAR(255),
join_condition text
-)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+ )ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `s2_collect` (
- `id` bigint NOT NULL primary key AUTO_INCREMENT,
- `type` varchar(20) NOT NULL,
+ `id` bigint NOT NULL primary key AUTO_INCREMENT,
+ `type` varchar(20) NOT NULL,
`username` varchar(20) NOT NULL,
`collect_id` bigint NOT NULL,
`create_time` datetime,
`update_time` datetime
-)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+ )ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `s2_metric_query_default_config` (
- `id` bigint NOT NULL PRIMARY KEY AUTO_INCREMENT,
- `metric_id` bigint,
- `user_name` varchar(255) NOT NULL,
+ `id` bigint NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ `metric_id` bigint,
+ `user_name` varchar(255) NOT NULL,
`default_config` varchar(1000) NOT NULL,
`created_at` datetime null,
`updated_at` datetime null,
`created_by` varchar(100) null,
`updated_by` varchar(100) null
-)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+ )ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `s2_app`
(
@@ -444,7 +445,7 @@ CREATE TABLE IF NOT EXISTS `s2_app`
`updated_at` datetime null,
`created_by` varchar(255) null,
`updated_by` varchar(255) null
-)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+ )ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS s2_data_set
(
@@ -463,19 +464,19 @@ CREATE TABLE IF NOT EXISTS s2_data_set
query_config VARCHAR(3000),
`admin` varchar(3000) DEFAULT NULL,
`admin_org` varchar(3000) DEFAULT NULL
-)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+ )ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS s2_tag(
- `id` INT NOT NULL AUTO_INCREMENT,
- `item_id` INT NOT NULL ,
- `type` varchar(255) NOT NULL ,
- `created_at` datetime NOT NULL ,
- `created_by` varchar(100) NOT NULL ,
- `updated_at` datetime DEFAULT NULL ,
- `updated_by` varchar(100) DEFAULT NULL ,
- `ext` text DEFAULT NULL ,
- PRIMARY KEY (`id`)
-)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+ `id` INT NOT NULL AUTO_INCREMENT,
+ `item_id` INT NOT NULL ,
+ `type` varchar(255) NOT NULL ,
+ `created_at` datetime NOT NULL ,
+ `created_by` varchar(100) NOT NULL ,
+ `updated_at` datetime DEFAULT NULL ,
+ `updated_by` varchar(100) DEFAULT NULL ,
+ `ext` text DEFAULT NULL ,
+ PRIMARY KEY (`id`)
+ )ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `s2_tag_object`
(
@@ -492,11 +493,11 @@ CREATE TABLE IF NOT EXISTS `s2_tag_object`
`updated_by` varchar(100) NULL COMMENT '更新人',
`ext` text DEFAULT NULL,
PRIMARY KEY (`id`)
-) ENGINE = InnoDB
-DEFAULT CHARSET = utf8 COMMENT ='标签对象表';
+ ) ENGINE = InnoDB
+ DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT ='标签对象表';
CREATE TABLE IF NOT EXISTS `s2_query_rule` (
- `id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
`data_set_id` bigint(20) ,
`priority` int(10) NOT NULL DEFAULT '1' ,
`rule_type` varchar(255) NOT NULL ,
@@ -512,10 +513,10 @@ CREATE TABLE IF NOT EXISTS `s2_query_rule` (
`updated_by` varchar(100) DEFAULT NULL ,
`ext` text DEFAULT NULL ,
PRIMARY KEY (`id`)
- ) ENGINE = InnoDB DEFAULT CHARSET = utf8 COMMENT ='查询规则表';
+ ) ENGINE = InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT ='查询规则表';
CREATE TABLE IF NOT EXISTS `s2_term` (
- `id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
`domain_id` bigint(20),
`name` varchar(255) NOT NULL ,
`description` varchar(500) DEFAULT NULL ,
@@ -527,20 +528,20 @@ CREATE TABLE IF NOT EXISTS `s2_term` (
`updated_at` datetime DEFAULT NULL ,
`updated_by` varchar(100) DEFAULT NULL ,
PRIMARY KEY (`id`)
-) ENGINE = InnoDB DEFAULT CHARSET = utf8 COMMENT ='术语表';
+ ) ENGINE = InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT ='术语表';
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,
- `expire_time` BIGINT(20) NOT NULL,
- `token` text NOT NULL,
- `salt` VARCHAR(255) default NULL,
- `create_time` DATETIME NOT NULL,
- `create_by` VARCHAR(255) NOT NULL,
- `update_time` DATETIME default NULL,
- `update_by` VARCHAR(255) NOT NULL,
- `expire_date_time` DATETIME NOT NULL,
- unique key name_username (`name`, `user_name`),
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin comment='用户令牌信息表';
+ `id` bigint NOT NULL AUTO_INCREMENT,
+ `name` VARCHAR(255) NOT NULL,
+ `user_name` VARCHAR(255) NOT NULL,
+ `expire_time` BIGINT(20) NOT NULL,
+ `token` text NOT NULL,
+ `salt` VARCHAR(255) default NULL,
+ `create_time` DATETIME NOT NULL,
+ `create_by` VARCHAR(255) NOT NULL,
+ `update_time` DATETIME default NULL,
+ `update_by` VARCHAR(255) NOT NULL,
+ `expire_date_time` DATETIME NOT NULL,
+ unique key name_username (`name`, `user_name`),
+ PRIMARY KEY (`id`)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci comment='用户令牌信息表';
diff --git a/launchers/standalone/src/main/resources/db/schema-postgres.sql b/launchers/standalone/src/main/resources/db/schema-postgres.sql
index aac79316e..c5f7e96da 100644
--- a/launchers/standalone/src/main/resources/db/schema-postgres.sql
+++ b/launchers/standalone/src/main/resources/db/schema-postgres.sql
@@ -498,5 +498,6 @@ CREATE TABLE IF NOT EXISTS s2_user (
salt varchar(256) DEFAULT NULL,
email varchar(100) NULL,
is_admin smallint NULL,
+ last_login timestamp NULL,
UNIQUE(name)
);
\ No newline at end of file