补充h2遗漏的统计SQL

This commit is contained in:
inrgihc
2025-04-10 22:00:27 +08:00
parent 2ecc1b4db6
commit 214504b801
7 changed files with 64 additions and 27 deletions

View File

@@ -103,6 +103,14 @@ sh ./docker-maven-build.sh
(2) docker容器方式部署
- H2做配置库部署
这里将宿主机的/tmp目录挂载到容器上
```
docker run -d --name dbswitch -e DBTYPE=h2 -v /tmp:/tmp -p 9088:9088 \
registry.cn-hangzhou.aliyuncs.com/inrgihc/dbswitch:latest
```
- MYSQL做配置库部署
假设已经部署好的MySQL(5.7+)数据库地址为192.168.31.57端口为3306账号为test密码为123456
@@ -293,9 +301,9 @@ dbswitch.target.writer-engine-insert=true
### 2、基于conf/application.yml配置的dbswitch-admin模块启动的WEB使用方式
#### (1)、准备一个MySQL(建议版本为: 5.7+ )或PostgreSQL(建议版本11.7+ )或者OpenGauss(建议版本5.0+ )的数据库
#### (1)、如果使用默认配置的H2数据库可忽略本步骤否则准备一个MySQL(建议版本为: 5.7+ )或PostgreSQL(建议版本11.7+ )或者OpenGauss(建议版本5.0+ )的数据库
> dbswitch-admin模块后端同时支持MySQL、PostgreSQL、OpenGauss作为配置数据库。
> dbswitch-admin模块后端同时支持H2、MySQL、PostgreSQL、OpenGauss作为配置数据库。
#### (2)、配置conf/application.yml
@@ -304,9 +312,9 @@ application.yml配置内容示例如下
```
spring:
profiles:
# 配置包含使用的配置库类型(可选值:mysql或postgres),对应在application-mysql.yml或application-postgres.yml中配置数据库信息
# 配置包含使用的配置库类型(可选值:h2或mysql或postgres),对应在application-h2.yml或application-mysql.yml或application-postgres.yml中配置数据库信息
# 如果使用OpenGauss作为配置数据库请配置为postgres类型,dbswitch会使用postgres的jdbc驱动连接OpenGauss
include: mysql
include: h2
application:
name: dbswitch-admin
tomcat:

View File

@@ -32,4 +32,5 @@ cd $PROJECT_ROOT_DIR && sh docker-maven-clean.sh && cd -
# push docker image
docker tag inrgihc/dbswitch:${DBSWITCH_VERSION} registry.cn-hangzhou.aliyuncs.com/inrgihc/dbswitch:${DBSWITCH_VERSION}
docker push registry.cn-hangzhou.aliyuncs.com/inrgihc/dbswitch:${DBSWITCH_VERSION}
docker tag inrgihc/dbswitch:${DBSWITCH_VERSION} registry.cn-hangzhou.aliyuncs.com/inrgihc/dbswitch:latest
docker push registry.cn-hangzhou.aliyuncs.com/inrgihc/dbswitch:latest

View File

@@ -0,0 +1,13 @@
spring:
datasource:
driver-class-name: org.h2.Driver
url: jdbc:h2:/tmp/dbswitch_db;MODE=MySQL;CASE_INSENSITIVE_IDENTIFIERS=TRUE;DATABASE_TO_UPPER=FALSE;DATABASE_TO_LOWER=FALSE
username: root
password: 123456
validation-query: SELECT 1
test-on-borrow: true
flyway:
locations: classpath:db/h2
baseline-on-migrate: true
table: DBSWITCH_SCHEMA_HISTORY
enabled: true

View File

@@ -1,6 +1,6 @@
spring:
profiles:
include: ${DBTYPE:mysql}
include: ${DBTYPE:h2}
application:
name: dbswitch-admin
tomcat:

View File

@@ -31,6 +31,7 @@ public class DbswitchConfig {
Properties props = new Properties();
props.setProperty("PostgreSQL", "postgresql");
props.setProperty("MySQL", "mysql");
props.setProperty("H2", "h2");
databaseIdProvider.setProperties(props);
return databaseIdProvider;
}

View File

@@ -22,28 +22,39 @@ public interface AssignmentJobMapper extends BaseMapper<AssignmentJobEntity> {
@Select("<script>"
+ "<if test='_databaseId == \"mysql\" '>"
+ " SELECT \n"
+ " \t DATE_FORMAT(create_time,'%Y-%m-%d') as of_date , \n"
+ " \t count(*) as count_of_job,\n"
+ " \t count(DISTINCT assignment_id) as count_of_task \n"
+ " FROM \n"
+ " ( \n"
+ " \t SELECT * FROM DBSWITCH_ASSIGNMENT_JOB\n"
+ " \t WHERE DATE_SUB( CURDATE(), INTERVAL ${days} DAY ) &lt;= date(create_time)\n"
+ " ) t \n"
+ " SELECT "
+ " DATE_FORMAT(create_time,'%Y-%m-%d') as of_date , "
+ " count(*) as count_of_job, "
+ " count(DISTINCT assignment_id) as count_of_task "
+ " FROM "
+ " ( "
+ " SELECT * FROM DBSWITCH_ASSIGNMENT_JOB "
+ " WHERE DATE_SUB( CURDATE(), INTERVAL ${days} DAY ) <![CDATA[ <= ]]> date(create_time) "
+ " ) t "
+ " GROUP BY of_date "
+ "</if>"
+ "<if test='_databaseId == \"postgresql\" '>"
+ " SELECT \n"
+ " \t to_char(create_time, 'YYYY-MM-DD') as of_date , \n"
+ " \t count(*) as count_of_job,\n"
+ " \t count(DISTINCT assignment_id) as count_of_task \n"
+ " FROM \n"
+ " ( \n"
+ " \t SELECT * FROM DBSWITCH_ASSIGNMENT_JOB\n"
+ " \t WHERE CURRENT_DATE - INTERVAL'${days} day' &lt;= create_time::date\n"
+ " ) t \n"
+ " GROUP BY of_date; "
+ " SELECT "
+ " to_char(create_time, 'YYYY-MM-DD') as of_date , "
+ " count(*) as count_of_job, "
+ " count(DISTINCT assignment_id) as count_of_task "
+ " FROM "
+ " ( "
+ " SELECT * FROM DBSWITCH_ASSIGNMENT_JOB "
+ " WHERE CURRENT_DATE - INTERVAL'${days} day' <![CDATA[ <= ]]> create_time::date "
+ " ) t "
+ " GROUP BY of_date "
+ "</if>"
+ "<if test='_databaseId == \"h2\" '>"
+ " SELECT "
+ " CAST(create_time as DATE) AS of_date, "
+ " COUNT(*) AS count_of_job, "
+ " COUNT(DISTINCT assignment_id) AS count_of_task "
+ " FROM ( "
+ " SELECT * FROM DBSWITCH_ASSIGNMENT_JOB "
+ " WHERE CAST(create_time as DATE) <![CDATA[ >= ]]> ( CURDATE()- ${days} ) "
+ ") t "
+ " GROUP BY of_date "
+ "</if>"
+ "</script>")
@Results({

View File

@@ -18,10 +18,13 @@ public interface JobLogbackMapper extends BaseMapper<JobLogbackEntity> {
@Delete("<script>"
+ "<if test='_databaseId == \"mysql\" '>"
+ "DELETE FROM DBSWITCH_JOB_LOGBACK WHERE date(create_time) &lt; DATE_SUB( CURDATE(), INTERVAL ${days} DAY )"
+ "DELETE FROM DBSWITCH_JOB_LOGBACK WHERE date(create_time) <![CDATA[ <= ]]> DATE_SUB( CURDATE(), INTERVAL ${days} DAY )"
+ "</if>"
+ "<if test='_databaseId == \"postgresql\" '>"
+ "DELETE FROM DBSWITCH_JOB_LOGBACK WHERE create_time::date &lt; CURRENT_DATE - INTERVAL'${days} day'"
+ "DELETE FROM DBSWITCH_JOB_LOGBACK WHERE create_time::date <![CDATA[ <= ]]> CURRENT_DATE - INTERVAL'${days} day'"
+ "</if>"
+ "<if test='_databaseId == \"h2\" '>"
+ "DELETE FROM DBSWITCH_JOB_LOGBACK WHERE CAST(create_time as DATE) <![CDATA[ <= ]]> (CURDATE() - ${days})"
+ "</if>"
+ "</script>")
void deleteByDays(@Param("days") Integer days);