public ResultSet getResultSet()

in src/main/java/com/aliyun/odps/jdbc/OdpsStatement.java [553:605]


  public ResultSet getResultSet() throws SQLException {
    long startTime = System.currentTimeMillis();
    if ((resultSet == null || resultSet.isClosed()) && odpsResultSet != null) {
        OdpsResultSetMetaData
            meta =
            getResultMeta(odpsResultSet.getTableSchema().getColumns());
        try {
          if (!isResultSetScrollable || sqlExecutor.getInstance() == null) {
            resultSet = new OdpsSessionForwardResultSet(this, meta, odpsResultSet, startTime);
          } else {
            DownloadSession session;
            InstanceTunnel tunnel = new InstanceTunnel(connHandle.getOdps());
            String te = connHandle.getTunnelEndpoint();
            if (!StringUtils.isNullOrEmpty(te)) {
              connHandle.log.info("using tunnel endpoint: " + te);
              tunnel.setEndpoint(te);
            }
            if (connHandle.getTunnelConnectTimeout() >= 0) {
              tunnel.getConfig().setSocketConnectTimeout(connHandle.getTunnelConnectTimeout());
            }
            if (connHandle.getTunnelReadTimeout() >= 0) {
              tunnel.getConfig().setSocketTimeout(connHandle.getTunnelReadTimeout());
            }
            session = tunnel.createDirectDownloadSession(
                connHandle.getOdps().getDefaultProject(),
                sqlExecutor.getInstance().getId(),
                sqlExecutor.getTaskName(),
                sqlExecutor.getSubqueryId(),
                enableLimit);

            resultSet = new OdpsScollResultSet(this, meta, session,
                                               sqlExecutor
                                                                   .getExecuteMode() == ExecuteMode.INTERACTIVE
                                                               ? OdpsScollResultSet.ResultMode.INTERACTIVE
                                                               : OdpsScollResultSet.ResultMode.OFFLINE);
          }
          odpsResultSet = null;
        } catch (TunnelException e) {
          connHandle.log.error("create download session for session failed: " + e.getMessage());
          e.printStackTrace();
          throw new SQLException("create session resultset failed: instance id="
                                 + sqlExecutor.getInstance().getId() + ", Error:" + e
                                     .getMessage(), e);
        } catch (IOException e) {
          connHandle.log.error("create download session for session failed: " + e.getMessage());
          e.printStackTrace();
          throw new SQLException("create session resultset failed: instance id="
                                 + sqlExecutor.getInstance().getId() + ", Error:" + e
                                     .getMessage(), e);
        }
    }
    return resultSet;
  }