| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- -- ============================================================================
- -- 1.0.554.verify.sql · R2-A 执行后校验
- -- 返回单列 ok:1 = 全部断言通过,0 = 任一失败。
- --
- -- V1 inbound_enabled = tinyint / NOT NULL / DEFAULT 0
- -- V2 inbound_max_rows = int / NOT NULL / DEFAULT 500
- -- V3 stale_guard_enabled = tinyint / NOT NULL / DEFAULT 1
- -- V4 三列无 NULL(NOT NULL 语义未被削弱)
- -- V5 值域合法:inbound_enabled / stale_guard_enabled ∈ {0,1}
- -- V6 drift 计数为 0(与 migration 同口径,NULL-safe <=>)
- -- V7 uk_inbound_grant 仍存在且列序正确(1.0.553 产物,本批只读回归)
- -- V8 R2-B 对象未被本批触碰(列数守恒)
- -- V9 P0 对象未被触碰(UK 列序 / CHECK / po_no·po_line NOT NULL)
- -- V10 mdp_entity 仍有行(ALTER 未清空表)
- --
- -- 注:不比对 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` = 'tinyint' AND `IS_NULLABLE` = 'NO'
- AND `COLUMN_DEFAULT` <=> '0') = 1
- -- V2 · inbound_max_rows(类型本就是 int,本批只补 DEFAULT)
- 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
- -- V3 · 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` = 'tinyint' AND `IS_NULLABLE` = 'NO'
- AND `COLUMN_DEFAULT` <=> '1') = 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` WHERE `inbound_enabled` NOT IN (0, 1)) = 0
- AND (SELECT COUNT(*) FROM `mdp_entity` WHERE `stale_guard_enabled` NOT IN (0, 1)) = 0
- -- V6 · drift 归零(与 migration Step 1/3 同口径)
- AND (SELECT COUNT(*) FROM information_schema.`COLUMNS`
- WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'mdp_entity' AND (
- (`COLUMN_NAME` = 'inbound_enabled'
- AND NOT (`COLUMN_TYPE` = 'tinyint' AND `IS_NULLABLE` = 'NO' AND `COLUMN_DEFAULT` <=> '0'))
- OR (`COLUMN_NAME` = 'inbound_max_rows'
- AND NOT (`COLUMN_TYPE` = 'int' AND `IS_NULLABLE` = 'NO' AND `COLUMN_DEFAULT` <=> '500'))
- OR (`COLUMN_NAME` = 'stale_guard_enabled'
- AND NOT (`COLUMN_TYPE` = 'tinyint' AND `IS_NULLABLE` = 'NO' AND `COLUMN_DEFAULT` <=> '1'))
- )) = 0
- -- V7 · uk_inbound_grant 回归(1.0.553 产物;NON_UNIQUE=0 数的是索引列数=2)
- AND (SELECT COUNT(*) FROM information_schema.`STATISTICS`
- WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'mdp_inbound_grant'
- AND `INDEX_NAME` = 'uk_inbound_grant' AND `NON_UNIQUE` = 0) = 2
- AND (SELECT GROUP_CONCAT(`COLUMN_NAME` ORDER BY `SEQ_IN_INDEX` SEPARATOR ',')
- FROM information_schema.`STATISTICS`
- WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'mdp_inbound_grant'
- AND `INDEX_NAME` = 'uk_inbound_grant') = 'access_key,entity_code'
- -- V8 · R2-B 对象未被触碰(列数守恒,取自审计基线)
- AND (SELECT COUNT(*) FROM information_schema.`COLUMNS`
- WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'mdp_inbound_grant') = 13
- AND (SELECT COUNT(*) FROM information_schema.`COLUMNS`
- WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'mdp_inbound_request') = 21
- AND (SELECT COUNT(*) FROM information_schema.`COLUMNS`
- WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'mdp_inbound_envelope') = 10
- AND (SELECT COUNT(*) FROM information_schema.`COLUMNS`
- WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'mdp_field_map') = 10
- -- V9 · 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
- -- V10 · mdp_entity 仍有行(ALTER 未清空表)
- AND (SELECT COUNT(*) FROM `mdp_entity`) > 0
- THEN 1 ELSE 0 END AS ok;
|