Class UniqueIndexSortObserver

java.lang.Object
org.apache.derby.impl.sql.execute.BasicSortObserver
org.apache.derby.impl.sql.execute.UniqueIndexSortObserver
All Implemented Interfaces:
SortObserver

class UniqueIndexSortObserver extends BasicSortObserver
Unique index aggregator. Enforces uniqueness when creating a unique index or constraint.
  • Field Details

    • deferrable

      private final boolean deferrable
    • deferred

      private final boolean deferred
    • indexOrConstraintName

      private final String indexOrConstraintName
    • tableName

      private final String tableName
    • lcc

      private final LanguageConnectionContext lcc
    • constraintId

      private final UUID constraintId
    • deferredDuplicates

      private BackingStoreHashtable deferredDuplicates
  • Constructor Details

    • UniqueIndexSortObserver

      public UniqueIndexSortObserver(LanguageConnectionContext lcc, UUID constraintId, boolean doClone, boolean deferrable, boolean deferred, String indexOrConstraintName, ExecRow execRow, boolean reuseWrappers, String tableName)
  • Method Details

    • insertDuplicateKey

      public DataValueDescriptor[] insertDuplicateKey(DataValueDescriptor[] in, DataValueDescriptor[] dup) throws StandardException
      Description copied from class: BasicSortObserver
      Called prior to inserting a duplicate sort key.
      Specified by:
      insertDuplicateKey in interface SortObserver
      Overrides:
      insertDuplicateKey in class BasicSortObserver
      Parameters:
      in - the current row that the sorter is on the verge of retaining. It is a duplicate of existingRow.
      dup - the row that is already in the the sorter which is a duplicate of insertRow
      Returns:
      the row to be inserted by the sorter. If null, then nothing is inserted by the sorter. Distinct sorts will want to return null.
      Throws:
      StandardException - never thrown
    • deferred

      public boolean deferred()
      Description copied from interface: SortObserver
      Overridden by subclasses that observe sorters with uniqueness checking.
      Specified by:
      deferred in interface SortObserver
      Overrides:
      deferred in class BasicSortObserver
      Returns:
      true if constraint mode of the index's constraint is effectively deferred. Any SortObserver implementations that implement uniqueness checking need to keep track of this information.
    • deferrable

      public boolean deferrable()
      Description copied from interface: SortObserver
      Overridden by subclasses that observe sorters with uniqueness checking.
      Specified by:
      deferrable in interface SortObserver
      Overrides:
      deferrable in class BasicSortObserver
      Returns:
      true if the index's constraint is deferrable. Any SortObserver implementations that implement uniqueness checking need to keep track of this information.
    • rememberDuplicate

      public void rememberDuplicate(DataValueDescriptor[] row) throws StandardException
      Description copied from interface: SortObserver
      Overridden by subclasses that observe sorters with uniqueness checking. Will be called by sorters iff deferrable() and deferred() and uniqueness violation, so implementations that sometimes return true to these must implement this method to save duplicate information till commit time.
      Specified by:
      rememberDuplicate in interface SortObserver
      Overrides:
      rememberDuplicate in class BasicSortObserver
      Parameters:
      row - data of offending key
      Throws:
      StandardException - standard error policy