in backend/src/main/java/org/apache/iotdb/admin/service/impl/IotDBServiceImpl.java [4534:4580]
private List<String> executeQueryOneColumn(SessionPool sessionPool, String sql)
throws BaseException {
SessionDataSetWrapper sessionDataSetWrapper = null;
ExecutorService service = null;
try {
Callable call = () -> sessionPool.executeQueryStatement(sql);
service = Executors.newFixedThreadPool(1);
Future submit = service.submit(call);
sessionDataSetWrapper = (SessionDataSetWrapper) submit.get(60, TimeUnit.SECONDS);
int batchSize = sessionDataSetWrapper.getBatchSize();
List<String> values = new ArrayList<>();
if (batchSize > 0) {
while (sessionDataSetWrapper.hasNext()) {
RowRecord rowRecord = sessionDataSetWrapper.next();
List<org.apache.iotdb.tsfile.read.common.Field> fields = rowRecord.getFields();
values.add(fields.get(0).toString());
}
}
return values;
} catch (IoTDBConnectionException e) {
logger.error(e.getMessage());
throw new BaseException(ErrorCode.GET_SESSION_FAIL, ErrorCode.GET_SESSION_FAIL_MSG);
} catch (StatementExecutionException e) {
logger.error(e.getMessage());
if (e.getStatusCode() == 602) {
throw new BaseException(ErrorCode.NO_PRI_DO_THIS, ErrorCode.NO_PRI_DO_THIS_MSG);
} else {
throw new BaseException(
ErrorCode.GET_SQL_ONE_COLUMN_FAIL, ErrorCode.GET_SQL_ONE_COLUMN_FAIL_MSG);
}
} catch (InterruptedException e) {
e.printStackTrace();
throw new BaseException(ErrorCode.TIME_OUT, ErrorCode.TIME_OUT_MSG);
} catch (ExecutionException e) {
e.printStackTrace();
if (e.getMessage().contains("600")) {
throw new BaseException(ErrorCode.WRONG_USER, ErrorCode.WRONG_USER_MSG);
}
throw new BaseException(ErrorCode.CONN_REFUSED, ErrorCode.CONN_REFUSED_MSG);
} catch (TimeoutException e) {
logger.error(e.getMessage());
throw new BaseException(ErrorCode.TIME_OUT, ErrorCode.TIME_OUT_MSG);
} finally {
service.shutdown();
closeResultSet(sessionDataSetWrapper);
}
}