Class IndexSetChanger

java.lang.Object
org.apache.derby.impl.sql.execute.IndexSetChanger

class IndexSetChanger extends Object
Perform Index maintenace associated with DML operations for a table's indexes.
  • Field Details

  • Constructor Details

    • IndexSetChanger

      public IndexSetChanger(IndexRowGenerator[] irgs, long[] indexCIDS, StaticCompiledOpenConglomInfo[] indexSCOCIs, DynamicCompiledOpenConglomInfo[] indexDCOCIs, String[] indexNames, ConglomerateController baseCC, TransactionController tc, int lockMode, FormatableBitSet baseRowReadMap, int isolationLevel, Activation activation) throws StandardException
      Create a new IndexSetChanger
      Parameters:
      irgs - the IndexRowGenerators for the table's indexes. We use positions in this array as local id's for indexes.
      indexCIDS - the conglomerate ids for the table's indexes. indexCIDS[ix] corresponds to the same index as irgs[ix].
      indexSCOCIs - the SCOCIs for the table's idexes. indexSCOCIs[ix] corresponds to the same index as irgs[ix].
      indexDCOCIs - the DCOCIs for the table's idexes. indexDCOCIs[ix] corresponds to the same index as irgs[ix].
      baseCC - a ConglomerateController for the base table.
      tc - a TransactionController for managing temporary conglomerates
      lockMode - The lock mode (granularity) for the indexes.
      baseRowReadMap - Map of columns read in. 1 based.
      isolationLevel - Isolation level to use
      activation - Current activation
      Throws:
      StandardException - Thrown on error
  • Method Details

    • open

      public void open(boolean[] fixOnUpdate) throws StandardException
      Open this IndexSetchanger.
      Parameters:
      fixOnUpdate - indicates which indexes to correct due to an update. The entries in this array must be in the same order as the entries in the irgs array that was passed to the constructor.
      Throws:
      StandardException - Thrown on error
    • setRowHolder

      public void setRowHolder(TemporaryRowHolderImpl rowHolder)
      Set the row holder for all underlying changers to use. If the row holder is set, underlying changers wont bother saving copies of rows needed for deferred processing. Also, it will never close the passed in rowHolder.
      Parameters:
      rowHolder - the row holder
    • openIndexes

      private void openIndexes(int whatToOpen) throws StandardException
      Open the indexes that must be fixed if they are not already open.
      Parameters:
      whatToOpen - must be one of ALL_INDEXES or UPDATE_INDEXES.
      Throws:
      StandardException - Thrown on error
    • delete

      public void delete(ExecRow baseRow, RowLocation baseRowLocation) throws StandardException
      Perform index maintenance associated with deleting a row from a table.
      Parameters:
      baseRow - the deleted row.
      baseRowLocation - the deleted row's base conglomerate location
      Throws:
      StandardException - Thrown on error
    • insert

      public void insert(ExecRow baseRow, RowLocation baseRowLocation) throws StandardException
      Perform index maintenance associated with insering a row into a table.
      Parameters:
      baseRow - the row.
      baseRowLocation - the row's base conglomerate location
      Throws:
      StandardException - Thrown on error
    • update

      public void update(ExecRow oldBaseRow, ExecRow newBaseRow, RowLocation baseRowLocation) throws StandardException
      Perform index maintenance associated with updating a row in a table.
      Parameters:
      oldBaseRow - the old image of the row.
      newBaseRow - the new image of the row.
      baseRowLocation - the row's base conglomerate location
      Throws:
      StandardException - Thrown on error
    • setBaseCC

      public void setBaseCC(ConglomerateController baseCC)
      Propagate the heap's ConglomerateController to all of the underlying index changers.
      Parameters:
      baseCC - The heap's ConglomerateController.
    • finish

      public void finish() throws StandardException
      Finish processing the changes for this IndexSetChanger. This means doing the deferred inserts for updates of unique indexes.
      Throws:
      StandardException - Thrown on error
    • close

      public void close() throws StandardException
      Close this IndexSetChanger.
      Throws:
      StandardException - Thrown on error
    • toString

      public String toString()
      Create a string describing the state of this IndexSetChanger
      Overrides:
      toString in class Object