fix(sql): use mysql8 compatible PDA migrations
This commit is contained in:
@@ -8856,9 +8856,38 @@ DROP PROCEDURE IF EXISTS assert_phase3_final_schema;
|
|||||||
|
|
||||||
-- PDA 部分拣货释放策略:NULL/AUTO 按比例释放,MANUAL + [] 表示人工明确不释放。
|
-- PDA 部分拣货释放策略:NULL/AUTO 按比例释放,MANUAL + [] 表示人工明确不释放。
|
||||||
USE baiyue_firstleg;
|
USE baiyue_firstleg;
|
||||||
ALTER TABLE fl_loading_pick_item
|
DROP PROCEDURE IF EXISTS phase3_pda_add_column;
|
||||||
ADD COLUMN IF NOT EXISTS release_mode VARCHAR(10) NULL COMMENT 'AUTO按比例释放,MANUAL按人工选择释放' AFTER item_status,
|
DELIMITER $$
|
||||||
ADD COLUMN IF NOT EXISTS release_location_ids JSON NULL COMMENT '人工选择释放库位ID;空数组表示明确释放0个' AFTER release_mode;
|
CREATE PROCEDURE phase3_pda_add_column(
|
||||||
|
IN p_table_name VARCHAR(64), IN p_column_name VARCHAR(64), IN p_definition TEXT
|
||||||
|
)
|
||||||
|
BEGIN
|
||||||
|
IF NOT EXISTS (
|
||||||
|
SELECT 1 FROM information_schema.columns
|
||||||
|
WHERE table_schema = DATABASE() AND table_name = p_table_name AND column_name = p_column_name
|
||||||
|
) THEN
|
||||||
|
SET @phase3_pda_column_ddl = CONCAT(
|
||||||
|
'ALTER TABLE `', p_table_name, '` ADD COLUMN `', p_column_name, '` ', p_definition
|
||||||
|
);
|
||||||
|
PREPARE phase3_pda_column_stmt FROM @phase3_pda_column_ddl;
|
||||||
|
EXECUTE phase3_pda_column_stmt;
|
||||||
|
DEALLOCATE PREPARE phase3_pda_column_stmt;
|
||||||
|
END IF;
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
||||||
|
CALL phase3_pda_add_column(
|
||||||
|
'fl_loading_pick_item', 'release_mode',
|
||||||
|
"VARCHAR(10) NULL COMMENT 'AUTO按比例释放,MANUAL按人工选择释放' AFTER item_status"
|
||||||
|
);
|
||||||
|
CALL phase3_pda_add_column(
|
||||||
|
'fl_loading_pick_item', 'release_location_ids',
|
||||||
|
"JSON NULL COMMENT '人工选择释放库位ID;空数组表示明确释放0个' AFTER release_mode"
|
||||||
|
);
|
||||||
|
CALL phase3_pda_add_column(
|
||||||
|
'fl_inbound_pallet_allocation', 'reservation_id',
|
||||||
|
"BIGINT UNSIGNED NULL COMMENT '仓库预占资源唯一ID,A0共享场景用于区分托盘' AFTER location_code"
|
||||||
|
);
|
||||||
|
DROP PROCEDURE IF EXISTS phase3_pda_add_column;
|
||||||
-- PDA 多人协作:领取粒度由整柜任务下沉为单条拣货明细。
|
-- PDA 多人协作:领取粒度由整柜任务下沉为单条拣货明细。
|
||||||
CREATE TABLE IF NOT EXISTS fl_loading_pick_item_assignment (
|
CREATE TABLE IF NOT EXISTS fl_loading_pick_item_assignment (
|
||||||
pick_item_id BIGINT UNSIGNED NOT NULL,
|
pick_item_id BIGINT UNSIGNED NOT NULL,
|
||||||
@@ -8876,10 +8905,26 @@ CREATE TABLE IF NOT EXISTS fl_loading_pick_item_assignment (
|
|||||||
CONSTRAINT chk_loading_pick_item_assignment_type CHECK (assignment_type IN ('CLAIMED', 'ASSIGNED'))
|
CONSTRAINT chk_loading_pick_item_assignment_type CHECK (assignment_type IN ('CLAIMED', 'ASSIGNED'))
|
||||||
) ENGINE=InnoDB COMMENT='PDA拣货明细领取与作业员分配';
|
) ENGINE=InnoDB COMMENT='PDA拣货明细领取与作业员分配';
|
||||||
|
|
||||||
ALTER TABLE fl_loading_pick_operation
|
DROP PROCEDURE IF EXISTS phase3_pda_replace_operation_check;
|
||||||
DROP CHECK IF EXISTS chk_loading_pick_operation_action,
|
DELIMITER $$
|
||||||
ADD CONSTRAINT chk_loading_pick_operation_action
|
CREATE PROCEDURE phase3_pda_replace_operation_check()
|
||||||
CHECK (action_type IN ('CLAIM', 'ASSIGN', 'ITEM_CLAIM', 'ITEM_ASSIGN', 'REVIEW'));
|
BEGIN
|
||||||
|
IF EXISTS (
|
||||||
|
SELECT 1 FROM information_schema.table_constraints
|
||||||
|
WHERE constraint_schema = DATABASE()
|
||||||
|
AND table_name = 'fl_loading_pick_operation'
|
||||||
|
AND constraint_name = 'chk_loading_pick_operation_action'
|
||||||
|
AND constraint_type = 'CHECK'
|
||||||
|
) THEN
|
||||||
|
ALTER TABLE fl_loading_pick_operation DROP CHECK chk_loading_pick_operation_action;
|
||||||
|
END IF;
|
||||||
|
ALTER TABLE fl_loading_pick_operation
|
||||||
|
ADD CONSTRAINT chk_loading_pick_operation_action
|
||||||
|
CHECK (action_type IN ('CLAIM', 'ASSIGN', 'ITEM_CLAIM', 'ITEM_ASSIGN', 'REVIEW'));
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
||||||
|
CALL phase3_pda_replace_operation_check();
|
||||||
|
DROP PROCEDURE IF EXISTS phase3_pda_replace_operation_check;
|
||||||
|
|
||||||
DROP PROCEDURE IF EXISTS assert_phase3_pda_item_assignment_schema;
|
DROP PROCEDURE IF EXISTS assert_phase3_pda_item_assignment_schema;
|
||||||
DELIMITER $$
|
DELIMITER $$
|
||||||
@@ -8900,9 +8945,6 @@ DELIMITER ;
|
|||||||
CALL assert_phase3_pda_item_assignment_schema();
|
CALL assert_phase3_pda_item_assignment_schema();
|
||||||
DROP PROCEDURE IF EXISTS assert_phase3_pda_item_assignment_schema;
|
DROP PROCEDURE IF EXISTS assert_phase3_pda_item_assignment_schema;
|
||||||
|
|
||||||
ALTER TABLE fl_inbound_pallet_allocation
|
|
||||||
ADD COLUMN IF NOT EXISTS reservation_id BIGINT UNSIGNED NULL COMMENT '仓库预占资源唯一ID,A0共享场景用于区分托盘' AFTER location_code;
|
|
||||||
|
|
||||||
-- 来源:firstleg/src/main/resources/db/phase3-carrier-schedule-query-schema.sql
|
-- 来源:firstleg/src/main/resources/db/phase3-carrier-schedule-query-schema.sql
|
||||||
SET NAMES utf8mb4;
|
SET NAMES utf8mb4;
|
||||||
USE baiyue_firstleg;
|
USE baiyue_firstleg;
|
||||||
|
|||||||
+11
@@ -80,6 +80,17 @@ class Phase3FinalUnifiedSqlContractTest {
|
|||||||
.isGreaterThan(sql.lastIndexOf("CALL "));
|
.isGreaterThan(sql.lastIndexOf("CALL "));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void unifiedEntryUsesMysql8CompatibleConditionalDdl() throws Exception {
|
||||||
|
String sql = normalise(Files.readString(resolveUnified()));
|
||||||
|
|
||||||
|
assertThat(sql)
|
||||||
|
.doesNotContain("\n ADD COLUMN IF NOT EXISTS")
|
||||||
|
.doesNotContain("\n DROP CHECK IF EXISTS")
|
||||||
|
.contains("CREATE PROCEDURE phase3_pda_add_column")
|
||||||
|
.contains("CREATE PROCEDURE phase3_pda_replace_operation_check");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void legacySplitIndexesAreOnlyDroppedAndNeverRecreated() throws Exception {
|
void legacySplitIndexesAreOnlyDroppedAndNeverRecreated() throws Exception {
|
||||||
String sql = normalise(Files.readString(resolveUnified()));
|
String sql = normalise(Files.readString(resolveUnified()));
|
||||||
|
|||||||
Reference in New Issue
Block a user