Skip to content

Commit e4a6388

Browse files
jiangwwweijiangwei
andauthored
[Fix-4191][Fix-4288] fix jar sqlstatement split (#4292)
Co-authored-by: jiangwei <jiangwei@szfiu.com> Co-authored-by: jiangwwwei <jiangwwwei@users.noreply.github.com>
1 parent 18111de commit e4a6388

5 files changed

Lines changed: 887 additions & 18 deletions

File tree

dinky-admin/src/main/java/org/dinky/controller/TaskController.java

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
package org.dinky.controller;
2121

22+
import org.dinky.assertion.Asserts;
2223
import org.dinky.config.Dialect;
2324
import org.dinky.data.annotations.CheckTaskOwner;
2425
import org.dinky.data.annotations.ExecuteProcess;
@@ -49,9 +50,7 @@
4950
import org.dinky.trans.ExecuteJarParseStrategyUtil;
5051
import org.dinky.utils.SqlUtil;
5152

52-
import java.util.Arrays;
5353
import java.util.List;
54-
import java.util.stream.Collectors;
5554

5655
import org.springframework.validation.annotation.Validated;
5756
import org.springframework.web.bind.annotation.GetMapping;
@@ -306,7 +305,6 @@ public Result<List<TaskDTO>> getMyTask() {
306305
@PostMapping("/flinkJarSqlConvertForm")
307306
@ApiOperation("FlinkJar SqlConvertForm")
308307
public Result<FlinkJarSqlConvertVO> flinkJarSqlConvertForm(@RequestBody TaskDTO taskDTO) {
309-
310308
String sqlStatement = taskDTO.getStatement();
311309
String[] statements = SqlUtil.getStatements(sqlStatement);
312310
FlinkJarSqlConvertVO flinkJarSqlConvertVO = new FlinkJarSqlConvertVO();
@@ -315,21 +313,24 @@ public Result<FlinkJarSqlConvertVO> flinkJarSqlConvertForm(@RequestBody TaskDTO
315313
flinkJarSqlConvertVO.setInitSqlStatement(sqlStatement);
316314
return Result.succeed(flinkJarSqlConvertVO);
317315
}
316+
318317
Integer lastExecuteJarSqlStatementIndex = null;
319318
for (int i = 0; i < statements.length; i++) {
320-
if (ExecuteJarParseStrategyUtil.match(statements[i])) {
319+
if (ExecuteJarParseStrategyUtil.find(statements[i])) {
321320
lastExecuteJarSqlStatementIndex = i;
322321
}
323322
}
324323
if (lastExecuteJarSqlStatementIndex == null) {
324+
flinkJarSqlConvertVO.setInitSqlStatement(sqlStatement);
325325
return Result.succeed(flinkJarSqlConvertVO);
326326
}
327327
String lastSqlStatement = statements[lastExecuteJarSqlStatementIndex];
328328
JarSubmitParam info = JarSubmitParam.getInfo(lastSqlStatement);
329329
flinkJarSqlConvertVO.setJarSubmitParam(info);
330-
String sql = Arrays.stream(ArrayUtil.remove(statements, lastExecuteJarSqlStatementIndex))
331-
.map(x -> x + ";")
332-
.collect(Collectors.joining("\n"));
330+
// English: Only clear the 'Execute Jar' part of the original sqlStatement, while retaining all other
331+
// statements.
332+
// 中文: 只清理 Execute Jar 的语句,保留其他各种语句与注释
333+
String sql = ExecuteJarParseStrategyUtil.removeExecuteJarStatement(sqlStatement);
333334
flinkJarSqlConvertVO.setInitSqlStatement(sql);
334335
return Result.succeed(flinkJarSqlConvertVO);
335336
}
@@ -338,6 +339,11 @@ public Result<FlinkJarSqlConvertVO> flinkJarSqlConvertForm(@RequestBody TaskDTO
338339
@ApiOperation("FlinkJar FormConvertSql")
339340
public Result<String> flinkJarFormConvertSql(@RequestBody FlinkJarSqlConvertVO dto) {
340341
JarSubmitParam jarSubmitParam = dto.getJarSubmitParam();
342+
String initSqlStatement = dto.getInitSqlStatement();
343+
// remove Other Execute Jar
344+
if (Asserts.isNotNullString(initSqlStatement)) {
345+
initSqlStatement = ExecuteJarParseStrategyUtil.removeExecuteJarStatement(initSqlStatement);
346+
}
341347
Dict objectMap = Dict.create()
342348
.set("uri", Opt.ofNullable(jarSubmitParam.getUri()).orElse(""))
343349
.set(
@@ -352,6 +358,6 @@ public Result<String> flinkJarFormConvertSql(@RequestBody FlinkJarSqlConvertVO d
352358
.orElse(false)
353359
.toString());
354360
String executeJarSql = ENGINE.getTemplate("executeJar.sql").render(objectMap);
355-
return Result.succeed(Opt.ofNullable(dto.getInitSqlStatement()).orElse("") + "\n" + executeJarSql, "");
361+
return Result.succeed(Opt.ofNullable(initSqlStatement).orElse("") + "\n" + executeJarSql, "");
356362
}
357363
}

0 commit comments

Comments
 (0)