1.0.555.verify.sql 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. -- ============================================================================
  2. -- 1.0.555.verify.sql · R2-A2 执行后校验(返回单列 ok:1=全通过)
  3. --
  4. -- V1 inbound_enabled = INT / NOT NULL / DEFAULT 0
  5. -- V2 stale_guard_enabled = INT / NOT NULL / DEFAULT 1
  6. -- V3 inbound_max_rows = INT / NOT NULL / DEFAULT 500(本批不改,只断言)
  7. -- V4 三列 NULL 计数 = 0
  8. -- V5 mdp_entity 仍有行
  9. -- V6 1.0.554 历史未被改动(status/verify/hash 原样)
  10. -- V7 P0 未被触碰(UK 列序 / CHECK / po_no·po_line NOT NULL)
  11. --
  12. -- 注:类型断言为 INT 而非 TINYINT —— 本批刻意保持与实体声明一致,
  13. -- 否则 CodeFirst 会重写该列并连带抹掉 DEFAULT(1.0.554 已实证)。
  14. -- INT vs 契约 TINYINT 的类型漂移留 R2-B。
  15. -- 注:不比对 COLUMN_COMMENT,避免与 CodeFirst 的注释同步互踩。
  16. -- ============================================================================
  17. SELECT CASE WHEN
  18. -- V1 · inbound_enabled
  19. (SELECT COUNT(*) FROM information_schema.`COLUMNS`
  20. WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'mdp_entity'
  21. AND `COLUMN_NAME` = 'inbound_enabled'
  22. AND `COLUMN_TYPE` = 'int' AND `IS_NULLABLE` = 'NO'
  23. AND `COLUMN_DEFAULT` <=> '0') = 1
  24. -- V2 · stale_guard_enabled
  25. AND (SELECT COUNT(*) FROM information_schema.`COLUMNS`
  26. WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'mdp_entity'
  27. AND `COLUMN_NAME` = 'stale_guard_enabled'
  28. AND `COLUMN_TYPE` = 'int' AND `IS_NULLABLE` = 'NO'
  29. AND `COLUMN_DEFAULT` <=> '1') = 1
  30. -- V3 · inbound_max_rows(1.0.554 产物,本批只读断言)
  31. AND (SELECT COUNT(*) FROM information_schema.`COLUMNS`
  32. WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'mdp_entity'
  33. AND `COLUMN_NAME` = 'inbound_max_rows'
  34. AND `COLUMN_TYPE` = 'int' AND `IS_NULLABLE` = 'NO'
  35. AND `COLUMN_DEFAULT` <=> '500') = 1
  36. -- V4 · 三列无 NULL
  37. AND (SELECT COUNT(*) FROM `mdp_entity`
  38. WHERE `inbound_enabled` IS NULL
  39. OR `inbound_max_rows` IS NULL
  40. OR `stale_guard_enabled` IS NULL) = 0
  41. -- V5 · 表非空
  42. AND (SELECT COUNT(*) FROM `mdp_entity`) > 0
  43. -- V6 · 1.0.554 历史未被改动
  44. AND (SELECT COUNT(*) FROM `sys_db_migration_log`
  45. WHERE `version` = '1.0.554'
  46. AND `status` = 'Success' AND `verify_status` = 'Success'
  47. AND UPPER(`file_hash`) = '04F0C650DCC5F8D36F7A5ACED5346C420BF967AA2493E7261FEA311E381EEB68') = 1
  48. -- V7 · P0 未被触碰
  49. AND (SELECT GROUP_CONCAT(`COLUMN_NAME` ORDER BY `SEQ_IN_INDEX` SEPARATOR ',')
  50. FROM information_schema.`STATISTICS`
  51. WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'dwd_process_outsource_delivery'
  52. AND `INDEX_NAME` = 'uk_po_line_stat') = 'tenant_id,factory_id,stat_date,po_no,po_line'
  53. AND (SELECT COUNT(*) FROM information_schema.`TABLE_CONSTRAINTS`
  54. WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'dwd_process_outsource_delivery'
  55. AND `CONSTRAINT_TYPE` = 'CHECK'
  56. AND `CONSTRAINT_NAME` = 'ck_dwd_process_outsource_valid_tenant') = 1
  57. AND (SELECT COUNT(*) FROM information_schema.`COLUMNS`
  58. WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'dwd_process_outsource_delivery'
  59. AND `COLUMN_NAME` IN ('po_no', 'po_line') AND `IS_NULLABLE` = 'YES') = 0
  60. THEN 1 ELSE 0 END AS ok;