
【免费下载链接】polyglotRust/Wasm-powered SQL transpiler for more than 30 SQL dialects项目地址https://gitcode.com/gh_mirrors/polyglot34/polyglot点击查看免费下载Polyglot 是一个基于 Rust/Wasm 的 SQL 转译器SQL transpiler可在 30 种 SQL 方言之间互相转换比如把 MySQL 的IFNULL转成 PostgreSQL 的COALESCE。它最硬核的地方是背后那套覆盖数十万级用例的测试体系从 sqlglot 自动提取的 fixture、6 层转译测试矩阵、known-failures 白名单机制到三个 cargo-fuzz 模糊测试目标共同保证100% 通过不是口号而是可复现的工程实践。用例从哪里来一条命令提取 sqlglot 整个测试集很多人以为测试用例是手写出来的Polyglot 的做法更聪明用脚本直接从 sqlglot 的 Python 测试文件里挖用例。提取脚本 tools/sqlglot-extract/extract-tests.py 会解析 sqlglot 源码的 AST把其中的validate_identity()、validate_all()、self.validate()等调用全部转换成 JSON fixture落到 crates/polyglot-sql/tests/ 目录下。配合 Makefile 里固定版本的 sqlglotSQLGLOT_REF : v30.14.0整个流程就是一条命令make extract-all-fixtures它还会顺带把 ClickHouse 官方测试仓库里 sparse checkout 出来的 stateless 测试转成 crates/polyglot-sql/tests/custom_fixtures/ 下的方言 fixture。这意味着上游 sqlglot 每新增一条用例Polyglot 几乎零成本地继承了它。6 层 fixture 测试矩阵identity、dialect、transpile、pretty、parser、custom提取出来的用例并不是堆在一起跑的crates/polyglot-sql/tests/common/test_runner.rs 把校验逻辑拆成了 6 种测试类型每种类型对应一个独立的集成测试文件测试层测试目标入口文件Identity恒等回环解析后重新生成输出必须与原 SQL 完全一致sqlglot_identity.rsDialect Identity指定方言下解析方言变换生成校验方言特性sqlglot_dialect_identity.rsTranspilation跨方言转译源方言 → 目标方言输出必须等于预期sqlglot_transpilation.rsPretty格式化pretty-print 输出逐字符比对sqlglot_pretty.rsParser含错误路径正常解析 应当报错的用例必须报错sqlglot_parser.rsCustom Dialect自动发现custom_fixtures/下所有方言目录custom_dialect_tests.rs几个细节很能说明工程质量transpile_test()会先扫描预期输出里的换行符还要跳过字符串字面量和注释自动决定走 pretty 还是紧凑生成避免格式差异造成的假失败针对 T-SQL 的布尔值语义、ClickHouse 的小写关键字等方言特殊行为测试运行器内置了精确的适配逻辑深嵌套 SQL 用例会专门开 16MB 栈的独立线程跑见 analyze_failures.rs防止栈溢出污染其他用例。100% 通过的秘密known-failures 白名单机制如果 14 万条用例有一条挂掉就红那测试体系迟早变成狼来了。Polyglot 的答案是 crates/polyglot-sql/tests/common/known_failures.rs 里的TestResults追踪器每条失败用例先查白名单白名单里的失败被标记为 Known failure不阻塞整体结果白名单必须逐条登记不允许按方言整包跳过每条都要写明 issue 编号、语义差异原因和验证方式例如 #479 记录了 BigQueryNUMERIC精度收窄到 DuckDB 的行为差异并说明已在真实 DuckDB 1.5.5 里执行验证自动发现新通过用例如果某个 known failure 哪天通过了结果里会输出New passes提醒开发者把它从白名单里摘掉——白名单只会越用越小新失败自动分类categorize_error()把 Mismatch、Unexpected token、Tokenization error 等归入不同类别并输出统计表定位问题一眼到位。这套机制让100% 通过有了严格定义除逐条登记、逐条验证、且都有 issue 追踪的已知差异外其余用例全部通过。方言矩阵 回归套件把修好的 bug钉死在测试里除了 fixturecrates/polyglot-sql/tests/dialect_matrix.rs 对 7 个核心方言Generic、PostgreSQL、MySQL、BigQuery、Snowflake、DuckDB、TSQL做全排列——42 个方言对——每个方向都验证函数名、语法形态的转换是否正确。tests/目录下还有大量以具体 bug命名的回归文件命名即文档tsql_regression.rs、fabric_tpch_regression.rsT-SQL 与 Fabric含 TPC-H 完整负载clickhouse_regression.rsClickHouse 解析回归deep_nesting_regression.rs深嵌套表达式的栈安全transform_regression.rsAST 变换迭代正确性每个历史 bug 都有对应的钉子防止二次回归。Fuzzing 实战三个目标守住永不 panic底线确定性测试能覆盖想得到的输入fuzzing 负责覆盖想不到的输入。crates/polyglot-sql/fuzz/ 下用cargo-fuzz定义了三个目标Fuzz 目标输入校验什么fuzz_parser.rs任意字节串合法 UTF-8 时6 种方言下解析器永不 panic非法输入只允许返回错误fuzz_roundtrip.rs同上parse → generate → 再 parse 的完整回环不崩溃fuzz_transpile.rsarbitrary派生结构SQL 随机源/目标方言随机方言对之间的转译调用永不 panic这三个目标的选择非常克制且有针对性fuzzing 的目标不是找到更多功能差异而是守住内存安全与栈安全这条底线——SQL 解析器处理的是不可信外部输入任何输入都不能 panic是对外部 APIWASM SDK、FFI、Python 绑定最重要的承诺。一键验证Makefile 里的完整测试流水线整个体系通过 Makefile 收口成几条常用命令本地和 CI 用同一套配方make test-rust # 快速跑 sqlglot 兼容测试 make test-rust-verify # 本地全量验证单测 全部 fixture FFI make test-rust-ci-core # CI 核心套件 make test-rust-ci-feature-gates # 逐一验证 Cargo feature 组合30 种开关 make validate # 提交前完整校验值得一提的是test-rust-ci-feature-gatesPolyglot 的每个方言、每项能力transpile、builder、semantic、openlineage…都是独立 Cargo feature这条目标会把几十种 feature 组合逐一cargo check防止 feature 统一性掩盖依赖问题。给新手的三条可复用的经验用例可以继承但必须固定基准版本——把上游项目的测试集作为基准并 pin 住版本SQLGLOT_REF : v30.14.0差异才可追溯失败要白名单化 逐条登记 可自动发现修复100% 通过才有工程意义fuzzing 目标要小而准不追求覆盖率数字而是锁定永不 panic这类可证伪的底线承诺。想进一步阅读crates/polyglot-sql/tests/ 全部集成测试、crates/polyglot-sql/fuzz/ 模糊测试目标、tools/sqlglot-compare/known-differences.json 差异豁免配置以及 crates/polyglot-sql/README.md 中的能力说明。赞分享【免费下载链接】polyglotRust/Wasm-powered SQL transpiler for more than 30 SQL dialects项目地址https://gitcode.com/gh_mirrors/polyglot34/polyglot点击查看免费下载相关推荐SQL转译幕后揭秘Polyglot如何把MySQL语法无损翻译成PostgreSQLSQL转译幕后揭秘Polyglot如何把MySQL语法无损翻译成PostgreSQL Polyglot 是一个用 Rust 实现的高性能 SQL 转译器SQSocketRocket Autobahn测试300用例通过实战SocketRocket Autobahn测试300用例通过实战 WebSocket协议实现的兼容性验证一直是移动开发中的隐形痛点。当你还在为不同服务器环境网络通信Mermaid CLI Agent 测试体系全解析从测试计划到 100% 通过率的实践验证Mermaid CLI Agent 测试体系全解析从测试计划到 100% 通过率的实践验证 导读 TEST.md https://link.gitcode.c人工智能AI AgentAI 技能/插件CLI工具调用上一篇QuickRecorder7种录制模式的macOS屏幕录制终极指南下一篇JujutsujjGit 专家实战指南同仓共置、提交式暂存区与操作日志驱动的六类工作流升级创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考