| ruoyi-admin/src/main/resources/db/migration/V28__remove_reception_backfill_integrity_legacy.sql | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ruoyi-admin/src/main/resources/db/migration/V29__remove_remaining_history_gap_legacy.sql | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ruoyi-admin/src/test/java/com/ruoyi/config/Ticket28MigrationContractTest.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ruoyi-admin/src/test/java/com/ruoyi/config/Ticket29MigrationContractTest.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ruoyi-admin/src/main/resources/db/migration/V28__remove_reception_backfill_integrity_legacy.sql
@@ -4,8 +4,6 @@ DROP TABLE t_test_integrity_issue; DROP TABLE t_test_backfill_cursor; DROP TABLE t_data_gap; DROP TABLE t_history_sync_cursor; DROP TABLE t_test_collector_exception_interval; DROP TABLE t_test_reception_interval; DROP TABLE t_collector_channel_lease; ruoyi-admin/src/main/resources/db/migration/V29__remove_remaining_history_gap_legacy.sql
New file @@ -0,0 +1,7 @@ -- Ticket28 后续清理:V28 已执行后补删遗留历史游标和数据缺口表,保持已应用迁移不可变。 SET FOREIGN_KEY_CHECKS = 0; DROP TABLE IF EXISTS t_data_gap; DROP TABLE IF EXISTS t_history_sync_cursor; SET FOREIGN_KEY_CHECKS = 1; ruoyi-admin/src/test/java/com/ruoyi/config/Ticket28MigrationContractTest.java
@@ -16,8 +16,6 @@ assertTrue(sql.contains("DROP TABLE t_test_reception_interval")); assertTrue(sql.contains("DROP TABLE t_collector_channel_lease")); assertTrue(sql.contains("DROP TABLE t_channel_lease")); assertTrue(sql.contains("DROP TABLE t_data_gap")); assertTrue(sql.contains("DROP TABLE t_history_sync_cursor")); assertTrue(sql.contains("DROP FOREIGN KEY fk_sample_reception_interval")); assertTrue(sql.contains("DROP FOREIGN KEY fk_collector_sample_reception_interval")); assertTrue(sql.contains("DROP COLUMN reception_interval_id")); ruoyi-admin/src/test/java/com/ruoyi/config/Ticket29MigrationContractTest.java
New file @@ -0,0 +1,32 @@ package com.ruoyi.config; import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.InputStream; import java.nio.charset.StandardCharsets; import org.junit.jupiter.api.Test; /** V29 补删 Ticket28 遗漏的历史补采游标和数据缺口表。 */ class Ticket29MigrationContractTest { @Test void removesRemainingHistorySyncTables() { String sql = resource("db/migration/V29__remove_remaining_history_gap_legacy.sql"); assertTrue(sql.contains("DROP TABLE IF EXISTS t_data_gap")); assertTrue(sql.contains("DROP TABLE IF EXISTS t_history_sync_cursor")); } private static String resource(String path) { try (InputStream stream = Ticket29MigrationContractTest.class.getClassLoader().getResourceAsStream(path)) { if (stream == null) throw new AssertionError("Missing migration resource " + path); return new String(stream.readAllBytes(), StandardCharsets.UTF_8); } catch (Exception exception) { throw new AssertionError("Unable to read migration resource " + path, exception); } } }