Class IndexSetChanger
java.lang.Object
org.apache.derby.impl.sql.execute.IndexSetChanger
Perform Index maintenace associated with DML operations for a table's
indexes.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Activation
private static final int
(package private) ConglomerateController
(package private) FormatableBitSet
(package private) boolean[]
(package private) IndexChanger[]
(package private) long[]
private DynamicCompiledOpenConglomInfo[]
(package private) String[]
private StaticCompiledOpenConglomInfo[]
(package private) IndexRowGenerator[]
private int
(package private) boolean
private int
private static final int
(package private) TemporaryRowHolderImpl
(package private) TransactionController
private static final int
private int
-
Constructor Summary
ConstructorsConstructorDescriptionIndexSetChanger
(IndexRowGenerator[] irgs, long[] indexCIDS, StaticCompiledOpenConglomInfo[] indexSCOCIs, DynamicCompiledOpenConglomInfo[] indexDCOCIs, String[] indexNames, ConglomerateController baseCC, TransactionController tc, int lockMode, FormatableBitSet baseRowReadMap, int isolationLevel, Activation activation) Create a new IndexSetChanger -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
Close this IndexSetChanger.void
delete
(ExecRow baseRow, RowLocation baseRowLocation) Perform index maintenance associated with deleting a row from a table.void
finish()
Finish processing the changes for this IndexSetChanger.void
insert
(ExecRow baseRow, RowLocation baseRowLocation) Perform index maintenance associated with insering a row into a table.void
open
(boolean[] fixOnUpdate) Open this IndexSetchanger.private void
openIndexes
(int whatToOpen) Open the indexes that must be fixed if they are not already open.void
setBaseCC
(ConglomerateController baseCC) Propagate the heap's ConglomerateController to all of the underlying index changers.void
setRowHolder
(TemporaryRowHolderImpl rowHolder) Set the row holder for all underlying changers to use.toString()
Create a string describing the state of this IndexSetChangervoid
update
(ExecRow oldBaseRow, ExecRow newBaseRow, RowLocation baseRowLocation) Perform index maintenance associated with updating a row in a table.
-
Field Details
-
irgs
IndexRowGenerator[] irgs -
indexCIDS
long[] indexCIDS -
indexDCOCIs
-
indexSCOCIs
-
indexNames
String[] indexNames -
baseCC
ConglomerateController baseCC -
baseRowReadMap
FormatableBitSet baseRowReadMap -
tc
-
rowHolder
TemporaryRowHolderImpl rowHolder -
indexChangers
IndexChanger[] indexChangers -
lockMode
private int lockMode -
fixOnUpdate
boolean[] fixOnUpdate -
isOpen
boolean isOpen -
NO_INDEXES
private static final int NO_INDEXES- See Also:
-
UPDATE_INDEXES
private static final int UPDATE_INDEXES- See Also:
-
ALL_INDEXES
private static final int ALL_INDEXES- See Also:
-
whatIsOpen
private int whatIsOpen -
isolationLevel
private int isolationLevel -
activation
-
-
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 conglomerateslockMode
- The lock mode (granularity) for the indexes.baseRowReadMap
- Map of columns read in. 1 based.isolationLevel
- Isolation level to useactivation
- Current activation- Throws:
StandardException
- Thrown on error
-
-
Method Details
-
open
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
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
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
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
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
Propagate the heap's ConglomerateController to all of the underlying index changers.- Parameters:
baseCC
- The heap's ConglomerateController.
-
finish
Finish processing the changes for this IndexSetChanger. This means doing the deferred inserts for updates of unique indexes.- Throws:
StandardException
- Thrown on error
-
close
Close this IndexSetChanger.- Throws:
StandardException
- Thrown on error
-
toString
Create a string describing the state of this IndexSetChanger
-