Class OpenConglomerateScratchSpace

java.lang.Object
org.apache.derby.impl.store.access.conglomerate.OpenConglomerateScratchSpace
All Implemented Interfaces:
DynamicCompiledOpenConglomInfo

public class OpenConglomerateScratchSpace extends Object implements DynamicCompiledOpenConglomInfo
A utility class to store and use temporary scratch space associated with a conglomerate.
  • Field Details

    • row_for_export_template

      private DataValueDescriptor[] row_for_export_template
      A template of info about the classes in the returned row.

      This template is allocated on demand, and is used to efficiently create new rows for export from this class. This variable is for use by get_row_for_export().

    • scratch_template

      private DataValueDescriptor[] scratch_template
      A Scratch template used for searching and qualifying rows in the conglomerate. This is a full template, independent of the FormatableBitSet used for access.
    • scratch_row

      private DataValueDescriptor[] scratch_row
      A Scratch row used for qualifying rows in the conglomerate. This is a row which matches the FormatableBitSet of rows being returned.
    • format_ids

      private final int[] format_ids
      A complete array of format id's and collation_ids for this conglomerate.
    • collation_ids

      private final int[] collation_ids
    • hasCollatedTypes

      private final boolean hasCollatedTypes
      Tells if there is at least one type in the conglomerate whose collation isn't StringDataValue.COLLATION_TYPE_UCS_BASIC. This can be determined by looking at the collation ids, but now the caller is passing in the value to avoid having to look at all the collation ids multiple times.
    • scratch_row_position

      private RowPosition scratch_row_position
      Scratch space used by ConglomerateController.
      See Also:
  • Constructor Details

    • OpenConglomerateScratchSpace

      public OpenConglomerateScratchSpace(int[] format_ids, int[] collation_ids, boolean hasCollatedTypes)
      Creates a new scratch space.
      Parameters:
      format_ids - format identifiers for columns in the row
      collation_ids - collation identifiers for the columns in the row
      hasCollatedTypes - whether there is at least one collated type with a collation other than UCS BASIC in the conglomerate
  • Method Details

    • get_row_for_export

      public DataValueDescriptor[] get_row_for_export(Transaction rawtran) throws StandardException
      Return an empty template (possibly partial) row to be given back to a client.

      The main use of this is for fetchSet() and fetchNextGroup() which allocate rows and then give them back entirely to the caller.

      Returns:
      The row to use.
      Throws:
      StandardException - Standard exception policy.
    • get_scratch_row

      public DataValueDescriptor[] get_scratch_row(Transaction rawtran) throws StandardException
      Return an empty template (possibly partial) row to be used and reused internally for processing.

      The main use of this is for qualifying rows where a row has not been provided by the client. This routine cache's a single row for reuse by the caller, if the caller needs 2 concurrent scratch rows, some other mechanism must be used.

      Returns:
      The row to use.
      Throws:
      StandardException - Standard exception policy.
    • get_template

      public DataValueDescriptor[] get_template(Transaction rawtran) throws StandardException
      Return a complete empty row.

      The main use of this is for searching a tree where a complete copy of the row is needed for searching.

      Returns:
      The template to use.
      Throws:
      StandardException - Standard exception policy.
    • get_scratch_row_position

      public RowPosition get_scratch_row_position()
      Return a scratch RowPosition.

      Used by GenericConglomerateController.delete() and GenericConglomerateController.replace(). It may be reused so callers must insure that object no longer needed before next possible call to get it again.

      Returns:
      a scratch RowPosition.
    • hasCollatedTypes

      public boolean hasCollatedTypes()
      Tells if there is at least one column with a collation different than UCS BASIC in the conglomerate.
      Returns:
      true if there is at least one column with a collation different than UCS BASIC.