diff --git a/migrations/045_wheel_limits_probability_retry.sql b/migrations/045_wheel_limits_probability_retry.sql index 5e5a077..d53f8d6 100644 --- a/migrations/045_wheel_limits_probability_retry.sql +++ b/migrations/045_wheel_limits_probability_retry.sql @@ -84,13 +84,27 @@ PREPARE add_wheel_draw_grant_time_stmt FROM @add_wheel_draw_grant_time_sql; EXECUTE add_wheel_draw_grant_time_stmt; DEALLOCATE PREPARE add_wheel_draw_grant_time_stmt; +SET @wheel_draw_reward_user_idx_columns := ( + SELECT GROUP_CONCAT(column_name ORDER BY seq_in_index) + FROM information_schema.statistics + WHERE table_schema = @current_schema + AND table_name = 'wheel_draw_record' + AND index_name = 'idx_wheel_draw_reward_user' +); + +SET @drop_wheel_draw_reward_user_idx_sql := IF( + @wheel_draw_reward_user_idx_columns IS NOT NULL + AND @wheel_draw_reward_user_idx_columns <> 'reward_config_id,user_id,status', + 'ALTER TABLE `wheel_draw_record` DROP INDEX `idx_wheel_draw_reward_user`', + 'SELECT 1' +); +PREPARE drop_wheel_draw_reward_user_idx_stmt FROM @drop_wheel_draw_reward_user_idx_sql; +EXECUTE drop_wheel_draw_reward_user_idx_stmt; +DEALLOCATE PREPARE drop_wheel_draw_reward_user_idx_stmt; + SET @add_wheel_draw_reward_user_idx_sql := IF( - NOT EXISTS ( - SELECT 1 FROM information_schema.statistics - WHERE table_schema = @current_schema - AND table_name = 'wheel_draw_record' - AND index_name = 'idx_wheel_draw_reward_user' - ), + @wheel_draw_reward_user_idx_columns IS NULL + OR @wheel_draw_reward_user_idx_columns <> 'reward_config_id,user_id,status', 'ALTER TABLE `wheel_draw_record` ADD INDEX `idx_wheel_draw_reward_user` (`reward_config_id`, `user_id`, `status`)', 'SELECT 1' );