From 45867473314168876b13c5e99cdd28675cc1930c Mon Sep 17 00:00:00 2001 From: wangziqi Date: Sat, 1 Aug 2026 14:36:18 +0800 Subject: [PATCH] fix(education): create missing member/promotion/pay-demo tables, dedupe menus, add quartz tables --- .../V4462__create_missing_member_tables.sql | 152 +++++++++++++ ...V4463__create_missing_promotion_tables.sql | 180 ++++++++++++++++ .../V4464__create_missing_pay_demo_tables.sql | 35 +++ ...4465__rename_education_duplicate_menus.sql | 27 +++ .../education/V4466__create_quartz_tables.sql | 200 ++++++++++++++++++ 5 files changed, 594 insertions(+) create mode 100644 yudao-module-education/src/main/resources/db/migration/education/V4462__create_missing_member_tables.sql create mode 100644 yudao-module-education/src/main/resources/db/migration/education/V4463__create_missing_promotion_tables.sql create mode 100644 yudao-module-education/src/main/resources/db/migration/education/V4464__create_missing_pay_demo_tables.sql create mode 100644 yudao-module-education/src/main/resources/db/migration/education/V4465__rename_education_duplicate_menus.sql create mode 100644 yudao-module-education/src/main/resources/db/migration/education/V4466__create_quartz_tables.sql diff --git a/yudao-module-education/src/main/resources/db/migration/education/V4462__create_missing_member_tables.sql b/yudao-module-education/src/main/resources/db/migration/education/V4462__create_missing_member_tables.sql new file mode 100644 index 00000000..0784de33 --- /dev/null +++ b/yudao-module-education/src/main/resources/db/migration/education/V4462__create_missing_member_tables.sql @@ -0,0 +1,152 @@ +-- 补充此前缺失的会员模块表(本地库基线未包含 member_* 表)。 +CREATE TABLE member_user ( + id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + tenant_id BIGINT NOT NULL DEFAULT 0, + mobile VARCHAR(255), + email VARCHAR(255), + password VARCHAR(255), + status INTEGER, + register_ip VARCHAR(255), + register_terminal INTEGER, + login_ip VARCHAR(255), + login_date TIMESTAMP, + nickname VARCHAR(255), + avatar VARCHAR(255), + name VARCHAR(255), + sex INTEGER, + birthday TIMESTAMP, + area_id INTEGER, + mark VARCHAR(255), + point INTEGER, + tag_ids TEXT, + level_id BIGINT, + experience INTEGER, + group_id BIGINT, + creator VARCHAR(64) DEFAULT '', create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updater VARCHAR(64) DEFAULT '', update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + deleted BOOLEAN NOT NULL DEFAULT false +); + +CREATE TABLE member_address ( + id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + user_id BIGINT, + name VARCHAR(255), + mobile VARCHAR(255), + area_id BIGINT, + detail_address VARCHAR(255), + default_status BOOLEAN, + creator VARCHAR(64) DEFAULT '', create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updater VARCHAR(64) DEFAULT '', update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + deleted BOOLEAN NOT NULL DEFAULT false +); + +CREATE TABLE member_config ( + id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + point_trade_deduct_enable BOOLEAN, + point_trade_deduct_unit_price INTEGER, + point_trade_deduct_max_price INTEGER, + point_trade_give_point INTEGER, + creator VARCHAR(64) DEFAULT '', create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updater VARCHAR(64) DEFAULT '', update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + deleted BOOLEAN NOT NULL DEFAULT false +); + +CREATE TABLE member_group ( + id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + name VARCHAR(255), + remark VARCHAR(255), + status INTEGER, + creator VARCHAR(64) DEFAULT '', create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updater VARCHAR(64) DEFAULT '', update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + deleted BOOLEAN NOT NULL DEFAULT false +); + +CREATE TABLE member_level ( + id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + name VARCHAR(255), + level INTEGER, + experience INTEGER, + discount_percent INTEGER, + icon VARCHAR(255), + background_url VARCHAR(255), + status INTEGER, + creator VARCHAR(64) DEFAULT '', create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updater VARCHAR(64) DEFAULT '', update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + deleted BOOLEAN NOT NULL DEFAULT false +); + +CREATE TABLE member_level_record ( + id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + user_id BIGINT, + level_id BIGINT, + level INTEGER, + discount_percent INTEGER, + experience INTEGER, + user_experience INTEGER, + remark VARCHAR(255), + description VARCHAR(255), + creator VARCHAR(64) DEFAULT '', create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updater VARCHAR(64) DEFAULT '', update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + deleted BOOLEAN NOT NULL DEFAULT false +); + +CREATE TABLE member_experience_record ( + id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + user_id BIGINT, + biz_type INTEGER, + biz_id VARCHAR(255), + title VARCHAR(255), + description VARCHAR(255), + experience INTEGER, + total_experience INTEGER, + creator VARCHAR(64) DEFAULT '', create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updater VARCHAR(64) DEFAULT '', update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + deleted BOOLEAN NOT NULL DEFAULT false +); + +CREATE TABLE member_point_record ( + id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + user_id BIGINT, + biz_id VARCHAR(255), + biz_type INTEGER, + title VARCHAR(255), + description VARCHAR(255), + point INTEGER, + total_point INTEGER, + creator VARCHAR(64) DEFAULT '', create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updater VARCHAR(64) DEFAULT '', update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + deleted BOOLEAN NOT NULL DEFAULT false +); + +CREATE TABLE member_sign_in_config ( + id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + day INTEGER, + point INTEGER, + experience INTEGER, + status INTEGER, + creator VARCHAR(64) DEFAULT '', create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updater VARCHAR(64) DEFAULT '', update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + deleted BOOLEAN NOT NULL DEFAULT false +); + +CREATE TABLE member_sign_in_record ( + id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + user_id BIGINT, + day INTEGER, + point INTEGER, + experience INTEGER, + creator VARCHAR(64) DEFAULT '', create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updater VARCHAR(64) DEFAULT '', update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + deleted BOOLEAN NOT NULL DEFAULT false +); + +CREATE TABLE member_tag ( + id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + name VARCHAR(255), + creator VARCHAR(64) DEFAULT '', create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updater VARCHAR(64) DEFAULT '', update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + deleted BOOLEAN NOT NULL DEFAULT false +); + +-- 与 V4250 的幂等积分契约保持一致(V4250 在表缺失时提前返回,这里补建唯一索引)。 +CREATE UNIQUE INDEX uk_member_point_record_education_biz ON member_point_record (user_id, biz_type, biz_id) WHERE biz_type = 31 AND biz_id IS NOT NULL; diff --git a/yudao-module-education/src/main/resources/db/migration/education/V4463__create_missing_promotion_tables.sql b/yudao-module-education/src/main/resources/db/migration/education/V4463__create_missing_promotion_tables.sql new file mode 100644 index 00000000..b9e90faa --- /dev/null +++ b/yudao-module-education/src/main/resources/db/migration/education/V4463__create_missing_promotion_tables.sql @@ -0,0 +1,180 @@ +-- 补充此前缺失的营销模块表(本地库基线未包含这些 promotion_* 表)。 +CREATE TABLE promotion_article ( + id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + category_id BIGINT, + spu_id BIGINT, + title VARCHAR(255), + author VARCHAR(255), + pic_url VARCHAR(255), + introduction VARCHAR(255), + browse_count INTEGER, + sort INTEGER, + status INTEGER, + recommend_hot BOOLEAN, + recommend_banner BOOLEAN, + content VARCHAR(255), + creator VARCHAR(64) DEFAULT '', create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updater VARCHAR(64) DEFAULT '', update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + deleted BOOLEAN NOT NULL DEFAULT false +); + +CREATE TABLE promotion_article_category ( + id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + name VARCHAR(255), + pic_url VARCHAR(255), + status INTEGER, + sort INTEGER, + creator VARCHAR(64) DEFAULT '', create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updater VARCHAR(64) DEFAULT '', update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + deleted BOOLEAN NOT NULL DEFAULT false +); + +CREATE TABLE promotion_banner ( + id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + title VARCHAR(255), + url VARCHAR(255), + pic_url VARCHAR(255), + sort INTEGER, + status INTEGER, + position INTEGER, + memo VARCHAR(255), + browse_count INTEGER, + creator VARCHAR(64) DEFAULT '', create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updater VARCHAR(64) DEFAULT '', update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + deleted BOOLEAN NOT NULL DEFAULT false +); + +CREATE TABLE promotion_bargain_activity ( + id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + tenant_id BIGINT NOT NULL DEFAULT 0, + name VARCHAR(255), + start_time TIMESTAMP, + end_time TIMESTAMP, + status INTEGER, + spu_id BIGINT, + sku_id BIGINT, + bargain_first_price INTEGER, + bargain_min_price INTEGER, + stock INTEGER, + total_stock INTEGER, + help_max_count INTEGER, + bargain_count INTEGER, + total_limit_count INTEGER, + random_min_price INTEGER, + random_max_price INTEGER, + creator VARCHAR(64) DEFAULT '', create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updater VARCHAR(64) DEFAULT '', update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + deleted BOOLEAN NOT NULL DEFAULT false +); + +CREATE TABLE promotion_bargain_help ( + id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + tenant_id BIGINT NOT NULL DEFAULT 0, + activity_id BIGINT, + record_id BIGINT, + user_id BIGINT, + reduce_price INTEGER, + creator VARCHAR(64) DEFAULT '', create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updater VARCHAR(64) DEFAULT '', update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + deleted BOOLEAN NOT NULL DEFAULT false +); + +CREATE TABLE promotion_bargain_record ( + id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + tenant_id BIGINT NOT NULL DEFAULT 0, + user_id BIGINT, + activity_id BIGINT, + spu_id BIGINT, + sku_id BIGINT, + bargain_first_price INTEGER, + bargain_price INTEGER, + status INTEGER, + end_time TIMESTAMP, + order_id BIGINT, + creator VARCHAR(64) DEFAULT '', create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updater VARCHAR(64) DEFAULT '', update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + deleted BOOLEAN NOT NULL DEFAULT false +); + +CREATE TABLE promotion_diy_page ( + id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + template_id BIGINT, + name VARCHAR(255), + remark VARCHAR(255), + preview_pic_urls TEXT, + property VARCHAR(255), + creator VARCHAR(64) DEFAULT '', create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updater VARCHAR(64) DEFAULT '', update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + deleted BOOLEAN NOT NULL DEFAULT false +); + +CREATE TABLE promotion_diy_template ( + id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + name VARCHAR(255), + used BOOLEAN, + used_time TIMESTAMP, + remark VARCHAR(255), + preview_pic_urls TEXT, + property VARCHAR(255), + creator VARCHAR(64) DEFAULT '', create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updater VARCHAR(64) DEFAULT '', update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + deleted BOOLEAN NOT NULL DEFAULT false +); + +CREATE TABLE promotion_kefu_conversation ( + id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + user_id BIGINT, + last_message_time TIMESTAMP, + last_message_content VARCHAR(255), + last_message_content_type INTEGER, + admin_pinned BOOLEAN, + user_deleted BOOLEAN, + admin_deleted BOOLEAN, + admin_unread_message_count INTEGER, + creator VARCHAR(64) DEFAULT '', create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updater VARCHAR(64) DEFAULT '', update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + deleted BOOLEAN NOT NULL DEFAULT false +); + +CREATE TABLE promotion_kefu_message ( + id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + conversation_id BIGINT, + sender_id BIGINT, + sender_type INTEGER, + receiver_id BIGINT, + receiver_type INTEGER, + content_type INTEGER, + content VARCHAR(255), + read_status BOOLEAN, + creator VARCHAR(64) DEFAULT '', create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updater VARCHAR(64) DEFAULT '', update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + deleted BOOLEAN NOT NULL DEFAULT false +); + +CREATE TABLE promotion_point_activity ( + id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + spu_id BIGINT, + status INTEGER, + remark VARCHAR(255), + sort INTEGER, + stock INTEGER, + total_stock INTEGER, + creator VARCHAR(64) DEFAULT '', create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updater VARCHAR(64) DEFAULT '', update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + deleted BOOLEAN NOT NULL DEFAULT false +); + +CREATE TABLE promotion_point_product ( + id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + activity_id BIGINT, + spu_id BIGINT, + sku_id BIGINT, + count INTEGER, + point INTEGER, + price INTEGER, + stock INTEGER, + activity_status INTEGER, + creator VARCHAR(64) DEFAULT '', create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updater VARCHAR(64) DEFAULT '', update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + deleted BOOLEAN NOT NULL DEFAULT false +); diff --git a/yudao-module-education/src/main/resources/db/migration/education/V4464__create_missing_pay_demo_tables.sql b/yudao-module-education/src/main/resources/db/migration/education/V4464__create_missing_pay_demo_tables.sql new file mode 100644 index 00000000..87cfcb9b --- /dev/null +++ b/yudao-module-education/src/main/resources/db/migration/education/V4464__create_missing_pay_demo_tables.sql @@ -0,0 +1,35 @@ +-- 补充支付演示(接入示例)表。 +CREATE TABLE pay_demo_order ( + id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + user_id BIGINT, + spu_id BIGINT, + spu_name VARCHAR(255), + price INTEGER, + pay_status BOOLEAN, + pay_order_id BIGINT, + pay_time TIMESTAMP, + pay_channel_code VARCHAR(255), + pay_refund_id BIGINT, + refund_price INTEGER, + refund_time TIMESTAMP, + creator VARCHAR(64) DEFAULT '', create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updater VARCHAR(64) DEFAULT '', update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + deleted BOOLEAN NOT NULL DEFAULT false +); + +CREATE TABLE pay_demo_withdraw ( + id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + subject VARCHAR(255), + price INTEGER, + user_account VARCHAR(255), + user_name VARCHAR(255), + type INTEGER, + status INTEGER, + pay_transfer_id BIGINT, + transfer_channel_code VARCHAR(255), + transfer_time TIMESTAMP, + transfer_error_msg VARCHAR(255), + creator VARCHAR(64) DEFAULT '', create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updater VARCHAR(64) DEFAULT '', update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + deleted BOOLEAN NOT NULL DEFAULT false +); diff --git a/yudao-module-education/src/main/resources/db/migration/education/V4465__rename_education_duplicate_menus.sql b/yudao-module-education/src/main/resources/db/migration/education/V4465__rename_education_duplicate_menus.sql new file mode 100644 index 00000000..d933935c --- /dev/null +++ b/yudao-module-education/src/main/resources/db/migration/education/V4465__rename_education_duplicate_menus.sql @@ -0,0 +1,27 @@ +-- 教育管理子树复用了支付/商城菜单,导致前端路由报"menu name duplicate"。 +-- 给教育子树内的重名菜单加"(教育)"后缀,避免与支付/商城原生菜单冲突。 +DO $$ +DECLARE + renamed INTEGER; +BEGIN + IF to_regclass('system_menu') IS NULL THEN + RETURN; + END IF; + + UPDATE system_menu + SET name = name || '(教育)', updater = 'education-flyway' + WHERE deleted = false + AND id IN (6890, 6893, 6900, 6903, 6920, 6927, 6932, 6937, 6956, 6965, 6971, + 6977, 6990, 6991, 7010, 7020, 7021, 7027, 7029, 7041, 7047, 7061, 7067); + + SELECT count(*) INTO renamed + FROM system_menu + WHERE deleted = false AND id IN (6890, 6893, 6900, 6903, 6920, 6927, 6932, 6937, + 6956, 6965, 6971, 6977, 6990, 6991, 7010, 7020, + 7021, 7027, 7029, 7041, 7047, 7061, 7067) + AND name LIKE '%(教育)'; + IF renamed <> 23 THEN + RAISE EXCEPTION 'Education duplicate menu rename incomplete: %', renamed USING ERRCODE = '23505'; + END IF; +END; +$$; diff --git a/yudao-module-education/src/main/resources/db/migration/education/V4466__create_quartz_tables.sql b/yudao-module-education/src/main/resources/db/migration/education/V4466__create_quartz_tables.sql new file mode 100644 index 00000000..77fe7f3a --- /dev/null +++ b/yudao-module-education/src/main/resources/db/migration/education/V4466__create_quartz_tables.sql @@ -0,0 +1,200 @@ +-- 来源:sql/postgresql/quartz.sql(Quartz PostgreSQL 官方表结构)。 +-- 补齐本地库缺失的 QRTZ_* 表,消除定时任务持久化报错。 +DROP TABLE IF EXISTS QRTZ_FIRED_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS; +DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE; +DROP TABLE IF EXISTS QRTZ_LOCKS; +DROP TABLE IF EXISTS QRTZ_SIMPLE_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_CRON_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_SIMPROP_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_BLOB_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_JOB_DETAILS; +DROP TABLE IF EXISTS QRTZ_CALENDARS; + +CREATE TABLE QRTZ_JOB_DETAILS +( + SCHED_NAME VARCHAR(120) NOT NULL, + JOB_NAME VARCHAR(200) NOT NULL, + JOB_GROUP VARCHAR(200) NOT NULL, + DESCRIPTION VARCHAR(250) NULL, + JOB_CLASS_NAME VARCHAR(250) NOT NULL, + IS_DURABLE BOOL NOT NULL, + IS_NONCONCURRENT BOOL NOT NULL, + IS_UPDATE_DATA BOOL NOT NULL, + REQUESTS_RECOVERY BOOL NOT NULL, + JOB_DATA BYTEA NULL, + PRIMARY KEY (SCHED_NAME, JOB_NAME, JOB_GROUP) +); + +CREATE TABLE QRTZ_TRIGGERS +( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + JOB_NAME VARCHAR(200) NOT NULL, + JOB_GROUP VARCHAR(200) NOT NULL, + DESCRIPTION VARCHAR(250) NULL, + NEXT_FIRE_TIME BIGINT NULL, + PREV_FIRE_TIME BIGINT NULL, + PRIORITY INTEGER NULL, + TRIGGER_STATE VARCHAR(16) NOT NULL, + TRIGGER_TYPE VARCHAR(8) NOT NULL, + START_TIME BIGINT NOT NULL, + END_TIME BIGINT NULL, + CALENDAR_NAME VARCHAR(200) NULL, + MISFIRE_INSTR SMALLINT NULL, + JOB_DATA BYTEA NULL, + PRIMARY KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME, JOB_NAME, JOB_GROUP) + REFERENCES QRTZ_JOB_DETAILS (SCHED_NAME, JOB_NAME, JOB_GROUP) +); + +CREATE TABLE QRTZ_SIMPLE_TRIGGERS +( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + REPEAT_COUNT BIGINT NOT NULL, + REPEAT_INTERVAL BIGINT NOT NULL, + TIMES_TRIGGERED BIGINT NOT NULL, + PRIMARY KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_CRON_TRIGGERS +( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + CRON_EXPRESSION VARCHAR(120) NOT NULL, + TIME_ZONE_ID VARCHAR(80), + PRIMARY KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_SIMPROP_TRIGGERS +( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + STR_PROP_1 VARCHAR(512) NULL, + STR_PROP_2 VARCHAR(512) NULL, + STR_PROP_3 VARCHAR(512) NULL, + INT_PROP_1 INT NULL, + INT_PROP_2 INT NULL, + LONG_PROP_1 BIGINT NULL, + LONG_PROP_2 BIGINT NULL, + DEC_PROP_1 NUMERIC(13, 4) NULL, + DEC_PROP_2 NUMERIC(13, 4) NULL, + BOOL_PROP_1 BOOL NULL, + BOOL_PROP_2 BOOL NULL, + PRIMARY KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_BLOB_TRIGGERS +( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + BLOB_DATA BYTEA NULL, + PRIMARY KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_CALENDARS +( + SCHED_NAME VARCHAR(120) NOT NULL, + CALENDAR_NAME VARCHAR(200) NOT NULL, + CALENDAR BYTEA NOT NULL, + PRIMARY KEY (SCHED_NAME, CALENDAR_NAME) +); + +CREATE TABLE QRTZ_PAUSED_TRIGGER_GRPS +( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + PRIMARY KEY (SCHED_NAME, TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_FIRED_TRIGGERS +( + SCHED_NAME VARCHAR(120) NOT NULL, + ENTRY_ID VARCHAR(95) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + INSTANCE_NAME VARCHAR(200) NOT NULL, + FIRED_TIME BIGINT NOT NULL, + SCHED_TIME BIGINT NOT NULL, + PRIORITY INTEGER NOT NULL, + STATE VARCHAR(16) NOT NULL, + JOB_NAME VARCHAR(200) NULL, + JOB_GROUP VARCHAR(200) NULL, + IS_NONCONCURRENT BOOL NULL, + REQUESTS_RECOVERY BOOL NULL, + PRIMARY KEY (SCHED_NAME, ENTRY_ID) +); + +CREATE TABLE QRTZ_SCHEDULER_STATE +( + SCHED_NAME VARCHAR(120) NOT NULL, + INSTANCE_NAME VARCHAR(200) NOT NULL, + LAST_CHECKIN_TIME BIGINT NOT NULL, + CHECKIN_INTERVAL BIGINT NOT NULL, + PRIMARY KEY (SCHED_NAME, INSTANCE_NAME) +); + +CREATE TABLE QRTZ_LOCKS +( + SCHED_NAME VARCHAR(120) NOT NULL, + LOCK_NAME VARCHAR(40) NOT NULL, + PRIMARY KEY (SCHED_NAME, LOCK_NAME) +); + +CREATE INDEX IDX_QRTZ_J_REQ_RECOVERY + ON QRTZ_JOB_DETAILS (SCHED_NAME, REQUESTS_RECOVERY); +CREATE INDEX IDX_QRTZ_J_GRP + ON QRTZ_JOB_DETAILS (SCHED_NAME, JOB_GROUP); + +CREATE INDEX IDX_QRTZ_T_J + ON QRTZ_TRIGGERS (SCHED_NAME, JOB_NAME, JOB_GROUP); +CREATE INDEX IDX_QRTZ_T_JG + ON QRTZ_TRIGGERS (SCHED_NAME, JOB_GROUP); +CREATE INDEX IDX_QRTZ_T_C + ON QRTZ_TRIGGERS (SCHED_NAME, CALENDAR_NAME); +CREATE INDEX IDX_QRTZ_T_G + ON QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_GROUP); +CREATE INDEX IDX_QRTZ_T_STATE + ON QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_STATE); +CREATE INDEX IDX_QRTZ_T_N_STATE + ON QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP, TRIGGER_STATE); +CREATE INDEX IDX_QRTZ_T_N_G_STATE + ON QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_GROUP, TRIGGER_STATE); +CREATE INDEX IDX_QRTZ_T_NEXT_FIRE_TIME + ON QRTZ_TRIGGERS (SCHED_NAME, NEXT_FIRE_TIME); +CREATE INDEX IDX_QRTZ_T_NFT_ST + ON QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_STATE, NEXT_FIRE_TIME); +CREATE INDEX IDX_QRTZ_T_NFT_MISFIRE + ON QRTZ_TRIGGERS (SCHED_NAME, MISFIRE_INSTR, NEXT_FIRE_TIME); +CREATE INDEX IDX_QRTZ_T_NFT_ST_MISFIRE + ON QRTZ_TRIGGERS (SCHED_NAME, MISFIRE_INSTR, NEXT_FIRE_TIME, TRIGGER_STATE); +CREATE INDEX IDX_QRTZ_T_NFT_ST_MISFIRE_GRP + ON QRTZ_TRIGGERS (SCHED_NAME, MISFIRE_INSTR, NEXT_FIRE_TIME, TRIGGER_GROUP, TRIGGER_STATE); + +CREATE INDEX IDX_QRTZ_FT_TRIG_INST_NAME + ON QRTZ_FIRED_TRIGGERS (SCHED_NAME, INSTANCE_NAME); +CREATE INDEX IDX_QRTZ_FT_INST_JOB_REQ_RCVRY + ON QRTZ_FIRED_TRIGGERS (SCHED_NAME, INSTANCE_NAME, REQUESTS_RECOVERY); +CREATE INDEX IDX_QRTZ_FT_J_G + ON QRTZ_FIRED_TRIGGERS (SCHED_NAME, JOB_NAME, JOB_GROUP); +CREATE INDEX IDX_QRTZ_FT_JG + ON QRTZ_FIRED_TRIGGERS (SCHED_NAME, JOB_GROUP); +CREATE INDEX IDX_QRTZ_FT_T_G + ON QRTZ_FIRED_TRIGGERS (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP); +CREATE INDEX IDX_QRTZ_FT_TG + ON QRTZ_FIRED_TRIGGERS (SCHED_NAME, TRIGGER_GROUP);