Logical Certifier Errors and Repairs

This section describes the errors that can be detected and repaired when using the JADE Logical Certifier utility to check the consistency of your JADE database, particularly the validation of inverse references and collections. For details, see "Overview", earlier in this chapter.

The errors that can be detected when using the Logical Certifier utility to check the referential integrity of user meta (system) schema data are:

In the meta data errors, entity names are output where possible. However, in some cases the fully qualified name may not be available because the required meta schema entities required to output the full name may be null.

When using this section, the key for user data errors is as follows.

In addition, manual repair indicates that you can repair the error if the property refProp is maintained manually and automatic repair indicates that the error can be repaired if the property refProp is maintained automatically.

In each of the user data errors in the range 1 through 32 described in this section, the repair that is documented after each diagram corresponds to the fixcommand line in the _logcert.fix file.

Error 1 – Missing Reference to a Collection

An error 1 is detected when the collection does not include a reference to an inverse object.

Repair:

add inverseColl obj

Error 2 – Property References an Invalid Object

An error 2 is detected when a property references an invalid object.

Repair:

If refProp is part of a keyPath then
    nullKP obj refProp
else
    null obj refProp

Error 3 – Collection Contains Invalid Keys

An error 3 is detected when a collection contains an object at invalid keys.

Case A – Object was found via foreach relatedObj in coll but not via coll.includes(relatedObj)

Repair:

rebuild coll

If the object has an invalid key path, it is your responsibility to repair the error yourself.

Case B – Object was found in the collection multiple times with valid and invalid keys

Repair:

rebuild coll

If the object has an invalid key path, it is your responsibility to repair the error yourself.

Error 4 – Collection Size Mismatch

An error 4 is detected when a collection size header does not match the number of entries in the collection.

The number of entries is found when foreach relatedObj in coll does not agree with coll.size.

Repair:

rebuild coll

Error 5 – Collection Does Not Include Reference to Inverse Collection

An error 5 is detected when a collection does not include a reference to an inverse collection.

Repair:

add inverseColl obj

Error 6 – Property References an Invalid Inverse Object

An error 6 is detected when a property references an invalid inverse object.

Manual repair:

If inverseProp is part of a keyPath then
    setKP relatedObj inverseProp obj
else
    set relatedObj inverseProp obj

Automatic repair:

If inverseProp is part of a keyPath then
    nullKP obj refProp
else
    null obj refProp

Error 7 – Property Does Not Reference an Inverse Object

An error 7 is detected when a property does not reference an inverse object.

Case A – inverseObj = null

Repair:

set relatedObj inverseProp obj

Case B – relatedObj.inverseProp <> obj and inverseObj.refProp = relatedObj

Repair:

null obj refProp

Case C – relatedObj.inverseProp <> obj and inverseObj.refProp <> relatedObj

Repair:

set relatedObj inverseProp obj

Error 8 – No Inverses for Reference Property

An error 8 is detected when no inverses are found for a reference property.

Manual/automatic repair:

Select null or lines to populate all inverses.

Automatic repair:

null obj refProp

Error 9

The JADE Logical Certify utility error 9 is reserved for future use.

Error 10 – Collection Has a Bad Root Block

An error 10 is detected when a collection has a bad root block.

Repair:

rebuild coll

If the repair action is unsuccessful, contact your local JADE support center or JADE Support if your JADE licenses include support.

Error 11 – Collection Contains a Null Member

An error 11 is detected when a collection contains a null member. The collection is not an array.

Repair:

rebuild coll

Error 12 – Collection Contains an Invalid Reference

An error 12 is detected when a collection contains an invalid reference.

Repair:

rebuild coll

Error 13 – Collection Contains Invalid References to an Inverse Object

An error 13 is detected when a collection contains invalid references to an inverse object.

Manual repair:

set relatedObj inverseProp obj

Automatic repair:

remove coll inverseProp
null relatedObj inverseProp

Error 14 – Collection Member Does Not Reference an Inverse Object

An error 14 is detected when a member of a collection does not reference an inverse object.

Case A – inverseObj.inverseProp = null

Repair:

set relatedObj inverseProp obj

Case B – relatedObj.inverseProp <> obj and inverseObj.refProp.includes(relatedObj) = true

Repair:

remove coll relatedObj

Case C – relatedObj.inverseProp <> obj and inverseObj.refProp.includes(relatedObj) = false

Repair:

set relatedObj inverseProp obj

Error 15 – No Inverses Found for Reference Property in a Collection

An error 15 is detected when no inverse references are found for a reference property in a collection.

Manual/automatic repair:

Select remove or lines to populate inverse.

Automatic repair:

remove coll relatedObj

Error 16 – Collection Exists but Subobject Not Set in Parent

An error 16 is detected when a collection exists but no sub-object is set in the parent object.

Repair:

setBit obj subObj

Error 17 – Object Instance References an Invalid Object

An error 17 is detected when an object instance references an invalid object.

Repair:

No repair provided.  It is your responsibility to repair this error yourself.

Error 18 – Object Instance Contains a Null Reference

An error 18 is detected when an object instance contains a null reference.

Repair:

No repair provided.  It is your responsibility to repair this error yourself.

Error 19 – Object Contains an Invalid Collection Reference

An error 19 is detected when an object contains an invalid collection reference.

Repair:

No repair provided.  It is your responsibility to repair this error yourself.

Error 20 – Object Contains a Null Collection Reference

An error 20 is detected when an object contains a null reference to a collection.

Repair:

No repair provided.  It is your responsibility to repair this error yourself.

Error 21 – Object Contains Non-Collection Reference

An error 21 is detected when an object contains a reference that is not to a collection.

Repair:

No repair provided.  It is your responsibility to repair this error yourself.

Error 22 – No Inverses are Possible in a Collection

An error 22 is detected when no inverse references are found in a collection (that is, when none is possible).

Repair:

remove coll relatedObj

Error 23 – No Inverses are Possible to a Property

An error 23 is detected when no inverse references are found to a property (that is, when none is possible).

Repair:

null obj refProp

Error 24 – Invalid Inverse Definition

An error 24 is detected when an inverse has not been defined correctly in the schema.

Repair:

No repair provided.  It is your responsibility to repair this error yourself.

Update your schema definition and remove the invalid inverse definition.

Error 25 – Exception on Includes

An error 25 is detected when an object is not found in a collection because coll.includes(obj) caused an exception. The possible causes are an invalid collection block or the object has an invalid key path.

Repair:

rebuild inverseColl

Case A

Case B

Error 26 – Collection Contains Object Not Meeting Constraint

An error 26 is detected when a collection contains a reference to an inverse object that does not meet the constraint.

Repair:

remove inverseColl obj

Error 27 – Reference Set to Object that Does Not Satisfy Constraint

An error 27 is detected when a reference is set to an object that does not satisfy a constraint.

Repair:

null relatedObj inverseProp

Error 28 – Error in Slob or Blob

An error 28 is detected when a String Large Object (slob) or Binary Large Object (blob) contains an error.

Repair:

fixSlobOrBlob obj prop

Error 29 – Duplicate Entry in Array with Inverse Reference

An error 29 is detected when an array with inverse references contains a duplicate entry.

Repair:

No repair provided.  It is your responsibility to repair this error yourself.

Error 30 – Invalid Inverse Definition for Shared Collection

An error 30 is detected when an illegal inverse is added to a shared collection.

Repair:

No repair provided.  It is your responsibility to repair this error yourself.

Error 31 – Invalid or Missing Collection Block

An error 31 is detected when a collection is found to have a missing or invalid collection block.

Repair:

rebuild coll

Error 32 – Invalid Instances in File

An error 32 is detected when instances of an abstract class are found, or when instances of a class are found in the wrong database map file.

This fix is commented out in the repair file that is generated. Instances of abstract classes should not exist. Instances of non‑abstract classes should exist only in the database map file in which the class is defined.

Any class instances that the JADE Logical Certifier utility reports in the wrong file cannot be accessed directly. You should investigate the nature of these instances before they are deleted, and consider restoring these instances.

Repair:

deleteInstances fileName className classNumber

Error 33 – DynaDictionary Incomplete or Inconsistent

From version 7.1.06 (Service Pack 5) and higher, an error 33 is detected when a DynaDictionary references a missing or inconsistent class or property definition; for example, when the membership class of the DynaDictionary is deleted, or when a property that is used as a member key property of a DynaDictionary is deleted.

Repair:

delete oid

Error 40 – Orphan Dictionary Block

From version 7.1.07 (Service Pack 6) and higher, an error 40 is detected when a dictionary block is found but the parent instance that owns the dictionary does not exist.

Repair:

orphanBlock filename

Error 41 – Orphan Blob/Slob

From version 7.1.07 (Service Pack 6) and higher, an error 41 is detected when a blob or slob subobject is found but the parent instance that owns the Blob or Slob does not exist.

Repair:

orphanSlobOrBlob filename

Error 42 – Orphan Dynamic Property Cluster

From version 7.1.07 (Service Pack 6) and higher, an error 42 is detected when a dynamic property cluster is found but the parent instance that owns the cluster does not exist.

Repair:

orphanCluster filename

Error 43 – Orphan Subobject (Collection)

From version 7.1.07 (Service Pack 6) and higher, an error 43 is detected when a collection subobject is found but the parent instance that owns the collection does not exist or the collection is invalid.

Repair:

deleteObject dbFileName oid

Error 44 – Orphan Event Methods

From version 2020.0.01 and higher, an error 44 is detected when an event method is not associated with a Form, Control, or JadeDotNetObject reference (for example, a control was deleted from a form but not all of the event methods of that control were deleted).

Repair:

setProperty oid methodInvocation 0