You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by ch...@apache.org on 2022/11/01 03:41:16 UTC
[dolphinscheduler] branch 3.0.2-prepare updated: [Bug-#12057][task-plugin] fix when the sql query result is empty, the email fails to send the attachment, and an exception will be reported (#12059) (#12633)
This is an automated email from the ASF dual-hosted git repository.
chufenggao pushed a commit to branch 3.0.2-prepare
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git
The following commit(s) were added to refs/heads/3.0.2-prepare by this push:
new d158ae55b9 [Bug-#12057][task-plugin] fix when the sql query result is empty, the email fails to send the attachment, and an exception will be reported (#12059) (#12633)
d158ae55b9 is described below
commit d158ae55b94b818c3b7c4e224fb9664f7e92a20d
Author: Eric Gao <er...@gmail.com>
AuthorDate: Tue Nov 1 11:41:09 2022 +0800
[Bug-#12057][task-plugin] fix when the sql query result is empty, the email fails to send the attachment, and an exception will be reported (#12059) (#12633)
Co-authored-by: 冯剑 Jian <ji...@jiduauto.com>
---
.../dolphinscheduler/plugin/task/sql/SqlTask.java | 27 +++++++++++++++++++++-
1 file changed, 26 insertions(+), 1 deletion(-)
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 16dfec861c..0b3ebd6636 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
@@ -257,6 +257,7 @@ public class SqlTask extends AbstractTaskExecutor {
resultJSONArray.add(mapOfColValues);
rowCount++;
}
+
int displayRows = sqlParameters.getDisplayRows() > 0 ? sqlParameters.getDisplayRows() : TaskConstants.DEFAULT_DISPLAY_ROWS;
displayRows = Math.min(displayRows, rowCount);
logger.info("display sql result {} rows as follows:", displayRows);
@@ -265,7 +266,10 @@ public class SqlTask extends AbstractTaskExecutor {
logger.info("row {} : {}", i + 1, row);
}
}
- String result = JSONUtils.toJsonString(resultJSONArray);
+
+ String result = resultJSONArray.isEmpty() ?
+ JSONUtils.toJsonString(generateEmptyRow(resultSet)) : JSONUtils.toJsonString(resultJSONArray);
+
if (sqlParameters.getSendEmail() == null || sqlParameters.getSendEmail()) {
sendAttachment(sqlParameters.getGroupId(), StringUtils.isNotEmpty(sqlParameters.getTitle())
? sqlParameters.getTitle()
@@ -275,6 +279,27 @@ public class SqlTask extends AbstractTaskExecutor {
return result;
}
+ /**
+ * generate empty Results as ArrayNode
+ */
+ private ArrayNode generateEmptyRow(ResultSet resultSet) throws SQLException {
+ ArrayNode resultJSONArray = JSONUtils.createArrayNode();
+ ObjectNode emptyOfColValues = JSONUtils.createObjectNode();
+ if (resultSet != null) {
+ ResultSetMetaData metaData = resultSet.getMetaData();
+ int columnsNum = metaData.getColumnCount();
+ logger.info("sql query results is empty");
+ for (int i = 1; i <= columnsNum; i++) {
+ emptyOfColValues.set(metaData.getColumnLabel(i), JSONUtils.toJsonNode(""));
+ }
+ } else {
+ emptyOfColValues.set("error", JSONUtils.toJsonNode("resultSet is null"));
+ }
+ resultJSONArray.add(emptyOfColValues);
+ return resultJSONArray;
+ }
+
+
/**
* send alert as an attachment
*