13.07.2015 Views

Caché Upgrade Checklists - InterSystems Documentation

Caché Upgrade Checklists - InterSystems Documentation

Caché Upgrade Checklists - InterSystems Documentation

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Caché</strong> 2011.1 <strong>Upgrade</strong> Checklist%Library.ExtentSQLQuery or as some other query type. The overridden query must return rows corresponding to eachinstance of the class and the first column must be %ID.3.2.5.11 Change To i%var HandlingThe usage i%var is used in Get and Put methods to make direct references to an instance variable. The classcompiler previously converted i%var references into the internal slot number where the instance variable was stored. Inthis version, this is done by the system code which allows the class compiler to be more dynamic. A side effect of this isthat the i%var name is not validated at compile time. The code will compile and a runtime runtime error will be generatedif the var is not defined in the superclass tree.3.2.5.12 SQLROWIDNAME Usage EnforcedThe class keyword, SQLROWIDNAME, allows the user to define the name of the SQL column generated as the ROWID.This SQL column corresponds to the object ID which is only accessible through a method call such as %Id(). It is not validto override the SQLFIELDNAME of a property in a subclass because it violates the rule that every instance of a subclass isimplicitly an instance of its primary super class. The SQL ROWID column name cannot be overridden for the same reasons.Previously, this rule was not enforced on the SQLROWIDNAME value. It is enforced beginning in this version. Failure toobserve it will result in a failure to compile the class.3.2.5.13 %GUID Invalid As Column NameIf the user class has an existing column whose name is %GUID, then this will now trigger an error during class compile.If the class has GUIDENABLED as true, then the class cannot implement a method named %OverrideGuidAssignment(),a property named %%GUID, or a property whose SQLFIELDNAME is %GUID.3.2.5.14 /foldmethod Qualifier DeprecatedThe class compiler /foldmethod qualifier used to detect identical methods preserving only one in the generated codehas been deprecated. The qualifier no longer has any effect on the generated code.3.2.5.15 Bind Properties With CLASSNAME=1 As %Library.ListAny property that specifies CLASSNAME=1 will be bound to SQL as type %Library.List; CLASSNAME=1 means thevalue for the property is an OID which is in Objectscript $LIST format. A property defined as:Property OID As %Library.Persistent(CLASSNAME = 1) [ Required ];would, in previous releases, bind to SQL as %Library.Integer. starting with this release, it binds to %Library.List.3.2.5.16 Inheriting A Relationship Property From A Secondary Superclass ProhibitedIn previous versions, an attempted to inherit a relationship from a secondary superclass would get invalid results due tosilent failures of the relationship at runtime. Beginning with this version, the compiler nows detects this in the class compilerand reports an error:ERROR #5572: Can not inherit relationship property 'X' in class 'Y.Z' as a secondary superclass.The failure occurred because a primary subclass of a persistent class shares the same extent as the superclass; but a secondarysubclass does not. Inherited queries in the secondary subclass could not find the extent of the originating class to properlyreference the class data.56 <strong>Caché</strong> <strong>Upgrade</strong> <strong>Checklists</strong>

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

Saved successfully!

Ooh no, something went wrong!