Skip to content

fix(mysql): enable window function parsing for data export sql_type#3335

Merged
Seechi-Yolo merged 1 commit into
mainfrom
sqle/feat-2987
Jun 18, 2026
Merged

fix(mysql): enable window function parsing for data export sql_type#3335
Seechi-Yolo merged 1 commit into
mainfrom
sqle/feat-2987

Conversation

@LordofAvernus

@LordofAvernus LordofAvernus commented Jun 18, 2026

Copy link
Copy Markdown
Collaborator

User description

Fixes actiontech/sqle-ee#2987

Summary

  • Enable parser.EnableWindowFunc(true) in MySQL splitter so SELECT with OVER(...) parses as SelectStmt instead of UnparsedStmt
  • Add unit tests for window function DQL classification and SQLE00082 coverage
  • Fixes data export export_sql_type=ddl misclassification blocking workflow submit

Related

Test plan

  • go test -mod=vendor -count=1 -vet=off -run 'TestInspect_assertSQLType|TestInspect_Parse|TestRuleSQLE00082|TestParseWindowFunctionSelect' ./sqle/driver/mysql/... ./sqle/driver/mysql/splitter/...
  • 146 HTTP smoke 3/3 PASS (see sqle-ee#2987 delivery report)

Made with Cursor


Description

  • 启用解析器窗口函数支持

  • 更新 MySQL 相关测试用例

  • 调整 parser 初始化调用 EnableWindowFunc(true)

  • 增加窗口函数解析单元测试验证


Diagram Walkthrough

flowchart LR
  splitter["\"sqle/driver/mysql/splitter/splitter.go\""] -- "启用窗口函数支持" --> mysql_test["\"sqle/driver/mysql/mysql_test.go\""]
  splitter -- "配置解析器" --> splitter_test["\"sqle/driver/mysql/splitter/splitter_test.go\""]
  mysql_test -- "新增窗口函数测试" --> rule_test["\"sqle/driver/mysql/rule_00082_test.go\""]
Loading

File Walkthrough

Relevant files
Enhancement
mysql_test.go
添加窗口函数解析测试                                                                                             

sqle/driver/mysql/mysql_test.go

  • 添加窗口函数查询测试案例
  • 验证窗口函数返回 DQL 类型
+11/-0   
rule_00082_test.go
更新窗口函数规则测试                                                                                             

sqle/driver/mysql/rule_00082_test.go

  • 取消注释窗口函数 filesort 测试用例
  • 确保窗口函数 SQL 规则正确触发
+14/-14 
splitter.go
修改窗口函数支持的解析器配置                                                                                     

sqle/driver/mysql/splitter/splitter.go

  • 调整 parser 初始化逻辑
  • 调用 EnableWindowFunc(true) 启用窗口函数支持
+3/-1     
Tests
splitter_test.go
添加窗口函数解析单元测试                                                                                         

sqle/driver/mysql/splitter/splitter_test.go

  • 新增 TestParseWindowFunctionSelect 函数
  • 验证窗口函数查询返回 SelectStmt 类型
+18/-0   

Enable pingcap parser window function syntax in SQL splitter so SELECT
statements containing OVER(...) parse as SelectStmt instead of
UnparsedStmt, fixing export_sql_type misclassified as ddl.
@github-actions

Copy link
Copy Markdown

PR Reviewer Guide 🔍

🎫 Ticket compliance analysis 🔶

2987 - Partially compliant

Compliant requirements:

• 在 splitter.go 中通过调用 EnableWindowFunc(true) 启用了窗口函数支持
• 在 mysql_test.go、rule_00082_test.go 和 splitter_test.go 中新增了针对窗口函数解析的单元测试
• 修正了数据导出时 SQL 类型 misclassification 的问题

Non-compliant requirements:

Requires further human verification:

⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
🧪 PR contains tests
🔒 No security concerns identified
⚡ No major issues detected

@github-actions

Copy link
Copy Markdown

PR Code Suggestions ✨

No code suggestions found for the PR.

@Seechi-Yolo Seechi-Yolo merged commit 5f0f1b1 into main Jun 18, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants