Class WriteCursorConstantAction

java.lang.Object
org.apache.derby.impl.sql.execute.WriteCursorConstantAction
All Implemented Interfaces:
Externalizable, Serializable, Formatable, TypedFormat, ConstantAction
Direct Known Subclasses:
DeleteConstantAction, InsertConstantAction, UpdatableVTIConstantAction, UpdateConstantAction

abstract class WriteCursorConstantAction extends Object implements ConstantAction, Formatable
This abstract class describes compiled constants that are passed into Delete, Insert, and Update ResultSets. This class and its sub-classes are not really implementations of ConstantAction, since they are not executed. A better name for these classes would be 'Constants'. E.g. WriteCursorConstants, DeleteConstants. Ideally one day the split will occur.
  • Field Details

    • conglomId

      long conglomId
      This class implements Formatable. But it is NOT used across either major or minor releases. It is only written persistently in stored prepared statements, not in the replication stage. SO, IT IS OK TO CHANGE ITS read/writeExternal.
    • heapSCOCI

    • irgs

    • indexCIDS

      long[] indexCIDS
    • indexSCOCIs

    • indexNames

      String[] indexNames
    • deferred

      boolean deferred
    • targetProperties

      private Properties targetProperties
    • targetUUID

      UUID targetUUID
    • lockMode

      int lockMode
    • fkInfo

      private FKInfo[] fkInfo
    • triggerInfo

      private TriggerInfo triggerInfo
    • baseRowReadList

      private FormatableBitSet baseRowReadList
    • baseRowReadMap

      private int[] baseRowReadMap
    • streamStorableHeapColIds

      private int[] streamStorableHeapColIds
    • singleRowSource

      boolean singleRowSource
    • underMerge

      private boolean underMerge
      True if this is an action of a MERGE statement
  • Constructor Details

    • WriteCursorConstantAction

      public WriteCursorConstantAction()
      Public niladic constructor. Needed for Formatable interface to work.
    • WriteCursorConstantAction

      public WriteCursorConstantAction(long conglomId, StaticCompiledOpenConglomInfo heapSCOCI, IndexRowGenerator[] irgs, long[] indexCIDS, StaticCompiledOpenConglomInfo[] indexSCOCIs, String[] indexNames, boolean deferred, Properties targetProperties, UUID targetUUID, int lockMode, FKInfo[] fkInfo, TriggerInfo triggerInfo, FormatableBitSet baseRowReadList, int[] baseRowReadMap, int[] streamStorableHeapColIds, boolean singleRowSource, boolean underMerge)
      Make the ConstantAction for a DELETE, INSERT, or UPDATE statement.
      Parameters:
      conglomId - Conglomerate ID of heap.
      heapSCOCI - StaticCompiledOpenConglomInfo for heap.
      irgs - Index descriptors
      indexCIDS - Conglomerate IDs of indices
      indexSCOCIs - StaticCompiledOpenConglomInfos for indexes.
      indexNames - Names of indices on this table for error reporting.
      deferred - True means process as a deferred update
      targetProperties - Properties on the target table
      targetUUID - UUID of target table
      lockMode - The lock mode to use on the target table
      fkInfo - Structure containing foreign key info, if any (may be null)
      triggerInfo - Structure containing trigger info, if any (may be null)
      baseRowReadMap - BaseRowReadMap[heapColId]->ReadRowColumnId. (0 based)
      streamStorableHeapColIds - Null for non rep. (0 based)
      singleRowSource - Whether or not source is a single row source
      underMerge - True if this action is under a MERGE statement
  • Method Details

    • getFKInfo

      final FKInfo[] getFKInfo()
      Gets the foreign key information for this constant action. A full list of foreign keys was compiled into this constant action.
      Returns:
      the list of foreign keys to enforce for this action
    • getTriggerInfo

      TriggerInfo getTriggerInfo()
      Basically, the same as getFKInfo but for triggers.
      Returns:
      the triggers that should be fired
    • executeConstantAction

      public final void executeConstantAction(Activation activation) throws StandardException
      NOP routine. The work is done in InsertResultSet.
      Specified by:
      executeConstantAction in interface ConstantAction
      Parameters:
      activation - The execution environment for this constant action.
      Throws:
      StandardException - Thrown on failure
      See Also:
    • readExternal

      public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
      Read this object from a stream of stored objects.
      Specified by:
      readExternal in interface Externalizable
      Parameters:
      in - read this.
      Throws:
      IOException - thrown on error
      ClassNotFoundException - thrown on error
    • writeExternal

      public void writeExternal(ObjectOutput out) throws IOException
      Write this object to a stream of stored objects.
      Specified by:
      writeExternal in interface Externalizable
      Parameters:
      out - write bytes here.
      Throws:
      IOException - thrown on error
    • underMerge

      public boolean underMerge()
      Return true if this is an action of a MERGE statement
    • getConglomerateId

      public long getConglomerateId()
      Get the conglomerate id for the changed heap.
      Returns:
      the conglomerate id.
    • getTargetProperties

      public Properties getTargetProperties()
      Get the targetProperties from the constant action.
      Returns:
      The targetProperties
    • getProperty

      public String getProperty(String key)
      The the value of the specified key, if it exists, from the targetProperties.
      Parameters:
      key - The key to search for
      Returns:
      The value for the specified key if it exists, otherwise null. (Return null if targetProperties is null.)
    • getBaseRowReadList

      public FormatableBitSet getBaseRowReadList()
    • getBaseRowReadMap

      public int[] getBaseRowReadMap()
    • getStreamStorableHeapColIds

      public int[] getStreamStorableHeapColIds()
    • getIndexNameFromCID

      public String getIndexNameFromCID(long indexCID)
      get the index name given the conglomerate id of the index.
      Parameters:
      indexCID - conglomerate ID of the index.
      Returns:
      index name of given index.
    • getIndexNames

      public String[] getIndexNames()