hi all, The current sql task cannot support multiple queries, but my project is very emergency about this feature. I chang this feature in my local.but I'm not sure if my change is reasonable, so i need some help or suggestions。
hive and sql use the same code to execute sql, executeFuncAndSql(mainSqlBinds, preStatementSqlBinds, postStatementSqlBinds, createFuncs); But the problem here is that hive JDBC does not support multiple queries, mysql mssql supports multiple queries. If both mysql mssql and hive supports multiple queries , so I consider the compatibility of the two here, and modify it to split the sql statement according to the conventional ";", but execute them one by one. // support multiQueries 2020/9/16 String[] sqlsplit = mainSqlBinds.getSql().split(";"); if (sqlsplit.length == 0) { logger.error("please check sqlscript can splited by ';'"); return; } Map<Integer, Property> sqlParamsMap = mainSqlBinds.getParamsMap(); for (String sqlscript : sqlsplit) { executeFuncAndSql(new SqlBinds(sqlscript, sqlParamsMap), preStatementSqlBinds, postStatementSqlBinds, createFuncs); } I don’t know if this change is reasonable, I hope you can give some reasonable suggestions https://github.com/apache/incubator-dolphinscheduler/issues/3710 thk! 当前的sql组件支持正常的多条语句同时执行,但是我们项目对这个功能比较着急,我在本地做了修改,但是我不确定我改的是否合理。 希望得到大家的建议或者帮助。 跟踪代码发现,hive 与mysql 使用了同样的执行语句的入口: executeFuncAndSql(mainSqlBinds, preStatementSqlBinds, postStatementSqlBinds, createFuncs); 有些数据源可能直接在jdbc 的连接参数加上allowmultiqueries=true就可以,但是hive jdbc是不支持 批量sql支持的这个功能, 我的考虑是在不能确定其它的数据源是否也支持多sql查询的功能,所以使用";"分割sql语句依然保持一条一条的语句执行,这样能 保证这两种情况兼容,同样能够实现基本的功能,代码的改动量很少。修改成这样: // support multiQueries 2020/9/16 String[] sqlsplit = mainSqlBinds.getSql().split(";"); if (sqlsplit.length == 0) { logger.error("please check sqlscript can splited by ';'"); return; } Map<Integer, Property> sqlParamsMap = mainSqlBinds.getParamsMap(); for (String sqlscript : sqlsplit) { executeFuncAndSql(new SqlBinds(sqlscript, sqlParamsMap), preStatementSqlBinds, postStatementSqlBinds, createFuncs); } 这样修改是否合理,希望能够给予帮助或者建议。 谢谢! https://github.com/apache/incubator-dolphinscheduler/issues/3710