org.apache.derby.catalog.types
Class IndexDescriptorImpl

java.lang.Object
  extended byorg.apache.derby.catalog.types.IndexDescriptorImpl
All Implemented Interfaces:
java.io.Externalizable, Formatable, IndexDescriptor, java.io.Serializable, TypedFormat

public class IndexDescriptorImpl
extends java.lang.Object
implements IndexDescriptor, Formatable

See Also:
IndexRowGenerator, Serialized Form

Field Summary
private  int[] baseColumnPositions
           
private  java.lang.String indexType
           
private  boolean[] isAscending
           
private  boolean isUnique
          This class implements Formatable.
private  int numberOfOrderedColumns
           
 
Constructor Summary
IndexDescriptorImpl()
          Zero-argument constructor for Formatable interface
IndexDescriptorImpl(java.lang.String indexType, boolean isUnique, int[] baseColumnPositions, boolean[] isAscending, int numberOfOrderedColumns)
          Constructor for an IndexDescriptorImpl
 
Method Summary
 int[] baseColumnPositions()
          Returns an array of column positions in the base table.
 boolean equals(java.lang.Object other)
          Test for value equality
 int getKeyColumnPosition(int heapColumnPosition)
          Returns the postion of a column.
 java.lang.Integer getKeyColumnPosition(java.lang.Integer heapColumnPosition)
          Returns the postion of a column.
 int getTypeFormatId()
          Get a universally unique identifier for the type of this object.
 int hashCode()
           
 java.lang.String indexType()
          Returns the type of the index.
 boolean[] isAscending()
          Returns array of boolean telling asc/desc info for each index key column for convenience of using together with baseColumnPositions method.
 boolean isAscending(java.lang.Integer keyColumnPosition)
          Returns true if the specified column is ascending in the index (1-based).
 boolean isDescending(java.lang.Integer keyColumnPosition)
          Returns true if the specified column is descending in the index (1-based).
 boolean isUnique()
          Returns true if the index is unique.
 int numberOfOrderedColumns()
          Returns the number of ordered columns.
 void readExternal(java.io.ObjectInput in)
           
 void setBaseColumnPositions(int[] baseColumnPositions)
          set the baseColumnPositions field of the index descriptor.
 void setIsAscending(boolean[] isAscending)
          set the isAscending field of the index descriptor.
 void setNumberOfOrderedColumns(int numberOfOrderedColumns)
          set the numberOfOrderedColumns field of the index descriptor.
 java.lang.String toString()
           
 void writeExternal(java.io.ObjectOutput out)
           
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

isUnique

private boolean isUnique
This class implements Formatable. That means that it can write itself to and from a formatted stream. If you add more fields to this class, make sure that you also write/read them with the writeExternal()/readExternal() methods. If, inbetween releases, you add more fields to this class, then you should bump the version number emitted by the getTypeFormatId() method.


baseColumnPositions

private int[] baseColumnPositions

isAscending

private boolean[] isAscending

numberOfOrderedColumns

private int numberOfOrderedColumns

indexType

private java.lang.String indexType
Constructor Detail

IndexDescriptorImpl

public IndexDescriptorImpl(java.lang.String indexType,
                           boolean isUnique,
                           int[] baseColumnPositions,
                           boolean[] isAscending,
                           int numberOfOrderedColumns)
Constructor for an IndexDescriptorImpl

Parameters:
indexType - The type of index
isUnique - True means the index is unique
baseColumnPositions - An array of column positions in the base table. Each index column corresponds to a column position in the base table.
isAscending - An array of booleans telling asc/desc on each column.
numberOfOrderedColumns - In the future, it will be possible to store non-ordered columns in an index. These will be useful for covered queries.

IndexDescriptorImpl

public IndexDescriptorImpl()
Zero-argument constructor for Formatable interface

Method Detail

isUnique

public boolean isUnique()
Description copied from interface: IndexDescriptor
Returns true if the index is unique.

Specified by:
isUnique in interface IndexDescriptor
See Also:
IndexDescriptor.isUnique()

baseColumnPositions

public int[] baseColumnPositions()
Description copied from interface: IndexDescriptor
Returns an array of column positions in the base table. Each index column corresponds to a column position in the base table, except the column representing the location of the row in the base table. The returned array holds the column positions in the base table, so, if entry 2 is the number 4, the second column in the index is the fourth column in the table.

Specified by:
baseColumnPositions in interface IndexDescriptor
See Also:
IndexDescriptor.baseColumnPositions()

getKeyColumnPosition

public java.lang.Integer getKeyColumnPosition(java.lang.Integer heapColumnPosition)
Description copied from interface: IndexDescriptor
Returns the postion of a column.

Returns the position of a column within the key (1-based). 0 means that the column is not in the key.

Specified by:
getKeyColumnPosition in interface IndexDescriptor
See Also:
IndexDescriptor.getKeyColumnPosition(java.lang.Integer)

getKeyColumnPosition

public int getKeyColumnPosition(int heapColumnPosition)
Description copied from interface: IndexDescriptor
Returns the postion of a column.

Returns the position of a column within the key (1-based). 0 means that the column is not in the key. Same as the above method, but it uses int instead of Integer.

Specified by:
getKeyColumnPosition in interface IndexDescriptor
See Also:
IndexDescriptor.getKeyColumnPosition(java.lang.Integer)

numberOfOrderedColumns

public int numberOfOrderedColumns()
Description copied from interface: IndexDescriptor
Returns the number of ordered columns.

In the future, it will be possible to store non-ordered columns in an index. These will be useful for covered queries. The ordered columns will be at the beginning of the index row, and they will be followed by the non-ordered columns. For now, all columns in an index must be ordered.

Specified by:
numberOfOrderedColumns in interface IndexDescriptor
See Also:
IndexDescriptor.numberOfOrderedColumns()

indexType

public java.lang.String indexType()
Description copied from interface: IndexDescriptor
Returns the type of the index. For now, we only support B-Trees, so the value "BTREE" is returned.

Specified by:
indexType in interface IndexDescriptor
See Also:
IndexDescriptor.indexType()

isAscending

public boolean isAscending(java.lang.Integer keyColumnPosition)
Description copied from interface: IndexDescriptor
Returns true if the specified column is ascending in the index (1-based).

Specified by:
isAscending in interface IndexDescriptor
See Also:
IndexDescriptor.isAscending()

isDescending

public boolean isDescending(java.lang.Integer keyColumnPosition)
Description copied from interface: IndexDescriptor
Returns true if the specified column is descending in the index (1-based). In the current release, only ascending columns are supported.

Specified by:
isDescending in interface IndexDescriptor
See Also:
IndexDescriptor.isDescending(java.lang.Integer)

isAscending

public boolean[] isAscending()
Description copied from interface: IndexDescriptor
Returns array of boolean telling asc/desc info for each index key column for convenience of using together with baseColumnPositions method. Both methods return an array with subscript starting from 0.

Specified by:
isAscending in interface IndexDescriptor
See Also:
IndexDescriptor.isAscending()

setBaseColumnPositions

public void setBaseColumnPositions(int[] baseColumnPositions)
Description copied from interface: IndexDescriptor
set the baseColumnPositions field of the index descriptor. This is for updating the field in operations such as "alter table drop column" where baseColumnPositions is changed.

Specified by:
setBaseColumnPositions in interface IndexDescriptor
See Also:
IndexDescriptor.setBaseColumnPositions(int[])

setIsAscending

public void setIsAscending(boolean[] isAscending)
Description copied from interface: IndexDescriptor
set the isAscending field of the index descriptor. This is for updating the field in operations such as "alter table drop column" where isAscending is changed.

Specified by:
setIsAscending in interface IndexDescriptor
See Also:
IndexDescriptor.setIsAscending(boolean[])

setNumberOfOrderedColumns

public void setNumberOfOrderedColumns(int numberOfOrderedColumns)
Description copied from interface: IndexDescriptor
set the numberOfOrderedColumns field of the index descriptor. This is for updating the field in operations such as "alter table drop column" where numberOfOrderedColumns is changed.

Specified by:
setNumberOfOrderedColumns in interface IndexDescriptor
See Also:
IndexDescriptor.setNumberOfOrderedColumns(int)

toString

public java.lang.String toString()

readExternal

public void readExternal(java.io.ObjectInput in)
                  throws java.io.IOException,
                         java.lang.ClassNotFoundException
Specified by:
readExternal in interface java.io.Externalizable
Throws:
java.io.IOException - Thrown on read error
java.lang.ClassNotFoundException
See Also:
Externalizable.readExternal(java.io.ObjectInput)

writeExternal

public void writeExternal(java.io.ObjectOutput out)
                   throws java.io.IOException
Specified by:
writeExternal in interface java.io.Externalizable
Throws:
java.io.IOException - Thrown on write error
See Also:
Externalizable.writeExternal(java.io.ObjectOutput)

getTypeFormatId

public int getTypeFormatId()
Description copied from interface: TypedFormat
Get a universally unique identifier for the type of this object.

Specified by:
getTypeFormatId in interface TypedFormat
Returns:
The identifier. (A UUID stuffed in an array of 16 bytes).

equals

public boolean equals(java.lang.Object other)
Test for value equality

Parameters:
other - The other indexrowgenerator to compare this one with
Returns:
true if this indexrowgenerator has the same value as other

hashCode

public int hashCode()
See Also:
Object.hashCode()

Built on Mon 2007-06-04 09:58:47+0400, from revision ???

Apache Derby V10.1 Engine Documentation - Copyright © 1997,2005 The Apache Software Foundation or its licensors, as applicable.