Browse Source

fix sql task bug #2739 (#2741)

* Solve the failure to execute non-query sql

* fix sql task bug

Co-authored-by: sunchaohe <sunzhaohe@linklogis.com>
Co-authored-by: qiaozhanwei <qiaozhanwei@outlook.com>
Co-authored-by: lgcareer <18610854716@163.com>
zixi0825 5 years ago
parent
commit
6d0375e46d

+ 8 - 7
dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/ParameterUtils.java

@@ -213,27 +213,28 @@ public class ParameterUtils {
     return inputString;
   }
 
+
   /**
-   * new
-   * $[yyyyMMdd] replace scheduler time
+   * $[yyyyMMdd] replace schedule time
    * @param text
-   * @param paramsMap
+   * @param scheduleTime
    * @return
    */
-  public static String replaceScheduleTime(String text, Date scheduleTime, Map<String, Property> paramsMap) {
-    if (paramsMap != null) {
+  public static String replaceScheduleTime(String text, Date scheduleTime) {
+      Map<String, Property> paramsMap = new HashMap<>();
       //if getScheduleTime null ,is current date
       if (null == scheduleTime) {
         scheduleTime = new Date();
       }
+
       String dateTime = org.apache.dolphinscheduler.common.utils.DateUtils.format(scheduleTime, Constants.PARAMETER_FORMAT_TIME);
       Property p = new Property();
       p.setValue(dateTime);
       p.setProp(Constants.PARAMETER_SHECDULE_TIME);
       paramsMap.put(Constants.PARAMETER_SHECDULE_TIME, p);
       text = ParameterUtils.convertParameterPlaceholders2(text, convert(paramsMap));
-    }
-    return text;
+
+      return text;
   }
 
 

+ 1 - 1
dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/task/sql/SqlTask.java

@@ -179,7 +179,7 @@ public class SqlTask extends AbstractTask {
         }
         //new
         //replace variable TIME with $[YYYYmmddd...] in sql when history run job and batch complement job
-        sql = ParameterUtils.replaceScheduleTime(sql, taskExecutionContext.getScheduleTime(), paramsMap);
+        sql = ParameterUtils.replaceScheduleTime(sql, taskExecutionContext.getScheduleTime());
         // special characters need to be escaped, ${} needs to be escaped
         String rgex = "['\"]*\\$\\{(.*?)\\}['\"]*";
         setSqlParamsMap(sql, rgex, sqlParamsMap, paramsMap);