| 12345678910111213141516171819202122232425 |
- -- 1.0.589 部署后断言。表尚未建成时放行(首次建库场景)。
- -- 要求同时成立:
- -- ① 指派表存在且最多一行 —— 「最多一台执行机」这条不变式的结构保证没有被破坏。
- -- ② ado_etl_instance 有 slot_code 列 —— 槽位判定链不会因缺列而静默退化为「谁都不是执行机」。
- -- ③ 若已有指派,则不存在「指派了一个没有任何实例行声明过的槽位」这种拼错情况
- -- (只查是否有实例行用过该槽位,不要求此刻存活 —— 指派先于部署是合法用法)。
- SELECT
- (SELECT COUNT(*) FROM information_schema.TABLES
- WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ado_etl_instance') = 0
- OR (
- (SELECT COUNT(*) FROM information_schema.TABLES
- WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ado_etl_runner_designation') = 1
- AND (SELECT COUNT(*) FROM ado_etl_runner_designation) <= 1
- AND (SELECT COUNT(*) FROM information_schema.COLUMNS
- WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ado_etl_instance'
- AND COLUMN_NAME='slot_code') = 1
- AND (
- (SELECT COUNT(*) FROM ado_etl_runner_designation
- WHERE IFNULL(slot_code,'') <> '') = 0
- OR EXISTS (
- SELECT 1 FROM ado_etl_instance i
- WHERE i.slot_code = (SELECT slot_code FROM ado_etl_runner_designation WHERE id = 1)
- )
- )
- );
|