sqle icon indicating copy to clipboard operation
sqle copied to clipboard

feat:support using SQL files to execute SQL

Open winfredLIN opened this issue 10 months ago • 3 comments

关联的 issue

https://github.com/actiontech/sqle-ee/issues/1468

描述你的变更

新增功能:

  1. 支持使用SQL文件执行SQL,模拟数据库客户端执行SQL文件的行为
  2. 前提条件:选择数据源时,数据源对应的插件支持执行SQL文件

修改表结构:

  1. tasks表增加字段exec_mode,用于存储执行sql的模式,在执行SQL时用于判断执行模式
  2. workflows表增加字段exec_mode,用于存储工单中文件执行的模式,前端表现层获取
  3. audit_files表增加字段exec_order,用于记录文件执行的顺序
  4. audit_files表增加字段parent_id,用于记录文件之间的层级关系

修改http接口:

  1. 创建审核任务接口,增加字段exec_mode,用于记录sql执行的方式
  2. 获取审核任务接口,字段sql_source增加枚举值zip_file,git_repository,用于区分工单是否上传的zip文件,若是,在驳回的时候,需要重新上传zip文件。
  3. 获取工单信息接口,增加返回字段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里补充需要更新的文档)

winfredLIN avatar Apr 23 '24 11:04 winfredLIN

fix: batch create file instead of save

多数据源相同SQL的时候,会创建多个task,文件记录应该创建多个,和task对应,在执行的时候,才能获取到task对应的文件记录

winfredLIN avatar Apr 24 '24 08:04 winfredLIN

fix: when execute sql file in different sql mode, can not find file

当选择不同SQL模式创建工单的时候,会调用接口:/v1/projects/{project_name}/tasks/audits [post] 应该在该接口中保存文件信息,否则在执行的时候会因为找不到文件而执行失败

winfredLIN avatar Apr 25 '24 05:04 winfredLIN

refactor: execute sqls in the order of id and file

修改了执行文件的逻辑,整理了代码

  1. 根据文件顺序执行SQL
  2. 文件中根据SQL的id执行SQL,以batchId对sql进行分组,连续相同batchId的SQL为一组

winfredLIN avatar Apr 25 '24 05:04 winfredLIN