Skip to content

Commit f5f833f

Browse files
authored
[BugFix][FlinkJar]Fix the issue where FlinkJar cannot use global variables (#4052)
Co-authored-by: zackyoungh <[email protected]>
1 parent 04f9072 commit f5f833f

File tree

3 files changed

+19
-16
lines changed

3 files changed

+19
-16
lines changed

dinky-client/dinky-client-base/src/main/java/org/dinky/data/model/JarSubmitParam.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,4 +93,17 @@ public String getArgs() {
9393
}
9494
return args;
9595
}
96+
97+
public String getStatement() {
98+
return StrUtil.format(
99+
"EXECUTE JAR WITH (\n" + "'uri'='{}',\n"
100+
+ "'main-class'='{}',\n"
101+
+ "'args'='{}',\n"
102+
+ "'allowNonRestoredState'='{}'\n"
103+
+ ");",
104+
getUri(),
105+
getMainClass(),
106+
getArgs(),
107+
getAllowNonRestoredState());
108+
}
96109
}

dinky-core/src/main/java/org/dinky/executor/Executor.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.dinky.data.job.JobStatement;
2626
import org.dinky.data.job.JobStatementType;
2727
import org.dinky.data.job.SqlType;
28+
import org.dinky.data.model.JarSubmitParam;
2829
import org.dinky.data.model.LineageRel;
2930
import org.dinky.data.result.SqlExplainResult;
3031
import org.dinky.explainer.print_table.PrintStatementExplainer;
@@ -66,6 +67,7 @@
6667
import com.fasterxml.jackson.databind.ObjectMapper;
6768
import com.fasterxml.jackson.databind.node.ObjectNode;
6869

70+
import cn.hutool.core.codec.Base64;
6971
import cn.hutool.core.collection.CollUtil;
7072
import cn.hutool.core.util.ReflectUtil;
7173
import cn.hutool.core.util.URLUtil;
@@ -214,7 +216,10 @@ public JobStatementPlan parseStatementIntoJobStatementPlan(String[] statements)
214216
if (operationType.equals(SqlType.SET) || operationType.equals(SqlType.RESET)) {
215217
jobStatementPlan.addJobStatement(statement, JobStatementType.SET, operationType);
216218
} else if (operationType.equals(SqlType.EXECUTE_JAR)) {
217-
jobStatementPlan.addJobStatement(statement, JobStatementType.EXECUTE_JAR, operationType);
219+
JarSubmitParam jarSubmitParam = JarSubmitParam.build(statement);
220+
jarSubmitParam.setUri("base64@" + Base64.encode(pretreatStatement(jarSubmitParam.getArgs())));
221+
jobStatementPlan.addJobStatement(
222+
jarSubmitParam.toString(), JobStatementType.EXECUTE_JAR, operationType);
218223
} else if (operationType.equals(SqlType.EXECUTE)) {
219224
jobStatementPlan.addJobStatement(statement, JobStatementType.PIPELINE, operationType);
220225
} else if (operationType.equals(SqlType.PRINT)) {

dinky-core/src/main/java/org/dinky/explainer/Explainer.java

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import org.dinky.explainer.mock.MockStatementExplainer;
3333
import org.dinky.function.data.model.UDF;
3434
import org.dinky.function.pool.UdfCodePool;
35-
import org.dinky.function.util.UDFUtil;
3635
import org.dinky.job.JobConfig;
3736
import org.dinky.job.JobManager;
3837
import org.dinky.job.JobRunnerFactory;
@@ -108,20 +107,6 @@ private void generateUDFStatement(JobStatementPlan jobStatementPlan) {
108107
}
109108
}
110109

111-
public List<UDF> parseUDFFromStatements(String[] statements) {
112-
List<UDF> udfList = new ArrayList<>();
113-
for (String statement : statements) {
114-
if (statement.isEmpty()) {
115-
continue;
116-
}
117-
UDF udf = UDFUtil.toUDF(statement, jobManager.getDinkyClassLoader());
118-
if (Asserts.isNotNull(udf)) {
119-
udfList.add(udf);
120-
}
121-
}
122-
return udfList;
123-
}
124-
125110
public ExplainResult explainSql(String statement) {
126111
log.info("Start explain FlinkSQL...");
127112
JobStatementPlan jobStatementPlan;

0 commit comments

Comments
 (0)