IndexDescriptorImpl
, IndexRowGenerator
public interface IndexDescriptor
Whereas non-deferrable constraints are backed by UNIQUE indexes, deferrable constraints are backed by non-unique indexes. The duplicate checking on inserts and updates for deferrable constraints are handled at the language level, not by the store level. The following table shows the correspondence between the constraint types and the index attributes used:
\ Value | Number of index columns | Check Attribute \ | in physical BTree key | in -------------------------------------------------------------------- unique | true | N - 1 (row location | isUniqueWithDuplicateNulls | false | not part of key) | Store uniqueDeferrable | false | | Btree hasDeferrableChecking | false | | code
\ Value | Number of index columns | Check Attribute \ | in physical BTree key | in ------------------------------------------------------------ ------- unique | false | N | isUniqueWithDuplicateNulls | true | | Store uniqueDeferrable | false | | Btree hasDeferrableChecking | false | | code
\ Value | Number of index columns | Check Attribute \ | in physical BTree key | in ------------------------------------------------------------ ------- unique | false | N | isUniqueWithDuplicateNulls | false | | Lang. uniqueDeferrable | true | | code hasDeferrableChecking | true | |
\ Value | Number of index columns | Check Attribute \ | in physical BTree key | in ------------------------------------------------------------ ------- unique | false | N | isUniqueWithDuplicateNulls | true | | Lang. uniqueDeferrable | false | | code hasDeferrableChecking | true | |
Modifier and Type | Method | Description |
---|---|---|
int[] |
baseColumnPositions() |
Returns an array of column positions in the base table.
|
int |
getKeyColumnPosition(int heapColumnPosition) |
Returns the postion of a column.
|
boolean |
hasDeferrableChecking() |
Returns true if the index is used to support a deferrable constraint.
|
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.
|
boolean |
isUniqueDeferrable() |
The index represents a PRIMARY KEY or a UNIQUE NOT NULL constraint which
is deferrable.
|
boolean |
isUniqueWithDuplicateNulls() |
Returns true if the index is duplicate keys only for null key parts.
|
int |
numberOfOrderedColumns() |
Returns the number of ordered columns.
|
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.
|
boolean isUnique()
boolean isUniqueWithDuplicateNulls()
boolean isUniqueDeferrable()
true
implies isUnique() == false
and
isUniqueWithDuplicateNulls() == false
and
hasDeferrableChecking() == true
.true
if the index represents such a constraintboolean hasDeferrableChecking()
int[] baseColumnPositions()
int getKeyColumnPosition(int heapColumnPosition)
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.
int numberOfOrderedColumns()
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.
java.lang.String indexType()
boolean[] isAscending()
boolean isAscending(java.lang.Integer keyColumnPosition)
boolean isDescending(java.lang.Integer keyColumnPosition)
void setBaseColumnPositions(int[] baseColumnPositions)
void setIsAscending(boolean[] isAscending)
void setNumberOfOrderedColumns(int numberOfOrderedColumns)
Apache Derby V10.14 Internals - Copyright © 2004,2018 The Apache Software Foundation. All Rights Reserved.