Commit 674e7520cc7a004cf28c8ffcefdc68db7fc3ff0a

Authored by YunaiV
1 parent 2c67bd3a

【功能优化】信创数据库:大金数据库支持 Quartz 的兼容

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;
... ...