Relaxed CRC validation rule for pre-compiled r-code
- Last Updated: February 11, 2026
- 2 minute read
- OpenEdge
- Version 13.0
- Documentation
When a DataServer application is presented to a non-matching schema holder, the
application partner can avoid the recompilation of r-code despite the schema
inconsistencies. This is particularly important when the application partner or an
independent software vendor (ISV) ships r-code instead of the source code (.p
file(s)).
You can run the r-code without recompilation against the non-compliant schema if you add a new field or modify a certain field attribute of an existing field in the database provided the modification does not change the OpenEdge data type, or the number of extents of a field is being referenced by the r-code.
Internally, the DataServer schema holder stores the table CRC value for each user table loaded into the schema holder. This CRC value is the currency/signature for that particular table and is compared against the CRC value stored in the r-code if that particular table (the signature at the time of compile) is referenced by the r-code. Any mismatch between the two values is reported as CRC mismatch error.
- Adding a new field: New fields added in the Oracle DataServer get a higher
field number than the existing fields. This avoids position conflicts with any
existing fields in the table. Existing fields will retain the rpos and will
never change once assigned an rpos. If a field is deleted, the rpos of that
field will not be reused. Note: If a new field is added from a
.dffile in the same position attribute as that of the deleted field rpos, then the rpos can be reused by the new field. - Changing the precision of a character column: Reducing the precision of a CHARACTER data type is possible without requiring a recompile. However, this will cause a string data right truncation OCI error if the r-code tries to insert a value larger than the precision of the new column. Reducing the precision does not cause an error for read only operations because the client code does not use precision from the r-code while retrieving records.