Class FKInfo
- java.lang.Object
-
- org.apache.derby.impl.sql.execute.FKInfo
-
- All Implemented Interfaces:
java.io.Externalizable
,java.io.Serializable
,Formatable
,TypedFormat
public class FKInfo extends java.lang.Object implements Formatable
This is a simple class used to store the run time information about a foreign key. Used by DML to figure out what to check.- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description (package private) int[]
colArray
(package private) boolean[]
deferrable
(package private) long[]
fkConglomNumbers
(package private) java.lang.String[]
fkConstraintNames
(package private) UUID[]
fkIds
(package private) boolean[]
fkIsSelfReferencing
private UUID[]
fkUUIDs
static int
FOREIGN_KEY
This class implements Formatable.(package private) int[]
raRules
(package private) long
refConglomNumber
(package private) UUID
refConstraintID
(package private) boolean
refConstraintIsDeferrable
static int
REFERENCED_KEY
(package private) UUID
refUUID
(package private) RowLocation
rowLocation
(package private) java.lang.String
schemaName
(package private) int
stmtType
(package private) java.lang.String
tableName
(package private) int
type
-
Constructor Summary
Constructors Constructor Description FKInfo()
Niladic constructor for FormattableFKInfo(java.lang.String[] fkConstraintNames, java.lang.String schemaName, java.lang.String tableName, int stmtType, int type, UUID refUUID, long refConglomNumber, UUID refConstraintID, boolean refConstraintIsDeferrable, UUID[] fkUUIDs, long[] fkConglomNumbers, boolean[] fkIsSelfReferencing, int[] colArray, RowLocation rowLocation, int[] raRules, boolean[] deferrable, UUID[] fkIds)
Constructor for FKInfo
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static FKInfo[]
chooseRelevantFKInfos(FKInfo[] fkInfo, int[] cols, boolean addAllTypeIsFK)
Comb through the FKInfo structures and pick out the ones that have columns that intersect with the input columns.int
getTypeFormatId()
Get the formatID which corresponds to this class.void
readExternal(java.io.ObjectInput in)
Read this object from a stream of stored objects.java.lang.String
toString()
void
writeExternal(java.io.ObjectOutput out)
Write this object out
-
-
-
Field Detail
-
FOREIGN_KEY
public static final int FOREIGN_KEY
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, between releases, you add more fields to this class, then you should bump the version number emitted by the getTypeFormatId() method. OR, since this is something that is used in stored prepared statements, it is ok to change it if you make sure that stored prepared statements are invalidated across releases.- See Also:
- Constant Field Values
-
REFERENCED_KEY
public static final int REFERENCED_KEY
- See Also:
- Constant Field Values
-
schemaName
java.lang.String schemaName
-
tableName
java.lang.String tableName
-
type
int type
-
refUUID
UUID refUUID
-
refConglomNumber
long refConglomNumber
-
refConstraintID
UUID refConstraintID
-
refConstraintIsDeferrable
boolean refConstraintIsDeferrable
-
stmtType
int stmtType
-
rowLocation
RowLocation rowLocation
-
fkConstraintNames
java.lang.String[] fkConstraintNames
-
fkUUIDs
private UUID[] fkUUIDs
-
fkConglomNumbers
long[] fkConglomNumbers
-
fkIds
UUID[] fkIds
-
fkIsSelfReferencing
boolean[] fkIsSelfReferencing
-
colArray
int[] colArray
-
raRules
int[] raRules
-
deferrable
boolean[] deferrable
-
-
Constructor Detail
-
FKInfo
public FKInfo()
Niladic constructor for Formattable
-
FKInfo
public FKInfo(java.lang.String[] fkConstraintNames, java.lang.String schemaName, java.lang.String tableName, int stmtType, int type, UUID refUUID, long refConglomNumber, UUID refConstraintID, boolean refConstraintIsDeferrable, UUID[] fkUUIDs, long[] fkConglomNumbers, boolean[] fkIsSelfReferencing, int[] colArray, RowLocation rowLocation, int[] raRules, boolean[] deferrable, UUID[] fkIds)
Constructor for FKInfo- Parameters:
fkConstraintNames
- the foreign key constraint namesschemaName
- the name of the schema of the table being modifiedtableName
- the name of the table being modifiedstmtType
- the type of the statement: e.g. StatementType.INSERTtype
- either FKInfo.REFERENCED_KEY or FKInfo.FOREIGN_KEYrefUUID
- UUID of the referenced constraint's supporting indexrefConglomNumber
- conglomerate number of the referenced keyrefConstraintID
- UUID of the referenced constraintrefConstraintIsDeferrable
-true
iff the referenced key constraint is deferrablefkUUIDs
- an array of fkUUIDs of backing indexes. if FOREIGN_KEY, then just one element, the backing index of the referenced keys. if REFERENCED_KEY, then all the foreign keysfkConglomNumbers
- array of conglomerate numbers, corresponds to fkUUIDsfkIsSelfReferencing
- array of conglomerate booleans indicating whether the foreign key references a key in the same tablecolArray
- map of columns to the base row that DML is changing. 1 based. Note that this maps the constraint index to a row in the target table of the current DML operation.rowLocation
- a row location template for the target table used to pass in a template row to tc.openScan()raRules
- referential action rulesdeferrable
- the corresponding constraint is deferrablefkIds
- the foreign key constraints' uuids.
-
-
Method Detail
-
chooseRelevantFKInfos
public static FKInfo[] chooseRelevantFKInfos(FKInfo[] fkInfo, int[] cols, boolean addAllTypeIsFK)
Comb through the FKInfo structures and pick out the ones that have columns that intersect with the input columns.- Parameters:
fkInfo
- array of fkinfoscols
- array of columnsaddAllTypeIsFK
- take all with type == FOREIGN_KEY- Returns:
- array of relevant fkinfos
-
writeExternal
public void writeExternal(java.io.ObjectOutput out) throws java.io.IOException
Write this object out- Specified by:
writeExternal
in interfacejava.io.Externalizable
- Parameters:
out
- write bytes here- Throws:
java.io.IOException
- thrown on error
-
readExternal
public void readExternal(java.io.ObjectInput in) throws java.io.IOException, java.lang.ClassNotFoundException
Read this object from a stream of stored objects.- Specified by:
readExternal
in interfacejava.io.Externalizable
- Parameters:
in
- read this.- Throws:
java.io.IOException
- thrown on errorjava.lang.ClassNotFoundException
- thrown on error
-
getTypeFormatId
public int getTypeFormatId()
Get the formatID which corresponds to this class.- Specified by:
getTypeFormatId
in interfaceTypedFormat
- Returns:
- the formatID of this class
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-