SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;

USE hyapp_lucky_gift;

-- 性能边界：lucky_user_states 是热状态表，本迁移只添加一个常量默认列并强制
-- ALGORITHM=INSTANT。若目标 MySQL 不支持即时 DDL 就直接失败，绝不退化成 COPY；
-- 上线前仍需检查长事务，避免短暂 MDL 等待。迁移不扫描、不更新历史用户行。
-- 历史 pending_jackpot_tokens 保持原值，业务在该用户下一次付费抽奖事务内按主键惰性清零，
-- 且从不把旧值复制到新列，因此停用期间的资格和消费都不会被追溯补发。
SET @ddl := IF(
  (SELECT COUNT(*) FROM information_schema.COLUMNS
   WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'lucky_user_states'
     AND COLUMN_NAME = 'pending_spend_jackpot_tokens') = 0,
  'ALTER TABLE lucky_user_states ADD COLUMN pending_spend_jackpot_tokens BIGINT NOT NULL DEFAULT 0 COMMENT ''新版累计消费大奖资格；受阻时跨轮次和UTC日保留，成功开奖仅扣1'' AFTER pending_jackpot_tokens, ALGORITHM=INSTANT',
  'SELECT 1'
);
PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
