Class MergeResultSet

  • All Implemented Interfaces:
    ResultSet

    class MergeResultSet
    extends NoRowsResultSetImpl
    INSERT/UPDATE/DELETE a target table based on how it outer joins with a driving table. For a description of how Derby processes the MERGE statement, see the header comment on MergeNode.
    • Method Detail

      • open

        public void open()
                  throws StandardException
        Description copied from interface: ResultSet
        Needs to be called before the result set will do anything. Need to call before getNextRow(), or for a result set that doesn't return rows, this is the call that will cause all the work to be done.
        Throws:
        StandardException - Thrown on failure
      • 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
        Overrides:
        finish in class NoRowsResultSetImpl
        Throws:
        StandardException - on error
      • addSubjectRow

        private void addSubjectRow​(SQLRef subjectRowID)
                            throws StandardException

        Add another subject row id to the evolving hashtable of affected target rows. The concept of a subject row is defined by the 2011 SQL Standard, part 2, section 14.12 (merge statement), general rule 6. A row in the target table is a subject row if it joins to the source table on the main search condition and if the joined row satisfies the matching refinement condition for some WHEN MATCHED clause. A row in the target table may only be a subject row once. That is, a given target row may only qualify for UPDATE or DELETE processing once. If it qualifies for more than one UPDATE or DELETE action, then the Standard requires us to raise a cardinality violation.

        Parameters:
        subjectRowID - The location of the subject row.
        Throws:
        StandardException - A cardinality exception is thrown if we've already added this subject row.
      • createSubjectRowIDhashtable

        private void createSubjectRowIDhashtable()
                                          throws StandardException

        Create a BackingStoreHashtable to hold the ids of subject rows.

        Throws:
        StandardException