Skip to main content

Module sql_verify

Module sql_verify 

Source
Expand description

proc-macro 编译期 SQL 验证模块

扩展 v3.5.0 既有 query! 宏的 db-verify 能力到 QueryBuilder 生态。 通过 sqlparser 在编译期解析 SQL 字符串,校验:

  • SQL 语法正确性
  • 表/列存在性(连真 DB 执行 EXPLAIN,仅查询不修改)
  • 类型匹配

§启用方式

export DATABASE_URL="mysql://root:test123@127.0.0.1:3306/sz_orm_test"
export SZ_ORM_QUERY_VERIFY=1
cargo build --features sql-verify-proc

§降级模式

DATABASE_URL 未设置或 SZ_ORM_QUERY_VERIFY 未启用时,自动回退到仅语法校验, 输出降级警告 warning: sql-verify-proc degraded to syntax-only

§覆盖路径

覆盖所有 QueryBuilder 路径:

  • SELECT/INSERT/UPDATE/DELETE 基础路径
  • JOIN(INNER/LEFT/RIGHT/FULL)
  • 子查询(WHERE/SELECT/FROM)
  • CTE(WITH/WITH RECURSIVE)
  • 窗口函数(OVER/PARTITION BY/FRAME)

Structs§

VerifyResult
SQL 验证结果

Enums§

SqlPath
SQL 语句路径分类(覆盖所有 QueryBuilder 路径)
VerifyDialect
SQL 方言枚举(用于选择解析器方言)
VerifyMode
验证模式

Functions§

build_explain_sql
为指定方言构造 EXPLAIN SQL
check_path_coverage
验证 SQL 路径覆盖度
classify_sql_path
识别 SQL 语句的路径分类
current_verify_mode
获取当前验证模式
is_db_verify_enabled
检查是否启用连真 DB 验证
is_read_only
验证 SQL 是否为只读查询(SELECT/EXPLAIN,不包含 INSERT/UPDATE/DELETE/DROP 等)
sql_hash
计算 SQL 的哈希值(用于缓存键)
verify_degraded
降级模式验证(仅语法校验,输出降级警告)
verify_full
完整验证(语法 + 路径分类 + EXPLAIN 构造)
verify_smart
智能验证调度
verify_sql_syntax
编译期 SQL 语法验证(不连 DB)