Documentation of 'org.apache.derby.impl.sql.execute.OnceResultSet' Java class
OnceResultSet
org.apache.derby.impl.sql.execute

Class OnceResultSet

  • All Implemented Interfaces:
    NoPutResultSet, ResultSet, RowLocationRetRowSource, RowSource


    public class OnceResultSet
    extends java.lang.Object
    Takes an expression subquery's result set and verifies that only a single scalar value is being returned. NOTE: A row with a single column containing null will be returned from getNextRow() if the underlying subquery ResultSet is empty.
    • Field Detail

      • UNIQUE_CARDINALITY_CHECK

        public static final int UNIQUE_CARDINALITY_CHECK
        See Also:
        Constant Field Values
      • subqueryNumber

        public int subqueryNumber
      • pointOfAttachment

        public int pointOfAttachment
      • resultSetNumber

        public final int resultSetNumber
      • numOpens

        public int numOpens
      • rowsSeen

        public int rowsSeen
      • rowsFiltered

        public int rowsFiltered
      • beginTime

        public long beginTime
      • constructorTime

        public long constructorTime
      • openTime

        public long openTime
      • nextTime

        public long nextTime
      • closeTime

        public long closeTime
      • optimizerEstimatedRowCount

        public double optimizerEstimatedRowCount
      • optimizerEstimatedCost

        public double optimizerEstimatedCost
      • subqueryTrackingArray

        public NoPutResultSet[] subqueryTrackingArray
    • Constructor Detail

      • OnceResultSet

        public OnceResultSet(NoPutResultSet s,
                             Activation a,
                             GeneratedMethod emptyRowFun,
                             int cardinalityCheck,
                             int resultSetNumber,
                             int subqueryNumber,
                             int pointOfAttachment,
                             double optimizerEstimatedRowCount,
                             double optimizerEstimatedCost)
    • Method Detail

      • openCore

        public void openCore()
                      throws StandardException
        open a scan on the table. scan parameters are evaluated at each open, so there is probably some way of altering their values...
        Throws:
        StandardException - thrown if cursor finished.
      • getPointOfAttachment

        public int getPointOfAttachment()
        Description copied from interface: NoPutResultSet
        Return the point of attachment for this subquery. (Only meaningful for Any and Once ResultSets, which can and will only be at the top of a ResultSet for a subquery.)
        Specified by:
        getPointOfAttachment in interface NoPutResultSet
        Returns:
        int Point of attachment (result set number) for this subquery. (-1 if not a subquery - also Sanity violation)
        See Also:
        NoPutResultSet.getPointOfAttachment()
      • getTimeSpent

        public long getTimeSpent(int type)
        Return the total amount of time spent in this ResultSet
        Parameters:
        type - CURRENT_RESULTSET_ONLY - time spent only in this ResultSet ENTIRE_RESULTSET_TREE - time spent in this ResultSet and below.
        Returns:
        long The total amount of time spent (in milliseconds).
      • getResultDescription

        public ResultDescription getResultDescription()
        Returns the description of the table's rows
        Specified by:
        getResultDescription in interface ResultSet
        Returns:
        A ResultDescription describing the results of the statement.
      • getCursorName

        public java.lang.String getCursorName()
        Return my cursor name for JDBC. Can be null.
        Returns:
        A String with the name of the cursor, if any. Returns NULL if this is not a cursor statement.
      • setNeedsRowLocation

        public void setNeedsRowLocation(boolean needsRowLocation)
        Description copied from interface: NoPutResultSet
        Set whether or not the NPRS need the row location when acting as a row source. (The target result set determines this.)
        See Also:
        NoPutResultSet.setNeedsRowLocation(boolean)
      • setHasDeferrableChecks

        public void setHasDeferrableChecks()
        Description copied from interface: NoPutResultSet
        Set that we are acting on behalf of an insert result set that has deferrable check constraints
      • getValidColumns

        public FormatableBitSet getValidColumns()
        Description copied from interface: RowSource
        getValidColumns describes the DataValueDescriptor[] returned by all calls to the getNextRowFromRowSource() call. If getValidColumns returns null, the number of columns is given by the DataValueDescriptor.length where DataValueDescriptor[] is returned by the preceeding getNextRowFromRowSource() call. Column N maps to DataValueDescriptor[N], where column numbers start at zero. If getValidColumns return a non null validColumns FormatableBitSet the number of columns is given by the number of bits set in validColumns. Column N is not in the partial row if validColumns.get(N) returns false. Column N is in the partial row if validColumns.get(N) returns true. If column N is in the partial row then it maps to DataValueDescriptor[M] where M is the count of calls to validColumns.get(i) that return true where i < N. If DataValueDescriptor.length is greater than the number of columns indicated by validColumns the extra entries are ignored.
        See Also:
        RowSource.getValidColumns()
      • getNextRowFromRowSource

        public DataValueDescriptor[] getNextRowFromRowSource()
                                                      throws StandardException
        Description copied from interface: RowSource
        Get the next row as an array of column objects. The column objects can be a JBMS Storable or any Serializable/Externalizable/Formattable/Streaming type.
        A return of null indicates that the complete set of rows has been read.

        A null column can be specified by leaving the object null, or indicated by returning a non-null getValidColumns. On streaming columns, it can be indicated by returning a non-null get FieldStates.

        If RowSource.needToClone() is true then the returned row (the DataValueDescriptor[]) is guaranteed not to be modified by drainer of the RowSource (except that the input stream will be read, of course) and drainer will keep no reference to it before making the subsequent nextRow call. So it is safe to return the same DataValueDescriptor[] in subsequent nextRow calls if that is desirable for performance reasons.

        If RowSource.needToClone() is false then the returned row (the DataValueDescriptor[]) may be be modified by drainer of the RowSource, and the drainer may keep a reference to it after making the subsequent nextRow call. In this case the client should severe all references to the row after returning it from getNextRowFromRowSource().

        Throws:
        StandardException - on error
        See Also:
        RowSource.getNextRowFromRowSource()
      • needsToClone

        public boolean needsToClone()
        Description copied from interface: RowSource
        Does the caller of getNextRowFromRowSource() need to clone the row in order to keep a reference to the row past the getNextRowFromRowSource() call which returned the row. This call must always return the same for all rows in a RowSource (ie. the caller will call this once per scan from a RowSource and assume the behavior is true for all rows in the RowSource).
        See Also:
        RowSource.needsToClone()
      • closeRowSource

        public void closeRowSource()
        Description copied from interface: RowSource
        closeRowSource tells the RowSource that it will no longer need to return any rows and it can release any resource it may have. Subsequent call to any method on the RowSource will result in undefined behavior. A closed rowSource can be closed again.
        See Also:
        RowSource.closeRowSource()
      • needsRowLocation

        public boolean needsRowLocation()
        Description copied from interface: RowLocationRetRowSource
        needsRowLocation returns true iff this the row source expects the drainer of the row source to call rowLocation after getting a row from getNextRowFromRowSource.
        Returns:
        true iff this row source expects some row location to be returned
        See Also:
        RowLocationRetRowSource.needsRowLocation()
      • needsRowLocationForDeferredCheckConstraints

        public boolean needsRowLocationForDeferredCheckConstraints()
      • rowLocation

        public void rowLocation(RowLocation rl)
                         throws StandardException
        Description copied from interface: RowLocationRetRowSource
        rowLocation is a callback for the drainer of the row source to return the rowLocation of the current row, i.e, the row that is being returned by getNextRowFromRowSource. This interface is for the purpose of loading a base table with index. In that case, the indices can be built at the same time the base table is laid down once the row location of the base row is known. This is an example pseudo code on how this call is expected to be used:
                        boolean needsRL = rowSource.needsRowLocation();
                        DataValueDescriptor[] row;
                        while((row = rowSource.getNextRowFromRowSource()) != null)
                        {
                                RowLocation rl = heapConglomerate.insertRow(row);
                                if (needsRL)
                                        rowSource.rowLocation(rl);
                        }
                        

        NeedsRowLocation and rowLocation will ONLY be called by a drainer of the row source which CAN return a row location. Drainer of row source which cannot return rowLocation will guarantee to not call either callbacks. Conversely, if NeedsRowLocation is called and it returns true, then for every row return by getNextRowFromRowSource, a rowLocation callback must also be issued with the row location of the row. Implementor of both the source and the drain of the row source must be aware of this protocol.
        The RowLocation object is own by the caller of rowLocation, in other words, the drainer of the RowSource. This is so that we don't need to new a row location for every row. If the Row Source wants to keep the row location, it needs to clone it (RowLocation is a ClonableObject).
        Throws:
        StandardException - on error
        See Also:
        RowLocationRetRowSource.rowLocation(org.apache.derby.iapi.types.RowLocation)
      • setCurrentRow

        public final void setCurrentRow(ExecRow row)
        Set the current row to the row passed in.
        Parameters:
        row - the new current row
      • clearCurrentRow

        public void clearCurrentRow()
        Clear the current row
      • isForUpdate

        public boolean isForUpdate()
        Is this ResultSet or it's source result set for update This method will be overriden in the inherited Classes if it is true
        Specified by:
        isForUpdate in interface NoPutResultSet
        Returns:
        Whether or not the result set is for update.
      • printQualifiers

        public static java.lang.String printQualifiers(Qualifier[][] qualifiers)
        Return a 2-d array of Qualifiers as a String
      • markAsTopResultSet

        public void markAsTopResultSet()
        Mark the ResultSet as the topmost one in the ResultSet tree. Useful for closing down the ResultSet on an error.
        Specified by:
        markAsTopResultSet in interface NoPutResultSet
      • open

        public final void open()
                        throws StandardException
        open a scan on the table. scan parameters are evaluated at each open, so there is probably some way of altering their values... NOTE: This method should only be called on the top ResultSet of a ResultSet tree to ensure that the entire ResultSet tree gets closed down on an error. the openCore() method will be called for all other ResultSets in the tree.
        Specified by:
        open in interface ResultSet
        Throws:
        StandardException - thrown if cursor finished.
      • getAbsoluteRow

        public ExecRow getAbsoluteRow(int row)
                               throws StandardException
        Returns the row at the absolute position from the query, and returns NULL when there is no such position. (Negative position means from the end of the result set.) Moving the cursor to an invalid position leaves the cursor positioned either before the first row (negative position) or after the last row (positive position). NOTE: An exception will be thrown on 0.
        Specified by:
        getAbsoluteRow in interface ResultSet
        Parameters:
        row - The position.
        Returns:
        The row at the absolute position, or NULL if no such position.
        Throws:
        StandardException - Thrown on failure
        See Also:
        Row
      • getRelativeRow

        public ExecRow getRelativeRow(int row)
                               throws StandardException
        Returns the row at the relative position from the current cursor position, and returns NULL when there is no such position. (Negative position means toward the beginning of the result set.) Moving the cursor to an invalid position leaves the cursor positioned either before the first row (negative position) or after the last row (positive position). NOTE: 0 is valid. NOTE: An exception is thrown if the cursor is not currently positioned on a row.
        Specified by:
        getRelativeRow in interface ResultSet
        Parameters:
        row - The position.
        Returns:
        The row at the relative position, or NULL if no such position.
        Throws:
        StandardException - Thrown on failure
        See Also:
        Row
      • checkRowPosition

        public boolean checkRowPosition(int isType)
                                 throws StandardException
        Determine if the cursor is before the first row in the result set.
        Specified by:
        checkRowPosition in interface ResultSet
        Returns:
        true if before the first row, false otherwise. Returns false when the result set contains no rows.
        Throws:
        StandardException - Thrown on error.
      • getRowNumber

        public int getRowNumber()
        Returns the row number of the current row. Row numbers start from 1 and go to 'n'. Corresponds to row numbering used to position current row in the result set (as per JDBC).
        Specified by:
        getRowNumber in interface ResultSet
        Returns:
        the row number, or 0 if not on a row
      • getNextRow

        public final ExecRow getNextRow()
                                 throws StandardException
        Return the requested values computed from the next row (if any) for which the restriction evaluates to true.

        restriction and projection parameters are evaluated for each row. NOTE: This method should only be called on the top ResultSet of a ResultSet tree to ensure that the entire ResultSet tree gets closed down on an error. the getNextRowCore() method will be called for all other ResultSets in the tree.

        Specified by:
        getNextRow in interface ResultSet
        Returns:
        the next row in the result
        Throws:
        StandardException - thrown on failure.
        StandardException - ResultSetNotOpen thrown if not yet open.
        See Also:
        Row
      • getPreviousRow

        public ExecRow getPreviousRow()
                               throws StandardException
        Returns the previous row from the query, and returns NULL when there are no more previous rows.
        Specified by:
        getPreviousRow in interface ResultSet
        Returns:
        The previous row, or NULL if no more previous rows.
        Throws:
        StandardException - Thrown on failure
        See Also:
        Row
      • returnsRows

        public boolean returnsRows()
        Returns true.
        Specified by:
        returnsRows in interface ResultSet
        Returns:
        TRUE if the statement returns rows, FALSE if not.
      • modifiedRowCount

        public final long modifiedRowCount()
        Description copied from interface: ResultSet
        Returns the number of rows affected by the statement. Only valid of returnsRows() returns false. For other DML statements, it returns the number of rows modified by the statement. For statements that do not affect rows (like DDL statements), it returns zero.
        Specified by:
        modifiedRowCount in interface ResultSet
        Returns:
        The number of rows affect by the statement, so far.
      • isClosed

        public boolean isClosed()
        Report if closed.
        Specified by:
        isClosed in interface ResultSet
        Returns:
        true if the ResultSet has been closed.
      • finish

        public void finish()
                    throws StandardException
        Description copied from interface: ResultSet
        Tells the system that there will be no more access to any database information via this result set; in particular, no more calls to open(). Will close the result set if it is not already closed.
        Specified by:
        finish in interface ResultSet
        Throws:
        StandardException - on error
      • getExecuteTime

        public long getExecuteTime()
        Get the execution time in milliseconds.
        Specified by:
        getExecuteTime in interface ResultSet
        Returns:
        long The execution time in milliseconds.
      • getBeginExecutionTimestamp

        public java.sql.Timestamp getBeginExecutionTimestamp()
        Get the Timestamp for the beginning of execution.
        Specified by:
        getBeginExecutionTimestamp in interface ResultSet
        Returns:
        Timestamp The Timestamp for the beginning of execution.
      • getEndExecutionTimestamp

        public java.sql.Timestamp getEndExecutionTimestamp()
        Get the Timestamp for the end of execution.
        Specified by:
        getEndExecutionTimestamp in interface ResultSet
        Returns:
        Timestamp The Timestamp for the end of execution.
      • getSubqueryTrackingArray

        public final NoPutResultSet[] getSubqueryTrackingArray(int numSubqueries)
        Description copied from interface: ResultSet
        Get the subquery ResultSet tracking array from the top ResultSet. (Used for tracking open subqueries when closing down on an error.)
        Specified by:
        getSubqueryTrackingArray in interface ResultSet
        Parameters:
        numSubqueries - The size of the array (For allocation on demand.)
        Returns:
        NoPutResultSet[] Array of NoPutResultSets for subqueries.
        See Also:
        ResultSet.getSubqueryTrackingArray(int)
      • checkCancellationFlag

        public void checkCancellationFlag()
                                   throws StandardException
        Checks whether the currently executing statement has been cancelled. This is done by checking the statement's allocated StatementContext object.
        Throws:
        StandardException
        See Also:
        StatementContext
      • addWarning

        public final void addWarning(java.sql.SQLWarning w)
        Description copied from interface: ResultSet
        Add a warning to this result set.
        Specified by:
        addWarning in interface ResultSet
        Parameters:
        w - the warning to add
      • getWarnings

        public final java.sql.SQLWarning getWarnings()
        Description copied from interface: ResultSet
        Return the set of warnings generated during the execution of this result set. The warnings are cleared once this call returns.
        Specified by:
        getWarnings in interface ResultSet
      • toXML

        public org.w3c.dom.Element toXML(org.w3c.dom.Element parentNode,
                                         java.lang.String tag)
                                  throws java.lang.Exception
        Description copied from interface: ResultSet

        Produce an xml image of this ResultSet and its descendant ResultSets. Appends an element to the parentNode and returns the appended element.

        Specified by:
        toXML in interface ResultSet
        Parameters:
        parentNode - Node to put content into.
        tag - Element tag for content
        Returns:
        the content as an element with the given tag name
        Throws:
        java.lang.Exception
      • toXML

        public static org.w3c.dom.Element toXML(org.w3c.dom.Element parentNode,
                                                java.lang.String childTag,
                                                ResultSet rs)
                                         throws java.lang.Exception

        Pretty-print a ResultSet as an xml child of a parent node. Return the node representing the ResultSet child.

        Throws:
        java.lang.Exception
      • childrenToXML

        public static org.w3c.dom.Element childrenToXML(org.w3c.dom.Element outerNode,
                                                        ResultSet outerRS)
                                                 throws java.lang.Exception

        Pretty-print the inner ResultSet fields inside an outer ResultSet. Returns the outerNode.

        Throws:
        java.lang.Exception

DataMelt 3.0 © DataMelt by jWork.ORG

You see the box below because you did not login.