org.apache.derby.impl.store.access.conglomerate
Class OpenConglomerateScratchSpace

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

public class OpenConglomerateScratchSpace
extends java.lang.Object
implements DynamicCompiledOpenConglomInfo

A utility class to store and use temporary scratch space associated with a conglomerate.


Field Summary
private  int[] collation_ids
           
private  int[] format_ids
          A complete array of format id's and collation_ids for this conglomerate.
private  boolean hasCollatedTypes
          Tells if there is at least one type in the conglomerate whose collation isn't StringDataValue.COLLATION_TYPE_UCS_BASIC.
private  DataValueDescriptor[] row_for_export_template
          A template of info about the classes in the returned row.
private  DataValueDescriptor[] scratch_row
          A Scratch row used for qualifying rows in the conglomerate.
private  RowPosition scratch_row_position
          Scratch space used by ConglomerateController.
private  DataValueDescriptor[] scratch_template
          A Scratch template used for searching and qualifying rows in the conglomerate.
 
Constructor Summary
OpenConglomerateScratchSpace(int[] format_ids, int[] collation_ids, boolean hasCollatedTypes)
          Creates a new scratch space.
 
Method Summary
 DataValueDescriptor[] get_row_for_export(Transaction rawtran)
          Return an empty template (possibly partial) row to be given back to a client.
 RowPosition get_scratch_row_position()
          Return a scratch RowPosition.
 DataValueDescriptor[] get_scratch_row(Transaction rawtran)
          Return an empty template (possibly partial) row to be used and reused internally for processing.
 DataValueDescriptor[] get_template(Transaction rawtran)
          Return a complete empty row.
 boolean hasCollatedTypes()
          Tells if there is at least one column with a collation different than UCS BASIC in the conglomerate.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

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:
ConglomerateController.delete(org.apache.derby.iapi.types.RowLocation), ConglomerateController.replace(org.apache.derby.iapi.types.RowLocation, org.apache.derby.iapi.types.DataValueDescriptor[], org.apache.derby.iapi.services.io.FormatableBitSet)
Constructor Detail

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 Detail

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.
Throws:
StandardException - Standard exception policy.

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.

Built on Wed 2013-06-12 15:21:56+0000, from revision ???

Apache Derby V10.10 Internals - Copyright © 2004,2013 The Apache Software Foundation. All Rights Reserved.