|
|
|
@ -248,25 +248,17 @@ public class SqlTask extends AbstractTask {
|
|
|
|
|
ResultSetMetaData md = resultSet.getMetaData(); |
|
|
|
|
int num = md.getColumnCount(); |
|
|
|
|
|
|
|
|
|
int rowCount = 0; |
|
|
|
|
int limit = sqlParameters.getLimit() == 0 ? QUERY_LIMIT : sqlParameters.getLimit(); |
|
|
|
|
|
|
|
|
|
while (resultSet.next()) { |
|
|
|
|
if (rowCount == limit) { |
|
|
|
|
log.info("sql result limit : {} exceeding results are filtered", limit); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
ObjectNode mapOfColValues = JSONUtils.createObjectNode(); |
|
|
|
|
for (int i = 1; i <= num; i++) { |
|
|
|
|
mapOfColValues.set(md.getColumnLabel(i), JSONUtils.toJsonNode(resultSet.getObject(i))); |
|
|
|
|
} |
|
|
|
|
resultJSONArray.add(mapOfColValues); |
|
|
|
|
rowCount++; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int displayRows = sqlParameters.getDisplayRows() > 0 ? sqlParameters.getDisplayRows() |
|
|
|
|
: TaskConstants.DEFAULT_DISPLAY_ROWS; |
|
|
|
|
displayRows = Math.min(displayRows, rowCount); |
|
|
|
|
displayRows = Math.min(displayRows, resultJSONArray.size()); |
|
|
|
|
log.info("display sql result {} rows as follows:", displayRows); |
|
|
|
|
for (int i = 0; i < displayRows; i++) { |
|
|
|
|
String row = JSONUtils.toJsonString(resultJSONArray.get(i)); |
|
|
|
@ -383,6 +375,7 @@ public class SqlTask extends AbstractTask {
|
|
|
|
|
*/ |
|
|
|
|
private PreparedStatement prepareStatementAndBind(Connection connection, SqlBinds sqlBinds) { |
|
|
|
|
// is the timeout set
|
|
|
|
|
// todo: we need control the timeout at master side.
|
|
|
|
|
boolean timeoutFlag = taskExecutionContext.getTaskTimeoutStrategy() == TaskTimeoutStrategy.FAILED |
|
|
|
|
|| taskExecutionContext.getTaskTimeoutStrategy() == TaskTimeoutStrategy.WARNFAILED; |
|
|
|
|
try { |
|
|
|
@ -390,6 +383,7 @@ public class SqlTask extends AbstractTask {
|
|
|
|
|
if (timeoutFlag) { |
|
|
|
|
stmt.setQueryTimeout(taskExecutionContext.getTaskTimeout()); |
|
|
|
|
} |
|
|
|
|
stmt.setMaxRows(sqlParameters.getLimit() <= 0 ? QUERY_LIMIT : sqlParameters.getLimit()); |
|
|
|
|
Map<Integer, Property> params = sqlBinds.getParamsMap(); |
|
|
|
|
if (params != null) { |
|
|
|
|
for (Map.Entry<Integer, Property> entry : params.entrySet()) { |
|
|
|
|