Modifying a property includes changing the size, type, or attributes of the property, as follows.
Changing the size of a
If the length is decreased, the new value is truncated, if necessary.
Changing the scale factor or precision of a
If the scale factor is decreased, the value is truncated, if necessary. If the precision is decreased, the reorganization will fail if any value exceeds the new precision.
Changing the primitive type. The primitive type conversion rules applied for all primitive type to primitive type conversions are those of the JADE language. For details, see "Converting Primitive Types", in Chapter 1.
For the following undefined conversions, the new value is null.
Any primitive type to or from a reference.
A collection to or from a non-collection (Arrays, Dictionaries, and so on).
Changing the type of a reference (excluding interface references and collections).
Changing the type of a reference to a superclass of the current class does not require a reorganization.
Changing the type of a reference to a subclass of the current class requires a reorganization. All instances of the reference must be null or must refer to an instance of the new class or a subclass of that class.
Changing the type of a reference to a completely different class requires a reorganization. All instances of the reference must be null.
Changing the type of an interface reference.
Changing the type of an interface reference to an interface that is extended by the current interface does not require a reorganization.
Changing the type of an interface reference to an interface that extends the current interface requires a reorganization. All instances of the reference must be null or must refer to an instance that implements the interface or an instance that extends that interface.
Changing the type of an interface reference to a completely different interface requires a reorganization. All instances of the reference must be null.
Changing the type of a collection reference (excluding collections of interfaces).
Changing the type of a collection reference to a superclass of the current collection does not require a reorganization as long as the keys remain valid.
Changing the type of a collection reference to a subclass of the current collection class requires a reorganization. All instances of the collection reference must be empty or must refer to an instance of the new collection class or a subclass of that class.
Changing the type of a collection reference to a completely different collection class requires a reorganization. All instances of the reference must be empty.
Changing the type of a collection of interfaces.
Changing the type of a collection of interfaces to a collection of interfaces that are extended by the current interface does not require a reorganization as long as the keys remain valid.
Changing the type of a collection of interfaces that extend the current interface requires a reorganization. All instances of the collection must be empty or must refer to an instance that implements the interface or an instance that extends that interface.
Changing the type of a collection of interfaces to a completely different collection of interfaces requires a reorganization. All instances of the reference must be empty.
Moving an exclusive collection to a superclass or a subclass requires a reorganization.
Moving a non-embedded string or binary (that is, one that has a length greater than 540) to a superclass or a subclass requires a reorganization.
Changing the property attributes. Changing a property to or from virtual from or to non-virtual is handled as though the property were added or deleted, and requires reorganization.
Changing a property that is the key of a dictionary will result in all instances of the dictionary requiring a reorganization. For details, see "Changing Membership of a Collection", later in this chapter.