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:
-
Error 98 – Errors to meta schema structure with fixes
-
Error 99 – Errors to meta schema structure without fixes (that is, no repair is provided and it is your responsibility to repair this error yourself)
-
Error 88 – Errors to versioning structure without fixes (that is, no repair is provided and it is your responsibility to repair this error yourself)
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 #'00'
Error 45 – Incorrect Method Invocation
From version 2020.0.02.063 and 2022.0.02.016 and higher, an error 45 is detected when the invocation property of a method has been set to an incorrect value. (In earlier versions, the repair for error 44 was not applied correctly. This repair sets the method invocation to the correct value.)
Repair:
setProperty oid methodInvocation #'00'