本文档描述了为 IoTDB Table SQL 解析器创建的测试用例结构,参考了 Trino 解析器的测试模式。
test/parser/iotdb-table/
├── lexer.test.ts # 词法分析器测试
├── visitor.test.ts # 访问者模式测试
├── listener.test.ts # 监听器模式测试
├── errorListener.test.ts # 错误监听器测试
├── errorStrategy.test.ts # 错误恢复策略测试
├── validateInvalidSql.test.ts # 无效SQL验证测试
└── syntax/ # 语法测试目录
├── selectStatement.test.ts # SELECT语句测试
├── insertStatement.test.ts # INSERT语句测试
├── updateStatement.test.ts # UPDATE语句测试
├── deleteStatement.test.ts # DELETE语句测试
├── createStatement.test.ts # CREATE语句测试
├── dropStatement.test.ts # DROP语句测试
├── alterStatement.test.ts # ALTER语句测试
├── showStatement.test.ts # SHOW语句测试
├── iotdbSpecific.test.ts # IoTDB特有功能测试
└── fixtures/ # 测试用SQL文件
├── select.sql
├── insert.sql
└── create.sql
- lexer.test.ts: 测试词法分析器的token解析能力
- visitor.test.ts: 测试访问者模式的AST遍历功能
- listener.test.ts: 测试监听器模式的事件处理
- errorListener.test.ts: 测试错误处理和报告机制
- errorStrategy.test.ts: 测试错误恢复策略
- validateInvalidSql.test.ts: 测试无效SQL的验证
- 基础SELECT查询
- 聚合函数查询
- 子查询
- 时间范围查询(IoTDB特色)
- VALUES插入
- SELECT插入
- 时间戳插入(IoTDB特色)
- 基础UPDATE操作
- 带子查询的UPDATE
- 基础DELETE操作
- 带子查询的DELETE
- CREATE TABLE
- CREATE DATABASE
- DROP TABLE
- DROP DATABASE
- 列操作
- 表重命名
- SHOW TABLES
- SHOW DATABASES
- DESCRIBE
- 时序数据查询
- 聚合查询
- 基础CRUD操作
- 参考Trino结构: 保持与项目中Trino测试用例相同的结构和命名约定
- 适配IoTDB语法: 针对IoTDB Table的实际语法支持进行调整
- 渐进式测试: 从基础语法到复杂查询,层层递进
- 错误处理: 确保错误情况得到正确处理
- 实用性: 测试用例反映真实使用场景
# 运行所有IoTDB Table测试
npm test -- test/parser/iotdb-table/
# 运行特定测试
npm test -- test/parser/iotdb-table/lexer.test.ts
# 运行语法测试
npm test -- test/parser/iotdb-table/syntax/- ✅ 核心解析器测试 (lexer, visitor, errorListener, validateInvalidSql)
- ✅ SELECT语句测试
- ✅ 基础CRUD操作测试
⚠️ 高级语法特性(部分支持,根据IoTDB Table实际语法能力)
- IoTDB Table解析器的语法支持与标准SQL有所不同
- 某些高级SQL特性(如复杂的JOIN、存储过程等)可能不被支持
- 测试用例已经针对IoTDB Table的实际能力进行了调整
- 建议在添加新的测试用例时,先验证语法是否被IoTDB Table支持
- 添加更多IoTDB特有的时序数据处理功能测试
- 增加性能测试用例
- 添加集成测试
- 增加更多边界条件测试