diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-sql/src/main/java/org/apache/dolphinscheduler/plugin/task/sql/SqlTask.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-sql/src/main/java/org/apache/dolphinscheduler/plugin/task/sql/SqlTask.java index 76bdbbc5fbdd..0a866fc499ca 100644 --- a/dolphinscheduler-task-plugin/dolphinscheduler-task-sql/src/main/java/org/apache/dolphinscheduler/plugin/task/sql/SqlTask.java +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-sql/src/main/java/org/apache/dolphinscheduler/plugin/task/sql/SqlTask.java @@ -198,6 +198,9 @@ public void executeFuncAndSql(List mainStatementsBinds, // post execute executeUpdate(connection, postStatementsBinds, "post"); + + // set varPool + taskExecutionContext.setVarPool(sqlParameters.getVarPool()); } catch (Exception e) { log.error("execute sql error: {}", e.getMessage()); throw e; diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-sql/src/test/java/org/apache/dolphinscheduler/plugin/task/sql/SqlTaskTest.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-sql/src/test/java/org/apache/dolphinscheduler/plugin/task/sql/SqlTaskTest.java index 3e1b25a4be97..233d19757ab0 100644 --- a/dolphinscheduler-task-plugin/dolphinscheduler-task-sql/src/test/java/org/apache/dolphinscheduler/plugin/task/sql/SqlTaskTest.java +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-sql/src/test/java/org/apache/dolphinscheduler/plugin/task/sql/SqlTaskTest.java @@ -24,6 +24,7 @@ import org.apache.dolphinscheduler.plugin.task.api.enums.Direct; import org.apache.dolphinscheduler.plugin.task.api.enums.ResourceType; import org.apache.dolphinscheduler.plugin.task.api.model.Property; +import org.apache.dolphinscheduler.plugin.task.api.parameters.SqlParameters; import org.apache.dolphinscheduler.plugin.task.api.parameters.resource.DataSourceParameters; import org.apache.dolphinscheduler.plugin.task.api.parameters.resource.ResourceParametersHelper; import org.apache.dolphinscheduler.plugin.task.api.utils.ParameterUtils; @@ -173,4 +174,27 @@ void testReplacingSqlHasQuestionMarkAndParams() { Assertions.assertEquals(4, sqlParamsMap.size()); Assertions.assertEquals(expected, formatSql); } + + @Test + void testVarPoolSetting() { + SqlParameters sqlParameters = new SqlParameters(); + sqlParameters.setType("HIVE"); + sqlParameters.setDatasource(1); + sqlParameters.setSql("select id, name from user where id = 1"); + + Property outParam = new Property("id", Direct.OUT, DataType.VARCHAR, ""); + sqlParameters.setLocalParams(Lists.newArrayList(outParam)); + + String sqlResult = "[{\"id\":\"1\",\"name\":\"test_user\"}]"; + + sqlParameters.dealOutParam(sqlResult); + + Assertions.assertNotNull(sqlParameters.getVarPool()); + Assertions.assertEquals(1, sqlParameters.getVarPool().size()); + + Property varPoolParam = sqlParameters.getVarPool().get(0); + Assertions.assertEquals("id", varPoolParam.getProp()); + Assertions.assertEquals("1", varPoolParam.getValue()); + Assertions.assertEquals(Direct.OUT, varPoolParam.getDirect()); + } }