public TSStatus updateCQLastExecutionTime(UpdateCQLastExecTimePlan plan) {
    TSStatus res = new TSStatus();
    String cqId = plan.getCqId();
    String md5 = plan.getMd5();
    lock.writeLock().lock();
    try {
      CQEntry cqEntry = cqMap.get(cqId);
      if (cqEntry == null) {
        res.code = TSStatusCode.NO_SUCH_CQ.getStatusCode();
        res.message = String.format(CQ_NOT_EXIST_FORMAT, cqId);
      } else if (!md5.equals(cqEntry.md5)) {
        res.code = TSStatusCode.NO_SUCH_CQ.getStatusCode();
        res.message = String.format(MD5_NOT_MATCH_FORMAT, cqId);
      } else if (cqEntry.lastExecutionTime >= plan.getExecutionTime()) {
        res.code = TSStatusCode.CQ_UPDATE_LAST_EXEC_TIME_ERROR.getStatusCode();
        res.message =
            String.format(
                "Update last execution time of CQ %s failed because its original last execution time(%d) is larger than the updated one(%d).",
                cqId, cqEntry.lastExecutionTime, plan.getExecutionTime());
      } else {
        cqEntry.lastExecutionTime = plan.getExecutionTime();
        res.code = TSStatusCode.SUCCESS_STATUS.getStatusCode();
      }
      return res;
    } finally {
      lock.writeLock().unlock();
    }
  }
Update the last execution time of the corresponding CQ.

@return SUCCESS_STATUS if successfully updated, or NO_SUCH_CQ if 1. the CQ doesn't exist; or 2.
    md5 is different. or CQ_UPDATE_LAST_EXEC_TIME_FAILED 3. original lastExecutionTime >=
    current lastExecutionTime;
iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/cq/CQInfo.java