-- 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) ) ) );