Unverified Commit c50ad124 authored by t1mon's avatar t1mon Committed by GitHub
Browse files

Add query result set limit. (#2459)



* Optimize PropertyUtils instantiation.

* Fix info error.

* Add query result set limit.

* fix code smell

Co-authored-by: default avatardailidong <dailidong66@gmail.com>
Co-authored-by: default avatarqiaozhanwei <qiaozhanwei@outlook.com>
parent e13c08d0
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@
 */
package org.apache.dolphinscheduler.server.worker.task.sql;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
@@ -24,7 +23,6 @@ import org.apache.commons.lang.StringUtils;
import org.apache.dolphinscheduler.alert.utils.MailUtils;
import org.apache.dolphinscheduler.common.Constants;
import org.apache.dolphinscheduler.common.enums.*;
import org.apache.dolphinscheduler.common.enums.AuthorizationType;
import org.apache.dolphinscheduler.common.enums.DbType;
import org.apache.dolphinscheduler.common.enums.ShowType;
import org.apache.dolphinscheduler.common.enums.TaskTimeoutStrategy;
@@ -37,7 +35,6 @@ import org.apache.dolphinscheduler.common.utils.*;
import org.apache.dolphinscheduler.dao.AlertDao;
import org.apache.dolphinscheduler.dao.datasource.BaseDataSource;
import org.apache.dolphinscheduler.dao.datasource.DataSourceFactory;
import org.apache.dolphinscheduler.dao.entity.ProcessInstance;
import org.apache.dolphinscheduler.dao.entity.User;
import org.apache.dolphinscheduler.server.entity.SQLTaskExecutionContext;
import org.apache.dolphinscheduler.server.entity.TaskExecutionContext;
@@ -78,6 +75,10 @@ public class SqlTask extends AbstractTask {
     */
    private TaskExecutionContext taskExecutionContext;

    /**
     * default query sql limit
     */
    private static final int LIMIT = 10000;

    public SqlTask(TaskExecutionContext taskExecutionContext, Logger logger) {
        super(taskExecutionContext, logger);
@@ -257,12 +258,15 @@ public class SqlTask extends AbstractTask {
        ResultSetMetaData md = resultSet.getMetaData();
        int num = md.getColumnCount();

        while (resultSet.next()) {
        int rowCount = 0;

        while (rowCount < LIMIT && resultSet.next()) {
            JSONObject mapOfColValues = new JSONObject(true);
            for (int i = 1; i <= num; i++) {
                mapOfColValues.put(md.getColumnName(i), resultSet.getObject(i));
            }
            resultJSONArray.add(mapOfColValues);
            rowCount++;
        }
        logger.debug("execute sql : {}", JSONObject.toJSONString(resultJSONArray, SerializerFeature.WriteMapNullValue));