protected JdbcIntermediateCursor()

in old/dekaf-core/src/main/java/org/jetbrains/dekaf/jdbc/JdbcIntermediateCursor.java [49:101]


  protected JdbcIntermediateCursor(@NotNull final JdbcIntermediateSeance seance,
                                   @NotNull final ResultSet resultSet,
                                   @NotNull final ResultLayout<R> resultLayout,
                                   final boolean isDefault,
                                   @Nullable final Boolean hasRows) {
    mySeance = seance;
    myResultSet = resultSet;
    myResultLayout = resultLayout;
    myIsDefault = isDefault;

    try {
      myOpened = !JdbcUtil.isClosed(myResultSet);
    }
    catch (SQLException sqle) {
      throw seance.mySession.recognizeException(sqle, seance.myStatementText);
    }

    if (myOpened) {
      if (hasRows == null) {
        try {
          myHasRows = resultSet.next(); // attempt to get the first portion of rows
        }
        catch (SQLException sqle) {
          throw seance.mySession.recognizeException(sqle, seance.myStatementText);
        }
      }
      else {
        myHasRows = hasRows;
      }
    }
    else {
      myHasRows = false;
    }

    if (myHasRows) {
      try {
        myRowsCollector = createRowsCollector(resultLayout, myResultSet, seance.myStatementText);
      }
      catch (SQLException sqle) {
        throw seance.mySession.recognizeException(sqle, seance.myStatementText);
      }
    }

    if (resultLayout.kind == ResultLayout.Kind.EXISTENCE || resultLayout.kind == ResultLayout.Kind.SINGLE_ROW) {
      myCollectLimit = 1;
    }
    else {
      int seancePackLimit = mySeance.myPackLimit;
      if (seancePackLimit > 0) {
        myCollectLimit = seancePackLimit;
      }
    }
  }