9 | | • in the FdoIInsert and FdoIUpdate implementations of non-RDBMS providers that support Property Value Constraints. When a property has a constraint, each property value being inserted or updated is validated against this constraint.[[br]] |
10 | | • in the FdoIApplySchema implementation of the SDF Provider. This provider does not allow Value constraints, on Properties with data, to be made more restrictive, since the existing data might violate the updated constraint. Checking whether a range constraint is being made more restrictive, involves the comparing of its old and new range endpoints.[[br]] |
| 9 | • in the FdoIInsert and FdoIUpdate implementations of non-RDBMS providers that support Property Value Constraints. When a property has a constraint, each property value being inserted or updated is validated against this constraint.[[br]] |
| 10 | • in the FdoIApplySchema implementation of the SDF Provider. This provider does not allow Value constraints, on Properties with data, to be made more restrictive, since the existing data might violate the updated constraint. Checking whether a range constraint is being made more restrictive, involves the comparing of its old and new range endpoints.[[br]] |
14 | | • there are 12 different types of data values. The numeric ones can be compared using basic operators ( >, <, ==, etc. ), but runtime functions are required for strings. For !DateTimes each component ( year, month, etc. ) must be compared.[[br]] |
15 | | • the data values to be compared might be of different types, meaning that type conversion may need to be done before the values can be compared. Some types are not compatible and cannot be compared.[[br]] |
16 | | • one or both of the data values may be null. A null value cannot be compared to a not-null value even if both have the same data type.[[br]] |
| 14 | • there are 12 different types of data values. The numeric ones can be compared using basic operators ( >, <, ==, etc. ), but runtime functions are required for strings. For !DateTimes each component ( year, month, etc. ) must be compared.[[br]] |
| 15 | • the data values to be compared might be of different types, meaning that type conversion may need to be done before the values can be compared. Some types are not compatible and cannot be compared.[[br]] |
| 16 | • one or both of the data values may be null. A null value cannot be compared to a not-null value even if both have the same data type.[[br]] |
20 | | • there is no consistent handling of type comparisons. For example, different parts of FDO might handle null values differently.[[br]] |
21 | | • code duplication. More expensive maintenance if the same fix has to be applied in multiple places (this can easily happen when the value comparison code is cloned to different places).[[br]] |
22 | | • more difficult for developers to find the value comparison functions currently available, since these can be in various places.[[br]] |
| 20 | • there is no consistent handling of type comparisons. For example, different parts of FDO might handle null values differently.[[br]] |
| 21 | • code duplication. More expensive maintenance if the same fix has to be applied in multiple places (this can easily happen when the value comparison code is cloned to different places).[[br]] |
| 22 | • more difficult for developers to find the value comparison functions currently available, since these can be in various places.[[br]] |
46 | | ''!FdoCompareType_Equal'': this and the other value are equal or both null[[br]] |
47 | | ''!FdoCompareType_Greater'': this value is greater than the other value[[br]] |
48 | | ''!FdoCompareType_Less'': this value is less than the other value[[br]] |
49 | | ''!FdoCompareType_Undefined'': these two values are different but cannot be compared. |
| 46 | ''!FdoCompareType_Equal'': this and the other value are equal or both null[[br]] |
| 47 | ''!FdoCompareType_Greater'': this value is greater than the other value[[br]] |
| 48 | ''!FdoCompareType_Less'': this value is less than the other value[[br]] |
| 49 | ''!FdoCompareType_Undefined'': these two values are different but cannot be compared. |
92 | | '''String, CLOB''': Values will be ordered lexically. TBD: Should collation be a default binary one or the one for the current locale? |
93 | | |
94 | | '''BLOB''': each pair of bytes from the two values will be compared, starting at the first ones, until the first differing pair of bytes is reached. Comparison will be based on the binary values of these differing bytes. If the end of one BLOB is reached before the other one, the longer BLOB will be considered to be greater than the other BLOB. |
| 92 | ''BLOB'': each pair of bytes from the two values will be compared, starting at the first ones, until the first differing pair of bytes is reached. Comparison will be based on the binary values of these differing bytes. If the end of one BLOB is reached before the other one, the longer BLOB will be considered to be greater than the other BLOB. |