| 1234567891011121314151617181920212223242526272829303132333435363738 |
- -- S8-DATASET-PROVIDER-FOUNDATION-1 · Rule 取数模式扩展(幂等)
- --
- -- 目的:为 ado_s8_watch_rule 增加 data_access_mode / dataset_code 两列,
- -- 使规则可以从"自带 SQL"逐步过渡到"引用标准数据集"。
- --
- -- 兼容性硬约束(本脚本刻意不做的事):
- -- · 两列均 NULL 允许,不设默认值 —— 132 条历史规则保持 NULL,
- -- 运行期由 S8DataAccessMode.Resolve(NULL) 解析为 LEGACY_SQL,行为完全不变;
- -- · 不回填任何历史行;
- -- · 不修改 enabled;
- -- · 不修改 expression / params_json / data_source_id;
- -- · 不新增索引(当前无按取数模式检索的查询)。
- --
- -- 重跑安全:列存在时跳过。
- -- ============ ① data_access_mode ============
- SET @exist := (SELECT COUNT(*) FROM information_schema.COLUMNS
- WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ado_s8_watch_rule' AND COLUMN_NAME='data_access_mode');
- SET @sql := IF(@exist=0,
- 'ALTER TABLE ado_s8_watch_rule ADD COLUMN data_access_mode VARCHAR(32) NULL COMMENT ''取数模式 LEGACY_SQL/STANDARD_DATASET;NULL 按 LEGACY_SQL 处理''',
- 'SELECT 1');
- PREPARE s FROM @sql; EXECUTE s; DEALLOCATE PREPARE s;
- -- ============ ② dataset_code ============
- SET @exist := (SELECT COUNT(*) FROM information_schema.COLUMNS
- WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ado_s8_watch_rule' AND COLUMN_NAME='dataset_code');
- SET @sql := IF(@exist=0,
- 'ALTER TABLE ado_s8_watch_rule ADD COLUMN dataset_code VARCHAR(64) NULL COMMENT ''标准数据集编码;仅 STANDARD_DATASET 模式使用''',
- 'SELECT 1');
- PREPARE s FROM @sql; EXECUTE s; DEALLOCATE PREPARE s;
- -- ============ ③ 验证(不改数据,仅回显)============
- -- 期望:两列存在;历史规则两列全部为 NULL(即全部继续走 LEGACY_SQL)。
- SELECT
- COUNT(*) AS total_rules,
- SUM(CASE WHEN data_access_mode IS NULL THEN 1 ELSE 0 END) AS legacy_by_null,
- SUM(CASE WHEN dataset_code IS NULL THEN 1 ELSE 0 END) AS dataset_code_null
- FROM ado_s8_watch_rule;
|