Commit 674e7520cc7a004cf28c8ffcefdc68db7fc3ff0a
1 parent
2c67bd3a
【功能优化】信创数据库:大金数据库支持 Quartz 的兼容
Showing
5 changed files
with
176 additions
and
10 deletions
sql/kingbase/quartz.sql
0 → 100644
| 1 | +set client_min_messages = WARNING; | ||
| 2 | +DROP TABLE IF EXISTS qrtz_fired_triggers; | ||
| 3 | +DROP TABLE IF EXISTS qrtz_paused_trigger_grps; | ||
| 4 | +DROP TABLE IF EXISTS qrtz_scheduler_state; | ||
| 5 | +DROP TABLE IF EXISTS qrtz_locks; | ||
| 6 | +DROP TABLE IF EXISTS qrtz_simprop_triggers; | ||
| 7 | +DROP TABLE IF EXISTS qrtz_simple_triggers; | ||
| 8 | +DROP TABLE IF EXISTS qrtz_cron_triggers; | ||
| 9 | +DROP TABLE IF EXISTS qrtz_blob_triggers; | ||
| 10 | +DROP TABLE IF EXISTS qrtz_triggers; | ||
| 11 | +DROP TABLE IF EXISTS qrtz_job_details; | ||
| 12 | +DROP TABLE IF EXISTS qrtz_calendars; | ||
| 13 | +set client_min_messages = NOTICE; | ||
| 14 | + | ||
| 15 | +CREATE TABLE qrtz_job_details | ||
| 16 | + ( | ||
| 17 | + sched_name TEXT NOT NULL, | ||
| 18 | + job_name TEXT NOT NULL, | ||
| 19 | + job_group TEXT NOT NULL, | ||
| 20 | + description TEXT NULL, | ||
| 21 | + job_class_name TEXT NOT NULL, | ||
| 22 | + is_durable BOOL NOT NULL, | ||
| 23 | + is_nonconcurrent BOOL NOT NULL, | ||
| 24 | + is_update_data BOOL NOT NULL, | ||
| 25 | + requests_recovery BOOL NOT NULL, | ||
| 26 | + job_data BYTEA NULL, | ||
| 27 | + PRIMARY KEY (sched_name,job_name,job_group) | ||
| 28 | +); | ||
| 29 | + | ||
| 30 | +CREATE TABLE qrtz_triggers | ||
| 31 | + ( | ||
| 32 | + sched_name TEXT NOT NULL, | ||
| 33 | + trigger_name TEXT NOT NULL, | ||
| 34 | + trigger_group TEXT NOT NULL, | ||
| 35 | + job_name TEXT NOT NULL, | ||
| 36 | + job_group TEXT NOT NULL, | ||
| 37 | + description TEXT NULL, | ||
| 38 | + next_fire_time BIGINT NULL, | ||
| 39 | + prev_fire_time BIGINT NULL, | ||
| 40 | + priority INTEGER NULL, | ||
| 41 | + trigger_state TEXT NOT NULL, | ||
| 42 | + trigger_type TEXT NOT NULL, | ||
| 43 | + start_time BIGINT NOT NULL, | ||
| 44 | + end_time BIGINT NULL, | ||
| 45 | + calendar_name TEXT NULL, | ||
| 46 | + misfire_instr SMALLINT NULL, | ||
| 47 | + job_data BYTEA NULL, | ||
| 48 | + PRIMARY KEY (sched_name,trigger_name,trigger_group), | ||
| 49 | + FOREIGN KEY (sched_name,job_name,job_group) | ||
| 50 | + REFERENCES qrtz_job_details(sched_name,job_name,job_group) | ||
| 51 | +); | ||
| 52 | + | ||
| 53 | +CREATE TABLE qrtz_simple_triggers | ||
| 54 | + ( | ||
| 55 | + sched_name TEXT NOT NULL, | ||
| 56 | + trigger_name TEXT NOT NULL, | ||
| 57 | + trigger_group TEXT NOT NULL, | ||
| 58 | + repeat_count BIGINT NOT NULL, | ||
| 59 | + repeat_interval BIGINT NOT NULL, | ||
| 60 | + times_triggered BIGINT NOT NULL, | ||
| 61 | + PRIMARY KEY (sched_name,trigger_name,trigger_group), | ||
| 62 | + FOREIGN KEY (sched_name,trigger_name,trigger_group) | ||
| 63 | + REFERENCES qrtz_triggers(sched_name,trigger_name,trigger_group) ON DELETE CASCADE | ||
| 64 | +); | ||
| 65 | + | ||
| 66 | +CREATE TABLE QRTZ_SIMPROP_TRIGGERS | ||
| 67 | + ( | ||
| 68 | + sched_name TEXT NOT NULL, | ||
| 69 | + trigger_name TEXT NOT NULL , | ||
| 70 | + trigger_group TEXT NOT NULL , | ||
| 71 | + str_prop_1 TEXT NULL, | ||
| 72 | + str_prop_2 TEXT NULL, | ||
| 73 | + str_prop_3 TEXT NULL, | ||
| 74 | + int_prop_1 INTEGER NULL, | ||
| 75 | + int_prop_2 INTEGER NULL, | ||
| 76 | + long_prop_1 BIGINT NULL, | ||
| 77 | + long_prop_2 BIGINT NULL, | ||
| 78 | + dec_prop_1 NUMERIC NULL, | ||
| 79 | + dec_prop_2 NUMERIC NULL, | ||
| 80 | + bool_prop_1 BOOL NULL, | ||
| 81 | + bool_prop_2 BOOL NULL, | ||
| 82 | + time_zone_id TEXT NULL, | ||
| 83 | + PRIMARY KEY (sched_name,trigger_name,trigger_group), | ||
| 84 | + FOREIGN KEY (sched_name,trigger_name,trigger_group) | ||
| 85 | + REFERENCES qrtz_triggers(sched_name,trigger_name,trigger_group) ON DELETE CASCADE | ||
| 86 | +); | ||
| 87 | + | ||
| 88 | +CREATE TABLE qrtz_cron_triggers | ||
| 89 | + ( | ||
| 90 | + sched_name TEXT NOT NULL, | ||
| 91 | + trigger_name TEXT NOT NULL, | ||
| 92 | + trigger_group TEXT NOT NULL, | ||
| 93 | + cron_expression TEXT NOT NULL, | ||
| 94 | + time_zone_id TEXT, | ||
| 95 | + PRIMARY KEY (sched_name,trigger_name,trigger_group), | ||
| 96 | + FOREIGN KEY (sched_name,trigger_name,trigger_group) | ||
| 97 | + REFERENCES qrtz_triggers(sched_name,trigger_name,trigger_group) ON DELETE CASCADE | ||
| 98 | +); | ||
| 99 | + | ||
| 100 | +CREATE TABLE qrtz_blob_triggers | ||
| 101 | + ( | ||
| 102 | + sched_name TEXT NOT NULL, | ||
| 103 | + trigger_name TEXT NOT NULL, | ||
| 104 | + trigger_group TEXT NOT NULL, | ||
| 105 | + blob_data BYTEA NULL, | ||
| 106 | + PRIMARY KEY (sched_name,trigger_name,trigger_group), | ||
| 107 | + FOREIGN KEY (sched_name,trigger_name,trigger_group) | ||
| 108 | + REFERENCES qrtz_triggers(sched_name,trigger_name,trigger_group) ON DELETE CASCADE | ||
| 109 | +); | ||
| 110 | + | ||
| 111 | +CREATE TABLE qrtz_calendars | ||
| 112 | + ( | ||
| 113 | + sched_name TEXT NOT NULL, | ||
| 114 | + calendar_name TEXT NOT NULL, | ||
| 115 | + calendar BYTEA NOT NULL, | ||
| 116 | + PRIMARY KEY (sched_name,calendar_name) | ||
| 117 | +); | ||
| 118 | + | ||
| 119 | +CREATE TABLE qrtz_paused_trigger_grps | ||
| 120 | + ( | ||
| 121 | + sched_name TEXT NOT NULL, | ||
| 122 | + trigger_group TEXT NOT NULL, | ||
| 123 | + PRIMARY KEY (sched_name,trigger_group) | ||
| 124 | +); | ||
| 125 | + | ||
| 126 | +CREATE TABLE qrtz_fired_triggers | ||
| 127 | + ( | ||
| 128 | + sched_name TEXT NOT NULL, | ||
| 129 | + entry_id TEXT NOT NULL, | ||
| 130 | + trigger_name TEXT NOT NULL, | ||
| 131 | + trigger_group TEXT NOT NULL, | ||
| 132 | + instance_name TEXT NOT NULL, | ||
| 133 | + fired_time BIGINT NOT NULL, | ||
| 134 | + sched_time BIGINT NOT NULL, | ||
| 135 | + priority INTEGER NOT NULL, | ||
| 136 | + state TEXT NOT NULL, | ||
| 137 | + job_name TEXT NULL, | ||
| 138 | + job_group TEXT NULL, | ||
| 139 | + is_nonconcurrent BOOL NOT NULL, | ||
| 140 | + requests_recovery BOOL NULL, | ||
| 141 | + PRIMARY KEY (sched_name,entry_id) | ||
| 142 | +); | ||
| 143 | + | ||
| 144 | +CREATE TABLE qrtz_scheduler_state | ||
| 145 | + ( | ||
| 146 | + sched_name TEXT NOT NULL, | ||
| 147 | + instance_name TEXT NOT NULL, | ||
| 148 | + last_checkin_time BIGINT NOT NULL, | ||
| 149 | + checkin_interval BIGINT NOT NULL, | ||
| 150 | + PRIMARY KEY (sched_name,instance_name) | ||
| 151 | +); | ||
| 152 | + | ||
| 153 | +CREATE TABLE qrtz_locks | ||
| 154 | + ( | ||
| 155 | + sched_name TEXT NOT NULL, | ||
| 156 | + lock_name TEXT NOT NULL, | ||
| 157 | + PRIMARY KEY (sched_name,lock_name) | ||
| 158 | +); | ||
| 159 | + | ||
| 160 | +create index idx_qrtz_j_req_recovery on qrtz_job_details(requests_recovery); | ||
| 161 | +create index idx_qrtz_t_next_fire_time on qrtz_triggers(next_fire_time); | ||
| 162 | +create index idx_qrtz_t_state on qrtz_triggers(trigger_state); | ||
| 163 | +create index idx_qrtz_t_nft_st on qrtz_triggers(next_fire_time,trigger_state); | ||
| 164 | +create index idx_qrtz_ft_trig_name on qrtz_fired_triggers(trigger_name); | ||
| 165 | +create index idx_qrtz_ft_trig_group on qrtz_fired_triggers(trigger_group); | ||
| 166 | +create index idx_qrtz_ft_trig_nm_gp on qrtz_fired_triggers(sched_name,trigger_name,trigger_group); | ||
| 167 | +create index idx_qrtz_ft_trig_inst_name on qrtz_fired_triggers(instance_name); | ||
| 168 | +create index idx_qrtz_ft_job_name on qrtz_fired_triggers(job_name); | ||
| 169 | +create index idx_qrtz_ft_job_group on qrtz_fired_triggers(job_group); | ||
| 170 | +create index idx_qrtz_ft_job_req_recovery on qrtz_fired_triggers(requests_recovery); |
sql/tools/README.md
| @@ -61,14 +61,13 @@ exit | @@ -61,14 +61,13 @@ exit | ||
| 61 | 61 | ||
| 62 | ① 下载人大金仓 Docker 镜像: | 62 | ① 下载人大金仓 Docker 镜像: |
| 63 | 63 | ||
| 64 | -> x86_64 版本: https://kingbase.oss-cn-beijing.aliyuncs.com/KESV8R3/V009R001C001B0025-安装包-docker/x86_64/kdb_x86_64_V009R001C001B0025.tar | ||
| 65 | - | ||
| 66 | -> aarch64 版本:https://kingbase.oss-cn-beijing.aliyuncs.com/KESV8R3/V009R001C001B0025-安装包-docker/aarch64/kdb_aarch64_V009R001C001B0025.tar | 64 | +* [x86_64 版本](https://kingbase.oss-cn-beijing.aliyuncs.com/KESV8R3/V009R001C001B0025-安装包-docker/x86_64/kdb_x86_64_V009R001C001B0025.tar) 【Windows 选择这个】 |
| 65 | +* [aarch64 版本](https://kingbase.oss-cn-beijing.aliyuncs.com/KESV8R3/V009R001C001B0025-安装包-docker/aarch64/kdb_aarch64_V009R001C001B0025.tar) 【MacBook Apple Silicon 选择这个】 | ||
| 67 | 66 | ||
| 68 | ② 加载镜像文件,在镜像 tar 文件所在目录运行: | 67 | ② 加载镜像文件,在镜像 tar 文件所在目录运行: |
| 69 | 68 | ||
| 70 | ```Bash | 69 | ```Bash |
| 71 | -docker load -i x86_64/kdb_x86_64_V009R001C001B0025.tar | 70 | +docker load -i kdb_x86_64_V009R001C001B0025.tar |
| 72 | ``` | 71 | ``` |
| 73 | 72 | ||
| 74 | ③ 在项目 `sql/tools` 目录下运行: | 73 | ③ 在项目 `sql/tools` 目录下运行: |
sql/tools/docker-compose.yaml
| @@ -73,7 +73,6 @@ services: | @@ -73,7 +73,6 @@ services: | ||
| 73 | # docker compose exec sqlserver bash /tmp/create_schema.sh | 73 | # docker compose exec sqlserver bash /tmp/create_schema.sh |
| 74 | - ./sqlserver/create_schema.sh:/tmp/create_schema.sh:ro | 74 | - ./sqlserver/create_schema.sh:/tmp/create_schema.sh:ro |
| 75 | 75 | ||
| 76 | - | ||
| 77 | dm8: | 76 | dm8: |
| 78 | # docker load -i dm8_20240715_x86_rh6_rq_single.tar | 77 | # docker load -i dm8_20240715_x86_rh6_rq_single.tar |
| 79 | image: dm8_single:dm8_20240715_rev232765_x86_rh6_64 | 78 | image: dm8_single:dm8_20240715_rev232765_x86_rh6_64 |
| @@ -94,10 +93,8 @@ services: | @@ -94,10 +93,8 @@ services: | ||
| 94 | - ../dm/ruoyi-vue-pro-dm8.sql:/tmp/schema.sql:ro | 93 | - ../dm/ruoyi-vue-pro-dm8.sql:/tmp/schema.sql:ro |
| 95 | 94 | ||
| 96 | kingbase: | 95 | kingbase: |
| 97 | - # x86_64: https://kingbase.oss-cn-beijing.aliyuncs.com/KESV8R3/V009R001C001B0025-安装包-docker/x86_64/kdb_x86_64_V009R001C001B0025.tar | ||
| 98 | - # aarch64: https://kingbase.oss-cn-beijing.aliyuncs.com/KESV8R3/V009R001C001B0025-安装包-docker/aarch64/kdb_aarch64_V009R001C001B0025.tar | ||
| 99 | - # docker load -i kdb_x86_64_V009R001C001B0025.tar | ||
| 100 | image: kingbase_v009r001c001b0025_single_x86:v1 | 96 | image: kingbase_v009r001c001b0025_single_x86:v1 |
| 97 | +# image: kingbase_v009r001c001b0025_single_arm:v1 | ||
| 101 | restart: unless-stopped | 98 | restart: unless-stopped |
| 102 | environment: | 99 | environment: |
| 103 | DB_USER: root | 100 | DB_USER: root |
| @@ -107,7 +104,6 @@ services: | @@ -107,7 +104,6 @@ services: | ||
| 107 | volumes: | 104 | volumes: |
| 108 | - kingbase:/home/kingbase/userdata | 105 | - kingbase:/home/kingbase/userdata |
| 109 | - ../kingbase/ruoyi-vue-pro.sql:/tmp/schema.sql:ro | 106 | - ../kingbase/ruoyi-vue-pro.sql:/tmp/schema.sql:ro |
| 110 | - # docker compose exec kingbase bash -c 'ksql -U $DB_USER -d test -f /tmp/schema.sql' | ||
| 111 | 107 | ||
| 112 | opengauss: | 108 | opengauss: |
| 113 | image: opengauss/opengauss:5.0.0 | 109 | image: opengauss/opengauss:5.0.0 |
yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/config/IdTypeEnvironmentPostProcessor.java
| @@ -83,6 +83,7 @@ public class IdTypeEnvironmentPostProcessor implements EnvironmentPostProcessor | @@ -83,6 +83,7 @@ public class IdTypeEnvironmentPostProcessor implements EnvironmentPostProcessor | ||
| 83 | driverClass = "org.quartz.impl.jdbcjobstore.MSSQLDelegate"; | 83 | driverClass = "org.quartz.impl.jdbcjobstore.MSSQLDelegate"; |
| 84 | break; | 84 | break; |
| 85 | case DM: | 85 | case DM: |
| 86 | + case KINGBASE_ES: | ||
| 86 | driverClass = "org.quartz.impl.jdbcjobstore.StdJDBCDelegate"; | 87 | driverClass = "org.quartz.impl.jdbcjobstore.StdJDBCDelegate"; |
| 87 | break; | 88 | break; |
| 88 | } | 89 | } |
yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/query/QueryWrapperX.java
| @@ -157,7 +157,7 @@ public class QueryWrapperX<T> extends QueryWrapper<T> { | @@ -157,7 +157,7 @@ public class QueryWrapperX<T> extends QueryWrapper<T> { | ||
| 157 | case SQL_SERVER2005: | 157 | case SQL_SERVER2005: |
| 158 | super.select("TOP " + n + " *"); // 由于 SQL Server 是通过 SELECT TOP 1 实现限制一条,所以只好使用 * 查询剩余字段 | 158 | super.select("TOP " + n + " *"); // 由于 SQL Server 是通过 SELECT TOP 1 实现限制一条,所以只好使用 * 查询剩余字段 |
| 159 | break; | 159 | break; |
| 160 | - default: // MySQL、PostgreSQL、DM 达梦都是采用 LIMIT 实现 | 160 | + default: // MySQL、PostgreSQL、DM 达梦、KingbaseES 大金都是采用 LIMIT 实现 |
| 161 | super.last("LIMIT " + n); | 161 | super.last("LIMIT " + n); |
| 162 | } | 162 | } |
| 163 | return this; | 163 | return this; |