1.0.589.verify.sql 1.4 KB

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