sqle
sqle copied to clipboard
feat:support using SQL files to execute SQL
关联的 issue
https://github.com/actiontech/sqle-ee/issues/1468
描述你的变更
新增功能:
- 支持使用SQL文件执行SQL,模拟数据库客户端执行SQL文件的行为
- 前提条件:选择数据源时,数据源对应的插件支持执行SQL文件
修改表结构:
- tasks表增加字段exec_mode,用于存储执行sql的模式,在执行SQL时用于判断执行模式
- workflows表增加字段exec_mode,用于存储工单中文件执行的模式,前端表现层获取
- audit_files表增加字段exec_order,用于记录文件执行的顺序
- audit_files表增加字段parent_id,用于记录文件之间的层级关系
修改http接口:
- 创建审核任务接口,增加字段exec_mode,用于记录sql执行的方式
- 获取审核任务接口,字段sql_source增加枚举值zip_file,git_repository,用于区分工单是否上传的zip文件,若是,在驳回的时候,需要重新上传zip文件。
- 获取工单信息接口,增加返回字段exec_mode,因为文件执行的细粒度/层级,在SQL工单上,一个SQL工单的上线方式只有一种(sql或sql文件)。
更新了swagger文档
确认项(pr提交后操作)
[!TIP] 请在指定复审人之前,确认并完成以下事项,完成后✅
- [x] 我已完成自测(在issue里补充了测试方式)
- [x] 我已在关联的issue里补充了实现方案
- [x] 我已在关联的issue里补充了测试影响面
- [x] 我已确认了变更的兼容性,如果不兼容则在issue里标记
not_compatible
- [x] 我已确认了是否要更新文档,如果要更新则在issue里标记
need_update_doc
(在issue里补充需要更新的文档)
fix: batch create file instead of save
多数据源相同SQL的时候,会创建多个task,文件记录应该创建多个,和task对应,在执行的时候,才能获取到task对应的文件记录
fix: when execute sql file in different sql mode, can not find file
当选择不同SQL模式创建工单的时候,会调用接口:/v1/projects/{project_name}/tasks/audits [post]
应该在该接口中保存文件信息,否则在执行的时候会因为找不到文件而执行失败
refactor: execute sqls in the order of id and file
修改了执行文件的逻辑,整理了代码
- 根据文件顺序执行SQL
- 文件中根据SQL的id执行SQL,以batchId对sql进行分组,连续相同batchId的SQL为一组