13.07.2015 Views

Caché Upgrade Checklists - InterSystems Documentation

Caché Upgrade Checklists - InterSystems Documentation

Caché Upgrade Checklists - InterSystems Documentation

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Developers5.2.6.11 Change In Support For COSEXPRESSIONPrior to this release, the use of COSEXPRESSION in a parameter definition would be treated in the same manner as macrosubstitution. That is,parameter P1 as COSEXPRESSION = """Red"",""Green"",""Blue""";......Set X = $LISTBUILD(..#P1)would be treated as if it wereSet X = $LISTBUILD("Red","Green","Blue")In this version of <strong>Caché</strong>, a COSEXPRESSION is constrained to return only a single value. So the parameter definition mustbe rewritten asparameter P1 as COSEXPRESSION = "$LISTBUILD(""Red"",""Green"",""Blue"")";or an error will be reported at the time the class is compiled.5.2.6.12 Superclass Reference ##superThe usage ..ClassmethodName() now always calls that classmethod in the current class, not that of the superclass. Classmethodin the superclass are now accessed with the expression ##super.ClassmethodName().5.2.6.13 Codemode=Call Cannot Using Variable-Length Argument ListMethod marked as “codemode=call” are no longer allowed to use variable length argument lists. Such use will cause anerror when they are compiled. They need to be rewritten to specify a fixed list of arguments.5.2.6.14 Normalize Results of %Exists And %ExistsId For SubclassesIn prior versions, if an application called %Exists passing a fully-formed OID (one that included the classname in it), then<strong>Caché</strong> always polymorphically dispatched to the %Exist method of that class. For example, calling %Exists on Sample.Employeepassing an OID of a Sample.Person would return true. After analysis, this is considered to be a error sincecalling %ExistsId on Sample.Employee passing the same OID would return false because this is not an instance of Sample.Employeeor one of its subclasses.In this version, the behavior is changed so %Exists and %ExistsId now both return the correct result in this case. It ispossible, but unlikely an application may have been relying on this incorrect behavior.5.2.6.15 Limits On Class Descriptor SizeCompilation of a class generates a data structure called a “class descriptor” that contains summary data about the classand its components: properties, methods, parameters, indexes, and so on. Information on each group (such as the methodsdefined) is stored in its own table and is subject to the maximum limit on <strong>Caché</strong> strings, 32KB.In this version of <strong>Caché</strong>, the table formats have changed. The amount of information stored for each method has increased,while that for a property has decreased. The result is that classes which contain many hundreds of methods or propertiesmay find that the resulting class descriptor exceeds one or more of its table limits resulting in a error.Note:Classes which encounter this error must be refactored to reduce the number of entries.The number of methods, properties, indexes and so on includes inherited and generated components not only theones explicitly visible in the class source. Also, properties may cause the generation of methods, for example,Get and Set.<strong>Caché</strong> <strong>Upgrade</strong> <strong>Checklists</strong> 123

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!