1.0.304.sql 1.2 KB

1234567891011121314151617181920212223242526
  1. -- 1.0.304:WP10 S4b / D12 — Outbox 退避列 + 待推索引
  2. -- 退避序列:1m,5m,15m,30m,60m,120m;MaxRetry=6;告警=LogWarning+SysNotice
  3. -- 幂等:ADD COLUMN / INDEX 前用 information_schema 判存在。
  4. SET @ddl := (SELECT IF(
  5. EXISTS(SELECT 1 FROM information_schema.COLUMNS
  6. WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='mdp_outbox' AND COLUMN_NAME='next_retry_time'),
  7. 'SELECT 1',
  8. 'ALTER TABLE mdp_outbox ADD COLUMN next_retry_time datetime NULL'));
  9. PREPARE s FROM @ddl; EXECUTE s; DEALLOCATE PREPARE s;
  10. SET @ddl := (SELECT IF(
  11. EXISTS(SELECT 1 FROM information_schema.COLUMNS
  12. WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='mdp_outbox' AND COLUMN_NAME='last_error_code'),
  13. 'SELECT 1',
  14. 'ALTER TABLE mdp_outbox ADD COLUMN last_error_code varchar(64) NULL'));
  15. PREPARE s FROM @ddl; EXECUTE s; DEALLOCATE PREPARE s;
  16. SET @idx_exists := (
  17. SELECT COUNT(1) FROM information_schema.statistics
  18. WHERE table_schema = DATABASE() AND table_name='mdp_outbox' AND index_name='ix_mdp_outbox_pending'
  19. );
  20. SET @sql := IF(@idx_exists=0,
  21. 'CREATE INDEX ix_mdp_outbox_pending ON mdp_outbox(status, next_retry_time, id)',
  22. 'SELECT 1');
  23. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;