TITLE
    EOF 2.2 Patch 1 Overview
Article ID:
Created:
Modified:
70005
11/16/98
10/20/99

TOPIC

    Some versions of this patch are now obsolete . This patch should only be installed on OPENSTEP for Mach and HP-UX systems running EOF 2.2 or WebObjects 3.5.1. For Solaris and Windows NT systems, install EOF 2.2 Patch 2 instead.

    The WebObjects Current Patch List, TIL article 70037 , contains information on all available patches and workarounds for all versions of WebObjects, including EOF patches. The OPENSTEP Current Patch List, TIL article 70033 , contains information on all available patches and workarounds for all versions of OPENSTEP, including EOF patches. Please read these documents if you're not sure which patches you need on your system.


DISCUSSION

    About This Patch

    This document contains release notes for EOF 2.2 patch 1, an update to Apple's Enterprise Objects Framework on all supported platforms. Customers who are interested in upgrading from EOF 2.1, the version of EOF included in OPENSTEP Enterprise 4.2 and packaged separately for the Mach operating system, should contact Apple Enterprise Support for more information, through an authorized Apple Support contact or by emailing support@enterprise.apple.com .

    Installing EOF 2.2 Patch 1 on OPENSTEP 4.2 for Mach

    1. Download the Mach version of the patch from Apple's FTP site at ftp.info.apple.com. The file is located at:

    /Apple_Support_Area/Apple_Software_Updates/MultiCountry/Enterprise/EOF/patches/

    2.2/EOF2.2_Mach_Patch1.pkg.tar

    2 . Uncompress the Mach package file. Your web browser or FTP client may perform this step for you.

    3 . Log in as root . If you're not sure how to log in as root, see your system administrator.

    4. Double-click on the EOF2.2_Mach_Patch1.pkg file. Make sure that no EOF-based applications are running before you perform this step.

    5. Click the Install button in the Installer package window. An Install Package panel will open.

    6. Click 'Install' in the Install Package panel and, when prompted for confirmation, click OK to proceed. The Installer window displays information about the progress of the installation, which may take several minutes.

    Installing EOF 2.2 Patch 1 on Windows NT 4.0

    1. Download the Windows NT version of the patch fromApple's FTP site at ftp.info.apple.com. The file is located at:

    /Apple_Support_Area/Apple_Software_Updates/MultiCountry/Enterprise/EOF/

    patches/2.2/EOF2.2_NT_Patch1.TAR.gz

    Also download the installer script, "patcher.nt.sh" from:

    /Apple_Support_Area/Apple_Software_Updates/MultiCountry/Enterprise/openstep/

    patches/patcher.nt.sh

    2. Log in as a user with Administrator privileges.

    3. Open a Bourne shell . The Bourne shell should be available from your Start menu, under the WebObjects program group, or under your Apple root directory at Demos\sh.exe.

    4. Change to the directory containing the patch and the patch installer, "patcher.nt.sh".

    5. Type the following at the shell prompt (make sure that there are no EOF applications running first):

    patcher.nt.sh -install EOF2.2_NT_Patch1.TAR.gz

    For more information on using the patcher.nt.sh program, type the following at the command prompt:

    patcher.nt.sh -help

    6. Reboot your Windows NT system

    Installing EOF 2.2 Patch 1 on Solaris or HP-UX

    1. Download the Solaris version or the HP-UX version of this patch from Apple's FTP servers at ftp.info.apple.com. The files are located at:

    /Apple_Support_Area/Apple_Software_Updates/MultiCountry/Enterprise/EOF/

    patches/2.2/EOF2.2_Solaris_Patch1.TAR.Z

    and

    /Apple_Support_Area/Apple_Software_Updates/MultiCountry/Enterprise/EOF/

    patches/2.2/EOF2.2_HPUX_Patch1.TAR.Z

    Also download the installer script, "patcher.sh" from:

    /Apple_Support_Area/Apple_Software_Updates/MultiCountry/Enterprise/openstep/

    patches/patcher.sh

    2. Log in as root . If you're not sure how to log in as root, see your system administrator.

    3. Change to the directory containing the patch and the patch installer, "patcher.sh".

    4. Type the following at the shell prompt (make sure that there are no EOF applications running first):

    patcher.sh -install EOF2.2_Solaris_Patch1.TAR.Z

    or

    patcher.sh -install EOF2.2_HPUX_Patch1.TAR.Z

    For more information on using the "patcher.sh" program, type the following at the command prompt:

    patcher.sh -help

    5. Reboot your Unix system

    Issues Fixed

    Corrected in EOF 2.2 Patch 1

    Sybase Adaptor Issues


    Incorrect Sybase smallint mapping
    Apple reference # 2247522, 2241377

    ISSUE:
    On HP-UX and Solaris, data of type smallint would be mapped incorrectly when retrieved from a Sybase database. Instead of being mapped to NSNumber/Short , the data would be mapped to NSNumber/Integer and assigned the original value times 2 ^16.

    RESOLUTION:
    The Sybase adaptor now correctly maps smallint data to type NSNumber/Short.


    All parameters required for Sybase stored procedures
    Apple reference # 2203081

    ISSUE:
    If you did not supply all values when executing a Sybase stored procedure, the execution would fail with an exception like:
    Feb 19 11:23:53 WOF_3_5_Sybase_Patch[1027] Caught exception:EOGeneralAdaptorException
    Sybase: Server:unknown Procedure:NEXT_MOVIE_PRIMARY_KEY Line:0 Procedure NEXT_MOVIE_PRIMARY_KEY expects parameter @A_MOVIE_ID, which was not supplied.

    This happens even though A_MOVIE_ID is not required for the stored procedure.

    RESOLUTION:
    The Sybase adaptor no longer requires optional arguments to stored procedures.


    Cannot fetch float-NSDecimalNumbers along with text columns
    Apple reference # 2208497

    ISSUE:
    If you have an attribute with external type float, and internal type NSDecimalNumber, it will not fetch properly if a text column is also in the fetch. The attribute will be blank.

    RESOLUTION:
    The Sybase adaptor now correctly fetches these attributes.


    Special characters crash Sybase adaptor
    Apple reference # 2261262, 2260785

    ISSUE:
    The SybaseEOAdaptor would crash when saving Text or BLOB data containing characters which could not be encoded using the specified database encoding.

    RESOLUTION:
    The adaptor has been fixed to detect the encoding failure and raise an exception, so that a database encoding which is able to handle the issue characters may be specified in the connection dictionary.


    Sybase can't fetch float and text data together
    Apple reference # 2274601, 2259088

    ISSUE:
    The Sybase adaptor would not fetch data of types text and float together.

    RESOLUTION:
    The adaptor has been fixed. There is no longer a conflict between these data types.


    Can't use smallints as arguments to Sybase stored procedures
    Apple reference # 2274608, 2262888

    ISSUE:
    The Sybase adaptor did not allow the use of smallints as arguments to stored procedures.

    RESOLUTION:
    The Sybase adaptor now allows stored procedures with smallint arguments.


    Can't use Sybase 11 stored procedures
    Apple reference # 2274650, 2244533

    ISSUE:
    The Sybase adaptor was unable to interpret stored procedures created in Sybase 11.

    RESOLUTION:
    The adaptor has been fixed to work properly with stored procedures from both Sybase 10 and Sybase 11.


    Incorrect time zone conversions
    Apple reference # 2276907, 2276899

    ISSUE:
    When converting a time value to the server time zone, the Sybase adaptor would substitute the server's time zone without actually adjusting the time value for the zone difference.

    RESOLUTION:
    The Sybase adaptor now performs the conversion of the time value to the corresponding value in the server's time zone.


    Oracle Adaptor Issues


    Oracle adaptor state not preserved
    Apple reference # 2252175

    ISSUE:
    If the Oracle adaptor encountered an error while closing the database channel, the adaptor state would not be set correctly. As a result, the database connection could not be reestablished on that channel once the database came back up.

    RESOLUTION:
    The Oracle adaptor now sets its internal state correctly before raising the error, allowing the connection to be re-established once the database is restored.


    Optimistic locking fails on rows with trailing spaces
    Apple reference # 2231704, 2177721

    ISSUE:
    EOOracleAdaptor would strip trailing spaces from VARCHAR2 data fetched from or committed to an Oracle database, causing optimistic locking to fail if a database row contained trailing spaces inserted by another tool.

    RESOLUTION:
    EOOracleAdaptor no longer strips trailing spaces from VARCHAR2 data.


    Oracle adaptor generates incorrect SQL for left and right outer joins
    Apple reference #2288089, 2165674


    ISSUE:
    The SQL generated by the Oracle adaptor for a left outer join was actually the syntax for a right outer join, and vice versa.

    RESOLUTION:
    The Oracle adaptor now generates the correct SQL for left and right outer joins.


    Informix Adaptor Issues


    Informix adaptor crashes on failed referential integrity check
    Apple reference # 2274351, 2272207

    ISSUE
    If the Informix adaptor was unable to find matching source and destination entities of a referential integrity constraint, it would pass a nil pointer to the database. This would cause a crash in the Informix adaptor.

    RESOLUTION
    The Informix adaptor now tests for this condition and handles it appropriately.


    ODBC Adaptor issues


    ODBC Adaptor cannot execute stored procedures with output parameters
    Apple reference # 2208503

    ISSUE
    The EOF 2.2 (WebObjects 3.5) version of ODBCEOAdaptor.framework introduced a bug which causes an error when using a stored procedure with an output parameter.

    RESOLUTION
    The ODBC adaptor now handles output parameters correctly.


    ODBC adaptor leaks connections with Microsoft Access
    Apple reference # 2209574

    ISSUE:
    The EOF 2.2 (WOF 3.5) and earlier versions of ODBCEOAdaptor.framework did not release ODBC connections when using Microsoft Access (or any JET based data source) in order to work around a bug in the Microsoft odbcjt32.dll library; this bug caused a crash when SQLFreeConnect was called. The SQLFreeConnect bug was discovered in version 3.40.2829 of the DLL. Newer versions of the DLL (beyond 3.50) no longer exhibit the crashing issue.

    RESOLUTION:
    The patched version of this framework now checks the version of the DLL more carefully and allows SQLFreeConnect to be called unless the DLL version is 3.4X. The adaptor no longer leaks the ODBC Connection when running with fixed versions of odbcjt32.dll.



    Tools And Frameworks Issues


    Development tools may attempt to load EOModel file twice for an application nested within an aggregate project
    Apple reference # 2267783, 2176591

    ISSUE:
    When an application was nested in an aggregate project, the development tools would sometimes attempt to load an EOModel file twice due to an error in the path searching code.

    RESOLUTION:
    The search path has been corrected in this version. The development tools now handle subprojects of aggregates correctly.


    Nil value in EOAttribute causes crash while saving EOModel
    Apple reference # 2274226, 2220588

    ISSUE:
    A crash would sometimes occur during the save of an EOModel because a nil serverTimeZone attribute was being inserted into the EOModel.

    RESOLUTION:
    The EOAccess layer has been changed to test for and handle a nil value for this attribute.


    EOWizard not localizable
    Apple reference # 2231705, 2177282

    ISSUE:
    EOWizard was not localizable.

    RESOLUTION:
    Template files have been moved from the framework's Resources directory to the ../Resources/English.lproj directory, making it possible to localize these resources.


    Exception while writing model to disk corrupts EOModel
    Apple reference # 2274225, 2220893

    ISSUE:
    If an exception was raised while an EOModel was being written to disk, the original model would be lost and only the partially-written or corrupted model was left on the disk.

    RESOLUTION:
    A backup copy of the EOModel is made before the write begins. If an error occurs during the write, the backup EOModel will now be restored to the disk, and a copy of the partially written new EOModel will also be saved (as <model_name>.eomodeld#).


    BusinessLogic framework fails to retain some global IDs
    Apple reference # 2290236, 2290233

    ISSUE:
    Several classes in the BusinessLogic framework example failed to retain global IDs for some enterprise objects, resulting in messages being sent to unexpectedly freed objects.

    RESOLUTION:
    The classes now retain global IDs appropriately.


    EOAccess Issues


    EOEntity methods raise exceptions
    Apple reference # 2256685, 2251180

    ISSUE:
    Under some circumstances some methods of EOEntity, including setAttributes, setClassProperties, setRelationship, and removeRelationship, would not clear a private variable, potentially resulting in an application exception.

    RESOLUTION:
    These methods now handle their private instance variables correctly.


    Prefetching can mysteriously fail
    Apple reference # 2264033, 2223730

    ISSUE:
    Prefetching would sometimes fail for no apparent reason, due to inappropriate filtering of relationships inside the EOAccess layer.

    RESOLUTION:
    The incorrect filtering on prefetches has been removed from EOEntity.


    Unnecessary firing of to-many faults
    Apple reference # 2248080, 2227660

    ISSUE:
    If the PropagatePrimaryKey flag on an EOEntity was set to YES, saving changes to the EOEditingContext would fire array faults for all of that entity's to-many relationships. This was not necessary and could cause performance issues.

    RESOLUTION:
    The EOAccess layer has been changed so that it no longer fires unnecessary faults.


    Multiple propagation primary keys create race condition
    Apple reference # 2267964, 2260541

    ISSUE:
    Saving changes to two databases when both had a propagation primary key would not work in previous versions of EOF; a race condition would be created, and only one database would be able to generate primary keys.

    RESOLUTION:
    EODatabaseContext has been changed to correct this behavior. Both databases can now generate their primary keys correctly.


    EODatabase never releases snapshots
    Apple reference # 2231693, 2169671

    ISSUE:
    Snapshots associated with enterprise objects were never released.

    RESOLUTION:
    EOF now tracks an object's snapshots and releases them when all objects that refer to them are released.

    Deallocating an EODatabase containing snapshots causes crash
    Apple reference # 2272549, 2265751

    ISSUE:
    EODatabase released its snapshots too early during deallocation. As a result, deallocating an EODatabase would raise a fatal exception if any snapshots were present.

    RESOLUTION:
    The order in which instance variables are released by EODatabase has been corrected.


    Logic error in EOAccess layer sometimes raises exception while generating primary keys
    Apple reference # 2278561, 2182084

    ISSUE:
    Under certain circumstances, the EOAccess code that generated primary keys would send messages to inappropriate objects. This would cause a "NoSuchMethodError" exception to be thrown in Java, or one of several exceptions to be raised in Objective C.

    RESOLUTION:
    EOAccess now checks the class of the receiver before sending the message that was causing the issue.


    Incorrect NSNumber formatting for zero values
    Apple reference # 2264031, 2181645

    ISSUE:
    Zero values for number fields displayed by EOF would not always reflect appropriate formats for zero; some integer zero values would be represented as "0.00".

    RESOLUTION:
    EOEntity has been modified to check the default zero formatting for all number types.


    Deleting objects with "toManyToOne" relationships sometimes fails.
    Apple reference #2287021, 2278795


    ISSUE:
    In some circumstances, EOF would not correctly handle deletion of an object with a toManyToOne relationship, leaving rows in intermediate tables which should have been deleted.

    RESOLUTION:
    The EOAccess layer now does a more thorough analysis of an object's relationships when it is deleted, and data in intermediate tables is correctly removed.


    Editing the owning relationship in a nested editing context more than once corrupts the database snapshots.
    Apple reference #2287025, 2280979


    ISSUE:
    Due to an error in the processing of array faults by the databse context, editing the owning relationship in a nested editing context more than once would corrupt the database snapshot for the owning object, resulting in database corruption.

    RESOLUTION:
    The error in EODatabaseContext has been corrected.


    Incorrect time zone conversion in EOAccess layer.
    Apple reference #2287379


    ISSUE:
    When converting a time value to the server time zone, the EOAccess layer would substitute the server's time zone without actually adjusting the time value for the zone difference.

    RESOLUTION:
    EOAttribute now performs the conversion of the time value to the corresponding value in the server's time zone.


    EOControl Issues


    EOModeler can't create a model with EODeleteRuleNoAction
    Apple reference # 2248443, 2202107

    ISSUE:
    In EOModeler's AdvancedRelationship inspector, if the Delete Rule was set to "No Action", the following warning would be posted next time the model was opened:
    Invalid delete rule string:'EODeleteRunNoAction' on entity with name: '<entity_name>'

    RESOLUTION:
    It is now possible to create a model in EOModeler with EODeleteRuleNoAction.


    Newly inserted objects not deleted correctly
    Apple reference # 2253191, 2176466

    ISSUE:
    An object created and inserted into an editing context or relationship, then deleted before being saved to the database, would not be completely removed. This would raise an exception when the editing context was saved.

    RESOLUTION:
    Deletion of a newly-inserted object now completely removes the object from the editing context.


    EOQualifier qualifierWithFormat methods conflict
    Apple reference # 2275802, 2203613

    ISSUE:
    If a qualifier was created using +[EOQualifier qualifierWithQualifierFormat: arguments:] and, subsequently, another qualifier was created using +[EOQualifier qualifierWithQualifierFormat:] , a parse error would occur, even if the second qualifier was valid.

    RESOLUTION:
    The interference between these two methods has been removed and they now operate correctly.


    Java garbage collecting fails with EOEditingContext
    Apple reference # 2270489, 2264063, 2264251

    ISSUE:
    The editing context did not retain its registered objects. This would cause issues with Java garbage collection.

    RESOLUTION:
    EOEditingContext now allows users to specify whether editing contexts retain their objects or not with the new class methods setInstancesRetainRegisteredObjects:flag: , getInstancesRetainRegisteredObjects , and reset . For API details, please see EOEditingContext.h. By default, in applications which contain Java, the editing context will retain all registered objects.


    EOControl raises exception while building qualifier
    Apple reference # 2271206, 2213188

    ISSUE:
    The qualifier parsing code in the EOControl layer incorrectly sends copyWithZone: to custom enterprise objects under certain conditions, causing a "selector not implemented" exception to be raised in Objective C or a "CloneNotSupportedException" to be thrown in Java.

    RESOLUTION:
    EOControl no longer calls copyWithZone: on custom enterprise objects when building a qualifier.


    Uppercase letters in search pattern don't case-insensitive match to lowercase string
    Apple reference # 2275805, 2248977

    ISSUE:
    Case-insensitive matching in EOQualifier did not correctly match uppercase letters in the search pattern with lowercase letters in the receiving string.

    RESOLUTION:
    EOQualifier has been fixed. [EOQualifier isCaseInsensitiveLike:] now works correctly.


    Can't subclass entities with fetch specifications
    Apple reference # 2279849, 2278492

    ISSUE:
    Due to an error in EOKeyValue encoding, EOModeler was unable to create a subclass when a fetch specification was associated with the entity being subclassed.

    RESOLUTION:
    The encoding is now correct and entities with associated fetch specifications can be subclassed from within EOModeler.


    EOFault's retain/release behavior confuses the Java bridge
    Apple reference # 2297785, 2239504

    ISSUE:
    EOFault's special handling of retain and release could sometimes cause conflicts with the Java bridge.

    RESOLUTION:
    EOFault's retain and release behaviours have been modified to interoperate correctly with Java via the bridge.



    EOInterface Issues



    No EOActionCellAssociation for most controls
    Apple reference # 2269874, 2243956

    ISSUE:
    EOActionCellAssociation would not work with controls other than NSTextField.

    RESOLUTION:
    This class has been changed to work with NSButtons and other controls, as well as NSTextFields.

    selectObject: method return values don't match documentation
    Apple reference # 2275804, 2205357

    ISSUE:
    The [EODisplayGroup selectObject:] method would only return 'NO' if it could not end editing or if the delegate refused the change. According to the class documentation, it should also return 'NO' if the EODisplayGroup's displayedObjects array does not contain a match with the method's object argument.

    RESOLUTION:
    As stated in the documentation, this method now also returns 'NO' when it cannot find a match for the argument object.


    Memory leak in EODisplayGroup
    Apple reference # 2256402, 2217263

    ISSUE:
    A private variable was not being released in EODisplayGroup, causing a memory leak.

    RESOLUTION:
    This variable is now released correctly.


    EODisplayGroup instances leak
    Apple reference #2286314


    ISSUE :
    Each EODisplayGroup instance leaked two EOObserverProxy objects.

    RESOLUTION :
    This leak in EODisplayGroup has been fixed.

    Disclaimer

    THE SOFTWARE PATCH PROVIDED FROM APPLE IS PROVIDED "AS IS" AND WITHOUT WARRANTY, EXPRESS OR IMPLIED. APPLE SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL APPLE BE LIABLE FOR ANY DAMAGES, INCLUDING BUT NOT LIMITED TO ANY LOST PROFITS, LOST SAVINGS OR ANY INCIDENTAL OR CONSEQUENTIAL DAMAGES, WHETHER RESULTING FROM IMPAIRED OR LOST DATA, SOFTWARE OR COMPUTER FAILURE OR ANY OTHER CAUSE, EVEN IF APPLE IS ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY OTHER CLAIM BY CUSTOMER OR FOR ANY THIRD PARTY CLAIM.


Document Information
Product Area: Apple Software; WebObjects
Category: Enterprise Objects Framework
Sub Category: Patches

Copyright © 2000 Apple Computer, Inc. All rights reserved.