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 | 61 | |
| 62 | 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 | 67 | ② 加载镜像文件,在镜像 tar 文件所在目录运行: |
| 69 | 68 | |
| 70 | 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 | 73 | ③ 在项目 `sql/tools` 目录下运行: | ... | ... |
sql/tools/docker-compose.yaml
| ... | ... | @@ -73,7 +73,6 @@ services: |
| 73 | 73 | # docker compose exec sqlserver bash /tmp/create_schema.sh |
| 74 | 74 | - ./sqlserver/create_schema.sh:/tmp/create_schema.sh:ro |
| 75 | 75 | |
| 76 | - | |
| 77 | 76 | dm8: |
| 78 | 77 | # docker load -i dm8_20240715_x86_rh6_rq_single.tar |
| 79 | 78 | image: dm8_single:dm8_20240715_rev232765_x86_rh6_64 |
| ... | ... | @@ -94,10 +93,8 @@ services: |
| 94 | 93 | - ../dm/ruoyi-vue-pro-dm8.sql:/tmp/schema.sql:ro |
| 95 | 94 | |
| 96 | 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 | 96 | image: kingbase_v009r001c001b0025_single_x86:v1 |
| 97 | +# image: kingbase_v009r001c001b0025_single_arm:v1 | |
| 101 | 98 | restart: unless-stopped |
| 102 | 99 | environment: |
| 103 | 100 | DB_USER: root |
| ... | ... | @@ -107,7 +104,6 @@ services: |
| 107 | 104 | volumes: |
| 108 | 105 | - kingbase:/home/kingbase/userdata |
| 109 | 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 | 108 | opengauss: |
| 113 | 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 | 83 | driverClass = "org.quartz.impl.jdbcjobstore.MSSQLDelegate"; |
| 84 | 84 | break; |
| 85 | 85 | case DM: |
| 86 | + case KINGBASE_ES: | |
| 86 | 87 | driverClass = "org.quartz.impl.jdbcjobstore.StdJDBCDelegate"; |
| 87 | 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 | 157 | case SQL_SERVER2005: |
| 158 | 158 | super.select("TOP " + n + " *"); // 由于 SQL Server 是通过 SELECT TOP 1 实现限制一条,所以只好使用 * 查询剩余字段 |
| 159 | 159 | break; |
| 160 | - default: // MySQL、PostgreSQL、DM 达梦都是采用 LIMIT 实现 | |
| 160 | + default: // MySQL、PostgreSQL、DM 达梦、KingbaseES 大金都是采用 LIMIT 实现 | |
| 161 | 161 | super.last("LIMIT " + n); |
| 162 | 162 | } |
| 163 | 163 | return this; | ... | ... |