用途:对 ClickHouse SQL 语句进行静态语法与开发规范检查,可在执行前发现语法错误、版本兼容问题和规范违规,适用于 MRS ClickHouse 开发、评审与上线前校验。
主要能力:采用分词器→解析器→规则引擎→报告生成三阶段流水线;内置自建 ClickHouse SQL 分词与语句识别,覆盖 DML、DDL、DCL、TCL 及 EXPLAIN、SHOW、SYSTEM、BACKUP 等语句,支持 ENGINE、ORDER BY、PARTITION BY、SAMPLE BY、TTL、ARRAY JOIN、PREWHERE、GLOBAL JOIN、ASOF JOIN、FINAL 等 ClickHouse 专有语法。版本规则存于 rules/v{version}/,含 24.8(571 关键字/52 token/47 语句)、23.3(462/49/47)、22.3(422/48/46),语法规则来自内核源码。
检查模式:syntax 仅语法(SYN-ERR、SYN001-SYN015);spec 仅规范(SPEC001-SPEC035,来自 MRS 开发规范);all 同时执行,默认 syntax。规范规则覆盖引擎选择、字段类型、排序键、TTL、物化视图命名与建表、分布式 JOIN、SELECT *、IN 列数匹配等。
使用方式:需 Python >= 3.8,仅用标准库,无需集群连接、KooCLI 或 clickhouse-client。首次会话需通过 AskUserQuestion 选择版本与模式,同会话内复用。命令示例:python ~/.cac/skills/huawei-cloud-mrs-clickhouse-sql-check/scripts/ck_sql_checker.py "<sql_text>" all 24.8;分词调试用 ck_sql_tokenizer.py,解析调试用 ck_sql_parser.py。也提供 Python API:from ck_sql_checker import check_sql_markdown。
限制:仅做静态分析,不连接集群、不发送数据、无需凭据;版本与模式必须由用户指定或按会话选择,无默认版本;输出要求以表格呈现违规明细、汇总与修复建议。