org.apache.derby.impl.sql.execute
Class RIBulkChecker
- java.lang.Object
-
- org.apache.derby.impl.sql.execute.RIBulkChecker
-
public class RIBulkChecker extends java.lang.ObjectDo a merge run comparing all the foreign keys from the foreign key conglomerate against the referenced keys from the primary key conglomerate. The scanControllers are passed in by the caller (caller controls locking on said conglomerates).The comparision is done via a merge. Consequently, it is imperative that the scans are on keyed conglomerates (indexes) and that the referencedKeyScan is a unique scan.
Performance is no worse than N + M where N is foreign key rows and M is primary key rows.
Bulk fetch is used to further speed performance. The fetch size is LanguageProperties.BULK_FETCH_DEFAULT
- See Also:
LanguageProperties
-
-
Constructor Summary
Constructors Constructor and Description RIBulkChecker(Activation a, GroupFetchScanController referencedKeyScan, GroupFetchScanController foreignKeyScan, ExecRow templateRow, boolean quitOnFirstFailure, ConglomerateController unreferencedCC, ExecRow firstRowToFail, java.lang.String schemaName, java.lang.String tableName, UUID constraintId, boolean deferrable, long fkCID, long pkCID)Create a RIBulkChecker
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method and Description intdoCheck()Perform the check.
-
-
-
Constructor Detail
-
RIBulkChecker
public RIBulkChecker(Activation a, GroupFetchScanController referencedKeyScan, GroupFetchScanController foreignKeyScan, ExecRow templateRow, boolean quitOnFirstFailure, ConglomerateController unreferencedCC, ExecRow firstRowToFail, java.lang.String schemaName, java.lang.String tableName, UUID constraintId, boolean deferrable, long fkCID, long pkCID) throws StandardException
Create a RIBulkChecker- Parameters:
a- the activationreferencedKeyScan- scan of the referenced key's backing index. must be uniqueforeignKeyScan- scan of the foreign key's backing indextemplateRow- a template row for the indexes. Will be cloned when it is used. Must be a full index row.quitOnFirstFailure- quit on first unreferenced keyunreferencedCC- put unreferenced keys herefirstRowToFail- the first row that fails the constraint is copied to this, if non-nullschemaName- schema name of the table we insert intotableName- table name of the table we insert intoconstraintId- constraint id of the foreign constraintdeferrable-trueif the constraint is deferrablefkCID- conglomerate id of the foreign key supporting indexpkCID- conglomerate id of the referenced primary key or unique index.- Throws:
StandardException
-
-
Method Detail
-
doCheck
public int doCheck() throws StandardExceptionPerform the check. If deferred constraint mode, the numbers of failed rows returned will be always be 0 (but any violating keys will have been saved for later checking).- Returns:
- the number of failed rows
- Throws:
StandardException- on error
-
-
DataMelt 3.0 © DataMelt by jWork.ORG