Package org.apache.derby.iapi.sql

Examples of org.apache.derby.iapi.sql.ResultSet


      //Determine if the activation has a resultset and if that resultset
      //returns rows. For such an activation, we need to take special
      //actions during commit and rollback as explained in the comments
      //below.
      ResultSet activationResultSet = a.getResultSet();
      boolean resultsetReturnsRows = 
        (activationResultSet != null) && activationResultSet.returnsRows(); ;

      if (forRollback) {
        if (resultsetReturnsRows)
          //Since we are dealing with rollback, we need to reset
          //the activation no matter what the holdability might
          //be provided that resultset returns rows. An example
          //where we do not want to close a resultset that does
          //not return rows would be a java procedure which has
          //user invoked rollback inside of it. That rollback
          //should not reset the activation associated with
          //the call to java procedure because that activation
          //is still being used.
          a.reset();
        // Only invalidate statements if we performed DDL.
        if (dataDictionaryInWriteMode()) {
          ExecPreparedStatement ps = a.getPreparedStatement();
          if (ps != null) {
            ps.makeInvalid(DependencyManager.ROLLBACK, this);
          }
        }
      } else {
        //We are dealing with commit here.
        if (resultsetReturnsRows){
          if (a.getResultSetHoldability() == false)
            //Close result sets that return rows and are not held
            //across commit. This is to implement closing JDBC
            //result sets that are CLOSE_CURSOR_ON_COMMIT at commit
            //time.
            activationResultSet.close();
          else
            //Clear the current row of the result sets that return
            //rows and are held across commit. This is to implement
            //keeping JDBC result sets open that are
            //HOLD_CURSORS_OVER_COMMIT at commit time and marking
            //the resultset to be not on a valid row position. The
            //user will need to reposition within the resultset
            //before doing any row operations.
            activationResultSet.clearCurrentRow();             
        }
        a.clearHeapConglomerateController();
      }
    }
  }


    PreparedStatement ps = lcc.prepareInternalStatement(updateStmt);

        // This is a substatement; for now, we do not set any timeout
        // for it. We might change this behaviour later, by linking
        // timeout to its parent statement's timeout settings.
    ResultSet rs = ps.executeSubStatement(lcc, true, 0L);
    rs.close();
  }

    LanguageConnectionContext lcc = activation.getLanguageConnectionContext();
    PreparedStatement ps = lcc.prepareInternalStatement(maxStmt);

        // This is a substatement, for now we do not set any timeout for it
        // We might change this later by linking timeout to parent statement
    ResultSet rs = ps.executeSubStatement(lcc, false, 0L);
    DataValueDescriptor[] rowArray = rs.getNextRow().getRowArray();
    rs.close();
    rs.finish();

    return rowArray[0].getLong();
  }         

      return;
    }

    if (activation != null) {

      ResultSet rs = activation.getResultSet();

            if (rs != null) {
                rs.addWarning(w);
            }
    }
  }

    PreparedStatement ps = lcc.prepareInternalStatement(updateStmt);

        // This is a substatement; for now, we do not set any timeout
        // for it. We might change this behaviour later, by linking
        // timeout to its parent statement's timeout settings.
    ResultSet rs = ps.executeSubStatement(lcc, true, 0L);
    rs.close();
  }

    PreparedStatement ps = lcc.prepareInternalStatement(maxStmt);

        // This is a substatement, for now we do not set any timeout for it
        // We might change this later by linking timeout to parent statement
    ResultSet rs = ps.executeSubStatement(lcc, false, 0L);
    DataValueDescriptor[] rowArray = rs.getNextRow().getRowArray();
    rs.close();
    rs.finish();

    return rowArray[0].getLong();
  }         

      if (executionConstants != null)
      {
        lccToUse.validateStmtExecution(executionConstants);
      }

      ResultSet resultSet = null;
      try {
 
        resultSet = activation.execute();

        resultSet.open();
      } catch (StandardException se) {
        /* Cann't handle recompiling SPS action recompile here */
        if (!se.getMessageId().equals(SQLState.LANG_STATEMENT_NEEDS_RECOMPILE)
             || spsAction)
          throw se;
        statementContext.cleanupOnError(se);
        continue recompileOutOfDatePlan;

      }


      if (needToClearSavePoint)
      {
        /* We're done with our updates */
        statementContext.clearSavePoint();
      }

      lccToUse.popStatementContext(statementContext, null);         

      if (activation.isSingleExecution() && resultSet.isClosed())
      {
        // if the result set is 'done', i.e. not openable,
        // then we can also release the activation.
        // Note that a result set with output parameters
        // or rows to return is explicitly finished

        //reset the activation to clear warnings
        //and clear existing result sets in case this has been cached
        a.reset();
        a.setMaxRows(maxRows);
                ResultSet resultsToWrap =
                        ps.execute(a, forMetaData, timeoutMillis);
                addWarning(ps.getCompileTimeWarnings());
        addWarning(a.getWarnings());


        if (resultsToWrap.returnsRows()) {

                    // The statement returns rows, so calling it with
                    // executeUpdate() is not allowed.
                    if (executeUpdate) {
                        throw StandardException.newException(
                                SQLState.LANG_INVALID_CALL_TO_EXECUTE_UPDATE);
                    }

          EmbedResultSet lresults = factory.newEmbedResultSet(getEmbedConnection(), resultsToWrap, forMetaData, this, ps.isAtomic());
          results = lresults;


          // Set up the finalization of the ResultSet to
          // mark the activation as unused. It will be
          // closed sometime later by the connection
          // outside of finalization.
          if (a.isSingleExecution())
            lresults.singleUseActivation = a;

          updateCount = -1L;
          retval = true;
        }
        else {

          // Only applipable for an insert statement, which does not return rows.
          //the auto-generated keys resultset will be null if used for non-insert statement
          if (a.getAutoGeneratedKeysResultsetMode() && (resultsToWrap.getAutoGeneratedKeysResultset() != null))
          {
            resultsToWrap.getAutoGeneratedKeysResultset().open();
            autoGeneratedKeysResultSet = factory.newEmbedResultSet(getEmbedConnection(),
              resultsToWrap.getAutoGeneratedKeysResultset(), false, this, ps.isAtomic());
          }

          updateCount = resultsToWrap.modifiedRowCount();
          results = null; // note that we have none.

                    int dynamicResultCount = 0;
          if (a.getDynamicResults() != null) {
                        dynamicResultCount =
                            processDynamicResults(a.getDynamicResults(),
                                                  a.getMaxDynamicResults());
          }
                   
                    resultsToWrap.close(); // Don't need the result set any more

                    // executeQuery() is not allowed if the statement
                    // doesn't return exactly one ResultSet.
                    if (executeQuery && dynamicResultCount != 1) {
                        throw StandardException.newException(

      if (executionConstants != null)
      {
        lccToUse.validateStmtExecution(executionConstants);
      }

            ResultSet resultSet;
      try {
 
        resultSet = activation.execute();

        resultSet.open();
      } catch (StandardException se) {
        /* Cann't handle recompiling SPS action recompile here */
        if (!se.getMessageId().equals(SQLState.LANG_STATEMENT_NEEDS_RECOMPILE)
             || spsAction)
          throw se;
        statementContext.cleanupOnError(se);
        continue recompileOutOfDatePlan;

      }


      if (needToClearSavePoint)
      {
        /* We're done with our updates */
        statementContext.clearSavePoint();
      }

            lccToUse.popStatementContext(statementContext, null);

            if (activation.getSQLSessionContextForChildren() != null) {
                lccToUse.popNestedSessionContext(activation);
            }

      if (activation.isSingleExecution() && resultSet.isClosed())
      {
        // if the result set is 'done', i.e. not openable,
        // then we can also release the activation.
        // Note that a result set with output parameters
        // or rows to return is explicitly finished

      return;
    }

    if (activation != null) {

      ResultSet rs = activation.getResultSet();

            if (rs != null) {
                rs.addWarning(w);
            }
    }
  }

TOP

Related Classes of org.apache.derby.iapi.sql.ResultSet

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.