| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- -- ============================================================================
- -- 1.0.555.verify.sql · R2-A2 执行后校验(返回单列 ok:1=全通过)
- --
- -- V1 inbound_enabled = INT / NOT NULL / DEFAULT 0
- -- V2 stale_guard_enabled = INT / NOT NULL / DEFAULT 1
- -- V3 inbound_max_rows = INT / NOT NULL / DEFAULT 500(本批不改,只断言)
- -- V4 三列 NULL 计数 = 0
- -- V5 mdp_entity 仍有行
- -- V6 1.0.554 历史未被改动(status/verify/hash 原样)
- -- V7 P0 未被触碰(UK 列序 / CHECK / po_no·po_line NOT NULL)
- --
- -- 注:类型断言为 INT 而非 TINYINT —— 本批刻意保持与实体声明一致,
- -- 否则 CodeFirst 会重写该列并连带抹掉 DEFAULT(1.0.554 已实证)。
- -- INT vs 契约 TINYINT 的类型漂移留 R2-B。
- -- 注:不比对 COLUMN_COMMENT,避免与 CodeFirst 的注释同步互踩。
- -- ============================================================================
- SELECT CASE WHEN
- -- V1 · inbound_enabled
- (SELECT COUNT(*) FROM information_schema.`COLUMNS`
- WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'mdp_entity'
- AND `COLUMN_NAME` = 'inbound_enabled'
- AND `COLUMN_TYPE` = 'int' AND `IS_NULLABLE` = 'NO'
- AND `COLUMN_DEFAULT` <=> '0') = 1
- -- V2 · stale_guard_enabled
- AND (SELECT COUNT(*) FROM information_schema.`COLUMNS`
- WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'mdp_entity'
- AND `COLUMN_NAME` = 'stale_guard_enabled'
- AND `COLUMN_TYPE` = 'int' AND `IS_NULLABLE` = 'NO'
- AND `COLUMN_DEFAULT` <=> '1') = 1
- -- V3 · inbound_max_rows(1.0.554 产物,本批只读断言)
- AND (SELECT COUNT(*) FROM information_schema.`COLUMNS`
- WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'mdp_entity'
- AND `COLUMN_NAME` = 'inbound_max_rows'
- AND `COLUMN_TYPE` = 'int' AND `IS_NULLABLE` = 'NO'
- AND `COLUMN_DEFAULT` <=> '500') = 1
- -- V4 · 三列无 NULL
- AND (SELECT COUNT(*) FROM `mdp_entity`
- WHERE `inbound_enabled` IS NULL
- OR `inbound_max_rows` IS NULL
- OR `stale_guard_enabled` IS NULL) = 0
- -- V5 · 表非空
- AND (SELECT COUNT(*) FROM `mdp_entity`) > 0
- -- V6 · 1.0.554 历史未被改动
- AND (SELECT COUNT(*) FROM `sys_db_migration_log`
- WHERE `version` = '1.0.554'
- AND `status` = 'Success' AND `verify_status` = 'Success'
- AND UPPER(`file_hash`) = '04F0C650DCC5F8D36F7A5ACED5346C420BF967AA2493E7261FEA311E381EEB68') = 1
- -- V7 · P0 未被触碰
- AND (SELECT GROUP_CONCAT(`COLUMN_NAME` ORDER BY `SEQ_IN_INDEX` SEPARATOR ',')
- FROM information_schema.`STATISTICS`
- WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'dwd_process_outsource_delivery'
- AND `INDEX_NAME` = 'uk_po_line_stat') = 'tenant_id,factory_id,stat_date,po_no,po_line'
- AND (SELECT COUNT(*) FROM information_schema.`TABLE_CONSTRAINTS`
- WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'dwd_process_outsource_delivery'
- AND `CONSTRAINT_TYPE` = 'CHECK'
- AND `CONSTRAINT_NAME` = 'ck_dwd_process_outsource_valid_tenant') = 1
- AND (SELECT COUNT(*) FROM information_schema.`COLUMNS`
- WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'dwd_process_outsource_delivery'
- AND `COLUMN_NAME` IN ('po_no', 'po_line') AND `IS_NULLABLE` = 'YES') = 0
- THEN 1 ELSE 0 END AS ok;
|